当ABAP遇见普罗米修斯

举报
Jerry Wang 发表于 2022/01/30 11:42:07 2022/01/30
【摘要】 Jerry每次在工作场合中同Prometheus(普罗米修斯)打交道时,都会“出戏”,因为这个单词给我的第一印象,并不是用go语言实现的微服务监控利器,而是名导雷德利·斯科特(Ridley Scott)拍摄的科幻大片。回到现实中来,Prometheus是由SoundCloud开发的监控系统的开源版本,logo是一个燃烧的红色火炬,这应该是有情怀的工程师们向泰坦巨神的后代,偷偷盗走天火,传给人...

Jerry每次在工作场合中同Prometheus(普罗米修斯)打交道时,都会“出戏”,因为这个单词给我的第一印象,并不是用go语言实现的微服务监控利器,而是名导雷德利·斯科特(Ridley Scott)拍摄的科幻大片。



回到现实中来,Prometheus是由SoundCloud开发的监控系统的开源版本,logo是一个燃烧的红色火炬,这应该是有情怀的工程师们向泰坦巨神的后代,偷偷盗走天火,传给人类的普罗米修斯表示的敬意。

clipboard3,3

2016年,由Google发起的Linux基金会(Cloud Native Computing Foundation,CNCF)将Prometheus纳入其第二大开源项目,在开源社区十分活跃,SAP Kyma也使用了Prometheus作为其监控组件。

clipboard4,4

Prometheus采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的数据查询和聚合接口。

那么Prometheus是云原生应用和微服务架构的专属工具么?当然不是。下面,Jerry就用SAP CRM On-Premises为例,介绍ABAP技术栈如何借助Prometheus来实现自定义的日志监控功能。

SAP CRM 有个Fiori应用叫做My Opportunity,是SAP成都研究院Jerry所在的CRM Fiori团队开发维护的。假设我们有这样一个需求,需要监控在指定时间段内,该应用收到的读请求。

clipboard5,5

我们在Opportunity OData服务的实现里找到了一个BAdI增强,CRM_OPPORTUNITY_ODATA_BD:

clipboard6,6

所有读请求都会经过这个BAdI,所以在里面实现我们自定义的日志逻辑很合适。

clipboard7,7

创建一个自定义数据库表,用于记录读请求的明细,包括请求者的用户名,请求日期和请求时间。

clipboard8,8

BAdI实现的逻辑很简单,依次把字段记录下来,插入数据库表:

clipboard9,9

接着是在本地安装Prometheus服务器,我安装的是Windows版本,需要先编辑prometheus.yml配置文件,然后启动。
clipboard10,10
下图是配置文件最核心的部分,定义了Prometheus连接SAP CRM抓取监控数据的规则。第24行和25行维护了SAP CRM系统的用户名和密码,第26行/sap/zcm是CRM上为Prometheus暴露出来的数据采集接口的路径,第28行指定Prometheus服务器每隔2秒钟采集一次数据。第33行定义了CRM ABAP系统的主机名和端口号。有了这些配置信息,Prometheus可以同ABAP Netweaver服务器建立连接并进行周期性的数据抓取。

clipboard11,11

最后一步,在/sap/zcm这个路径上把我们自定义数据库表里的数据暴露出来:

clipboard12,12

一个SELECT COUNT(*)搞定:

clipboard13,13

至此万事俱备了。回到Fiori 应用界面,随便点击几个Opportunity,触发读请求,回到自定义的数据库表,发现已经有一些日志记录在内了。

clipboard14,14

启动Prometheus服务器,马上就以2秒的时间间隔,往ABAP服务器发起数据查询请求:

clipboard15,15
localhost:9090打开Prometheus的控制台,能看到从SAP CRM系统实时采集到的读请求个数:

clipboard16,16

切换到Graph面板,能看到指定时间间隔内的读请求变化趋势,比如下图的横轴是时间点,纵轴是读请求个数,图上的折线表达了过去五分钟之内,读请求数量呈线性增长的趋势。

clipboard17,17

Prometheus提供的dashboard,提供了各种维度的数据查询和聚合功能。如果对其基本的数据展现界面不满意,可以选择另一款效果更好的开源数据可视化工具Grafana. 下图是Grafana的dashboard:

clipboard18,18

希望Jerry这个例子可以给大家一些启发:ABAP照样可以借助现代开源工具来实现一些传统ABAP工具难以实现的功能。在Jerry看来,Prometheus完全可以同ABAP的单元测试框架一起协同工作,提高基于ABAP技术栈的应用开发的持续集成和持续交付能力。

感谢阅读。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。