使用 Prometheus 监控 SAP ABAP 应用程序

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 使用 Prometheus 监控 SAP ABAP 应用程序
+关注继续查看

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

image

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

image

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


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


在接触 SAP CRM 应用之前,让我们先来热热身,熟悉一下 Prometheus 的使用方法。

使用 Prometheus 监控Linux系统各项指标

首先在Linux系统上安装一个探测器node explorer, 下载地址https://prometheus.io/docs/guides/node-exporter/

这个探测器会定期将linux系统的各项硬件指标和内核参数通过9100端口和url metrics暴露给外部。

image

启动node explorer,显示在9100端口上监听:

image

浏览器里输入hostname:9100/metrics就可以访问到node explorer收集到的各项参数:

image

一些例子:

CPU在不同工作模式下的使用时间:node_cpu_seconds_total

image

文件系统可用字节数:node_filesystem_avail_bytes

image

网卡收到的字节数:node_network_receive_bytes_total

image

下面用Prometheus来收集和展示通过node explorer暴露出来的数据。

在Prometheus安装目录的prometheus.yml文件里定义一个job,指向Linux系统上运行的node explorer:

image

本地启动Prometheus,打开下面的url:

http://localhost:9090/

输入node_cpu_seconds_total{mode=“system”},查询该服务器上所有CPU工作在系统态消耗的时间:

image

还可以指定时间窗口,只查询过去1分钟之内的CPU运行数据:

rate(node_cpu_seconds_total{mode=“system”}[1m])

image

如何使用Prometheus 针对自己的服务器采集自定义的参数。

用一个简单的例子来说明。

我用express和http搭了一个最简单的服务器,监听在8081端口上。

image

在metrics endpoint上,我会打印出这个服务器从启动至今,服务了多少次请求。这里我只是简单使用一个维护在memory中的计数器来模拟服务请求个数。每次metrics被请求,计数器加一。

localhost:8081/metrics测试一下:

image

打开Prometheus服务器的配置文件prometheus.yml:

image

添加一条作业,static_configs的target配置成我自己的服务器 localhost:8081.

localhost:9090访问Prometheus的web UI:

image

切换到图形界面,即可看到随时间推移,我的服务器响应了服务请求的趋势图。横轴为时间点,纵轴为Prometheus服务器从我的测试服务器每隔默认的15秒收集到的服务响应请求。

image

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

image

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

image

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

image

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

image

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

image

接着是在本地安装Prometheus服务器,我安装的是Windows版本,需要先编辑prometheus.yml配置文件,然后启动。

image

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


image

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

image

一个SELECT COUNT(*)搞定:

image

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

image

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

image

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

image

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

image

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

image

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

总结

本文首先给出了开源监控工具 Prometheus 监控Linux系统各项指标和采集服务器自定义参数的需求实现出发,介绍了基于 Prometheus 的 SAP CRM ABAP 应用的监控数据采集方法。

相关文章
|
8天前
|
Prometheus 监控 Cloud Native
使用 Prometheus 监控 Tesla Solar 和 Powerwall
使用 Prometheus 监控 Tesla Solar 和 Powerwall
22 0
|
24天前
|
数据采集 Prometheus 监控
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
监控利器之Prometheus基于Blackbox_exporter监控服务的端口
156 0
|
2月前
|
Prometheus 监控 Cloud Native
Go语言微服务框架 - 13.监控组件Prometheus的引入
今天我们专注于自定义服务中的Prometheus的监控,在框架中引入Prometheus相关的组件。关于更细致的使用方式,我会给出相关的链接,有兴趣进一步学习Prometheus的同学可以边参考资料边实践。
144 0
|
2月前
|
存储 Prometheus 监控
《Prometheus 监控实践:从零到英雄》
《Prometheus 监控实践:从零到英雄》
187 0
|
2月前
|
Prometheus 监控 Cloud Native
Prometheus 监控指南:如何可靠地记录数字时间序列数据
Prometheus 监控指南:如何可靠地记录数字时间序列数据
165 0
|
2月前
|
存储 缓存 Prometheus
统一观测丨使用 Prometheus 监控 Memcached 最佳实践
统一观测丨使用 Prometheus 监控 Memcached 最佳实践
53661 8
|
2月前
|
Prometheus Kubernetes 监控
prometheus operator监控k8s集群之外的haproxy组件
prometheus operator监控k8s集群之外的haproxy组件
|
3月前
|
Prometheus 监控 Cloud Native
与Prometheus类似的监控和度量产品
以下是一些与Prometheus类似的监控和度量产品: 1. Grafana:Grafana是一种流行的开源数据可视化工具,可以与多个数据源集成,包括Prometheus。它可以通过可视化仪表板展示和分析Prometheus收集的数据。 2. InfluxDB:InfluxDB是一种开源时间序列数据库,专门用于处理和存储大量时间序列数据,如机器指标、事件日志等。和Prometheus类似,InfluxDB也具备数据采集和查询功能。 3. Nagios:Nagios是一种广泛使用的开源网络监控系统,可以监测网络设备、服务器和应用程序的运行状况。与Prometheus不同的是,Nagios主
223 0
|
3月前
|
SQL Prometheus 监控
统一观测丨使用 Prometheus 监控 SQL Server 最佳实践
统一观测丨使用 Prometheus 监控 SQL Server 最佳实践
|
3月前
|
弹性计算 监控 测试技术
基于Prometheus+Grafana的PolarDB-X监控体系
《PolarDB-X 动手实践》系列第十期,体验如何监控PolarDB-X集群。
368 1
相关产品
云迁移中心
推荐文章
更多