天天看點

如何使用Prometheus采集SAP ABAP Netweaver的應用日志資料

Prometheus是一套開源的系統監控報警架構。它啟發于Google的borgmon 監控系統,由工作在 SoundCloud 的 google 前員工在 2012 年建立,作為社群開源項目進行開發,并于2015年正式釋出。2016年,Prometheus 正式加入 Cloud Native Computing Foundation,成為受歡迎度僅次于Kubernetes 的項目。

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-I12qhr9O-1574929248949)(

https://user-images.githubusercontent.com/5669954/69523875-e423f580-0f9f-11ea-80bc-d8eb4fd757f6.png)]

我們可以利用Prometheus強大的監控功能來采集SAP ABAP Netweaver伺服器上運作應用的各項日志。以SAP CRM Fiori應用My Opportunity為例,假設我開發了一個自定義日志功能,把所有使用者對Opportunity的讀操作明細, 包括請求者,請求日期和請求時間記錄在一個資料庫表裡。

然後我希望借助Prometheus,定期地查詢Netweaver伺服器,監控它服務了讀請求的數量。下面是具體步驟。

(1) 在CRM My Opportunity背景的OData服務實作的BAdI definition CRM_OPPORTUNITY_ODATA_BD裡建立一個增強。

因為所有的讀請求,最後都要經過方法SORT_AND_FILTER_OPPT_TABLE的處理,是以我們把日記記錄實作在這個方法裡:

(2) 事務碼SICF建立一個新的服務節點:

用SELECT COUNT(*)把資料庫日志表的條目數讀取出來,通過HTTP的方式傳回給消費者。

(3) 在Prometheus伺服器的配置檔案prometheus.yml裡,添加一條定期抓取步驟二建立的Netweaver HTTP服務:

第26行metrics_path即為SICF事務碼裡建立的服務路徑,28行意思是每2秒抓取一次。33行是Netweaver伺服器的主機名。

啟動Prometheus伺服器:

到Fiori UI上使用My Opportunity應用,觸發讀請求:

能看到日志表裡填充了資料:

localhost:9090通路Prometheus的UI控制台,能看到采集的讀請求個數:

切換到Graph面闆,能看到指定時間間隔内的讀請求變化趨勢,比如下圖意思是過去五分鐘之内,讀請求數量呈線性增長趨勢

本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。