共计 2681 个字符,预计需要花费 7 分钟才能阅读完成。
Prometheus 是由 SoundCloud 开发的监控零碎的开源版本,logo 是一个焚烧的红色火炬,这应该是有情怀的工程师们向泰坦巨神的后辈,偷偷盗走天火,传给人类的普罗米修斯示意的敬意。
2016 年,由 Google 发动的 Linux 基金会 (Cloud Native Computing Foundation,CNCF) 将 Prometheus 纳入其第二大开源我的项目,在开源社区非常沉闷,SAP Kyma 也应用了 Prometheus 作为其监控组件。
Prometheus 采纳 Pull 形式获取监控信息,并提供了多维度的数据模型和灵便的数据查问和聚合接口。
那么 Prometheus 是云原生利用和微服务架构的专属工具么?当然不是。上面,笔者就用 SAP CRM On-Premises 为例,介绍 ABAP 技术栈如何借助 Prometheus 来实现自定义的日志监控性能。
在接触 SAP CRM 利用之前,让咱们先来热热身,相熟一下 Prometheus 的应用办法。
应用 Prometheus 监控 Linux 零碎各项指标
首先在 Linux 零碎上装置一个探测器 node explorer, 下载地址 https://prometheus.io/docs/gu…
这个探测器会定期将 linux 零碎的各项硬件指标和内核参数通过 9100 端口和 url metrics 裸露给内部。
启动 node explorer,显示在 9100 端口上监听:
浏览器里输出 hostname:9100/metrics 就能够拜访到 node explorer 收集到的各项参数:
一些例子:
CPU 在不同工作模式下的应用工夫:node_cpu_seconds_total
文件系统可用字节数:node_filesystem_avail_bytes
网卡收到的字节数:node_network_receive_bytes_total
上面用 Prometheus 来收集和展现通过 node explorer 裸露进去的数据。
在 Prometheus 装置目录的 prometheus.yml 文件里定义一个 job,指向 Linux 零碎上运行的 node explorer:
本地启动 Prometheus,关上上面的 url:
http://localhost:9090/
输出 node_cpu_seconds_total{mode=”system”},查问该服务器上所有 CPU 工作在零碎态耗费的工夫:
还能够指定工夫窗口,只查问过来 1 分钟之内的 CPU 运行数据:
rate(node_cpu_seconds_total{mode=”system”}[1m])
如何应用 Prometheus 针对本人的服务器采集自定义的参数。
用一个简略的例子来阐明。
我用 express 和 http 搭了一个最简略的服务器,监听在 8081 端口上。
在 metrics endpoint 上,我会打印出这个服务器从启动至今,服务了多少次申请。这里我只是简略应用一个保护在 memory 中的计数器来模仿服务申请个数。每次 metrics 被申请,计数器加一。
localhost:8081/metrics 测试一下:
关上 Prometheus 服务器的配置文件 prometheus.yml:
增加一条作业,static_configs 的 target 配置成我本人的服务器 localhost:8081.
localhost:9090 拜访 Prometheus 的 web UI:
切换到图形界面,即可看到随时间推移,我的服务器响应了服务申请的趋势图。横轴为工夫点,纵轴为 Prometheus 服务器从我的测试服务器每隔默认的 15 秒收集到的服务响应申请。
SAP CRM 有个 Fiori 利用叫做 My Opportunity,是 SAP 成都研究院笔者所在的 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:
心愿笔者这个例子能够给大家一些启发:ABAP 照样能够借助古代开源工具来实现一些传统 ABAP 工具难以实现的性能。在 Jerry 看来,Prometheus 齐全能够同 ABAP 的单元测试框架一起协同工作,进步基于 ABAP 技术栈的利用开发的继续集成和继续交付能力。
总结
本文首先给出了开源监控工具 Prometheus 的基本概念,接着从应用 Prometheus 监控 Linux 零碎各项指标和采集服务器自定义参数的需要实现登程,介绍了基于 Prometheus 的 SAP CRM ABAP 利用的监控数据采集办法。