当ABAP遇见普罗米修斯
Jerry每次在工作場合中同Prometheus(普羅米修斯)打交道時,都會“出戲”,因為這個單詞給我的第一印象,并不是用go語言實現的微服務監控利器,而是名導雷德利·斯科特(Ridley Scott)拍攝的科幻大片。
回到現實中來,Prometheus是由SoundCloud開發的監控系統的開源版本,logo是一個燃燒的紅色火炬,這應該是有情懷的工程師們向泰坦巨神的后代,偷偷盜走天火,傳給人類的普羅米修斯表示的敬意。
2016年,由Google發起的Linux基金會(Cloud Native Computing Foundation,CNCF)將Prometheus納入其第二大開源項目,在開源社區十分活躍,SAP Kyma也使用了Prometheus作為其監控組件。
Prometheus采用Pull方式獲取監控信息,并提供了多維度的數據模型和靈活的數據查詢和聚合接口。
那么Prometheus是云原生應用和微服務架構的專屬工具么?當然不是。下面,Jerry就用SAP CRM On-Premises為例,介紹ABAP技術棧如何借助Prometheus來實現自定義的日志監控功能。
SAP CRM 有個Fiori應用叫做My Opportunity,是SAP成都研究院Jerry所在的CRM Fiori團隊開發維護的。假設我們有這樣一個需求,需要監控在指定時間段內,該應用收到的讀請求。
我們在Opportunity OData服務的實現里找到了一個BAdI增強,CRM_OPPORTUNITY_ODATA_BD:
所有讀請求都會經過這個BAdI,所以在里面實現我們自定義的日志邏輯很合適。
創建一個自定義數據庫表,用于記錄讀請求的明細,包括請求者的用戶名,請求日期和請求時間。
BAdI實現的邏輯很簡單,依次把字段記錄下來,插入數據庫表:
接著是在本地安裝Prometheus服務器,我安裝的是Windows版本,需要先編輯prometheus.yml配置文件,然后啟動。
下圖是配置文件最核心的部分,定義了Prometheus連接SAP CRM抓取監控數據的規則。第24行和25行維護了SAP CRM系統的用戶名和密碼,第26行/sap/zcm是CRM上為Prometheus暴露出來的數據采集接口的路徑,第28行指定Prometheus服務器每隔2秒鐘采集一次數據。第33行定義了CRM ABAP系統的主機名和端口號。有了這些配置信息,Prometheus可以同ABAP Netweaver服務器建立連接并進行周期性的數據抓取。
最后一步,在/sap/zcm這個路徑上把我們自定義數據庫表里的數據暴露出來:
一個SELECT COUNT(*)搞定:
至此萬事俱備了。回到Fiori 應用界面,隨便點擊幾個Opportunity,觸發讀請求,回到自定義的數據庫表,發現已經有一些日志記錄在內了。
啟動Prometheus服務器,馬上就以2秒的時間間隔,往ABAP服務器發起數據查詢請求:
localhost:9090打開Prometheus的控制臺,能看到從SAP CRM系統實時采集到的讀請求個數:
切換到Graph面板,能看到指定時間間隔內的讀請求變化趨勢,比如下圖的橫軸是時間點,縱軸是讀請求個數,圖上的折線表達了過去五分鐘之內,讀請求數量呈線性增長的趨勢。
Prometheus提供的dashboard,提供了各種維度的數據查詢和聚合功能。如果對其基本的數據展現界面不滿意,可以選擇另一款效果更好的開源數據可視化工具Grafana. 下圖是Grafana的dashboard:
希望Jerry這個例子可以給大家一些啟發:ABAP照樣可以借助現代開源工具來實現一些傳統ABAP工具難以實現的功能。在Jerry看來,Prometheus完全可以同ABAP的單元測試框架一起協同工作,提高基于ABAP技術棧的應用開發的持續集成和持續交付能力。
感謝閱讀。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的当ABAP遇见普罗米修斯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为模拟器ensp怎么安装_模拟器下载手
- 下一篇: How is call from CXF