如何使用Prometheus採集SAP ABAP Netweaver的應用日誌數據
- 2019 年 11 月 29 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://jerry.blog.csdn.net/article/details/103295726
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面板,能看到指定時間間隔內的讀請求變化趨勢,比如下圖意思是過去五分鐘之內,讀請求數量呈線性增長趨勢

