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