当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的原创文章,请关注公众号"汪子熙":

原文地址:https://www.cnblogs.com/sap-jerry/p/11968074.html

时间: 2024-08-09 02:05:06

当ABAP遇见普罗米修斯的相关文章

(2012年旧文)纪念史蒂夫乔布斯---IT界的普罗米修斯

谈苹果与乔布斯系列一  IT界的普罗米修斯 纪念PC界的先驱 史蒂夫乔布斯 2012-4-5 清明节,纪念IT时代的开创人—伟大的史蒂夫 乔布斯. 没有乔布斯,计算机还是属于一群科技人士的工具,没有漂亮和易用的界面,PC就不会走进千家万户,就没有今天的PC产业: 没有PC的普及和发展,PC之间巨大的互联需求,成就了思科: 没有PC的普及和发展,就不会有互联网的高潮,就没有yahoo以及早期的门户网站,以及后来的Google: 没有Apple II对IBM的PC的压制,IBM就不会购买微软的DOS

日博365:《普罗米修斯2》又改名:《异形2》

日博365: <异形>宇宙延伸出的科幻片<普罗米修斯>续集定名为<异形:失乐园>(Alien: Paradise Lost)还没过两个月 ,导演雷德利·斯科特就在新采访中抛弃了这个名字,改口称<普罗米修斯2>为<异形:契约>(Alien: Covenant). 鉴于<普罗米修斯2>明年2月份才会前往澳大利亚开拍,影片2017年12月31日公映的时候也未必会采用现在新更的<异形 :契约>之名. 目前<异形:契约>

1021 docker 普罗米修斯

jmeter plugin监控的信息很少,只有cpu.内存.网络IO,但这些是不够的.例如对于分析mysql数据库的慢查询.最大连接数等更加细密度的信息. 服务端稳定测试的三个前提: 1.应用级别的自动化测试.针对整个系统进行评测,而不是单独某一个模块,自动化用例要覆盖系统业务场景的80%以上.自动化遍历深度不够,不能覆盖80%以上的业务场景.而且自动化遍历是在一个设备上执行的,其并发数量只有1,而稳定性测试要在一定的压力之下进行的. 2.高可用.灾难恢复的部署架构. K8S做部署. 3.线上级

在Grafana使用普罗米修斯

Grafana包含对Prometheus的内置支持. 添加数据源Grafana 单击顶部标题中的Grafana图标打开侧边菜单. 在Dashboards链接下的侧边菜单中,您应找到一个名为的链接Data Sources. 单击+ Add data source顶部标题中的按钮. Prometheus从“ 类型”下拉列表中选择. 注意:如果您没有Data Sources在侧边菜单中看到该链接,则表示您当前的用户没有Admin当前组织的角色. 数据源选项 名称 描述 名称 数据源名称.这是您在面板和

完美的分布式监控系统——普罗米修斯

DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)中,可以简单部署Prometheus,用来监控整个云基础架构设施.比如DigitalOcean或Docker都是普罗米修斯作为基础监控. 希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命

普罗米修斯+grafana监控k8s

其实现原理有点类似ELK.node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过网页以图形的形式展现给用户. grafana+普罗米修斯全部集成在k8s内部的方式,用pod和svc的方式去暴露服务和端口以及登陆web界面. 普罗米修斯登陆界面:http://192.168.43.35:30003 grafana登陆界面:http://192.168.43.35:31000 普罗

监控神器-普罗米修斯Prometheus的安装

搬砖党的福音:普罗米修斯-监控神器 功能: 在业务层用作埋点系统 Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端).我们可以通过客户端方面的对核心业务进行埋点.如下单流程.添加购物车流程. 在应用层用作应用监控系统 一些主流应用可以通过官方或第三方的导出器,来对这些应用做核心指标的收集.如redis,mysql. 在系统层用作系统监控 除了常用软件, prometheus也有相关系统层和网络层exporter,用以监控服务器或网

Prometheus (普罗米修斯)

DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)中,可以简单部署Prometheus,用来监控整个云基础架构设施.比如DigitalOcean或Docker都是普罗米修斯作为基础监控. 希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命

普罗米修斯Prometheus 安装配置

一.基础环境 系统 IP 监控主机 CentOS 7 192.168.56.200 被监控主机 CentOS 7 192.168.56.201 二.Prometheus服务端安装 以下操作皆在监控主机(192.168.56.200)上执行. 2.0 关闭机器防火墙 # systemctl stop firewalld # systemctl disable firewalld 2.1 安装 go 环境 由于Prometheus是由go语言开发的,所以在安装Prometheus之前需要先在监控主机