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/guides/node-exporter/
这个探测器会定期将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])