背 景
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配Prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
我们知道 zabbix 在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,对APM进行扩展,支持采集Prometheus exporter数据,实现APM容器化监控。
使用说明
1. 功能说明
对接prometheus性能数据,实现snc-proxy/snc-agent采集prometheus【exporter】数据。
2. 使用范围
采集prometheus性能数据。
3. 功能逻辑
3.1 snc-proxy/snc-agen添加支持prometheus采集协议。
主要实现逻辑:
1)定义监控格式为prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...],label为可变参数;
2)添加PrometheusMetricProvider指标消费类,继承AbstractMetricsConsumer,类型为prometheus;
3)根据监控项参数key值,对prometheus metric数据进行筛选;
4)根据监控项参数label值,对完成步骤2的数据进行进一步筛选,label值支持正则表达式和通配符;
5)处理筛选结果。普通监控项赛选结果为1条,返回对象格式json文本,赛选结果为多条,返回结果数组格式json文本;自发现监控项返回自发现监控项结果。
3.2 AMP自定义prometheus node_exporter监控模板。
3.3 通过snc-agen监控工作原理,实现数据采集。
4. 格式规范/使⽤⽅式
以prometheus.开头。
prometheus metric数据格式:
4.1 普通监控项
prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...]
第⼀个参数:prometheus metric数据url访问连接;
第二个参数:prometheus metric返回数据格式中的"{xxx}"前的key值信息;
后续参数:数量不固定,为Prometheus metric返回数据格式中的"{xxx}"中的信息。
样例:
prometheus.system.cup.count[http://XXX.XXX.XX.7:8000/actuator/prometheus,system_cpu_count]
#获取系统CPU数量信息
prometheus.jvm.memory.used.heap[http://XXX.XXX.XX.7:8000/actuator/prometheus,jvm_memory_used_bytes,area="heap"]
#获取jvm heap区内存使用情况
prometheus.logback.events.total[http://XXX.XXX.XX.7:8000/actuator/prometheus,logback_events_total,level="*"]
#获取日志事件数信息
4.2 特殊监控项
prometheus.cache.metric[{$PURL},300]
prometheus.cache.metric为固定值;
第一个参数:prometheus metric数据url访问连接;
第二个参数:缓存时间,单位秒。
普通监控项每次采集都要通过http请求访问Prometheus exporter获取数据,配置这个键值后会把Prometheus metric的返回信息缓存至snc-agent或者snc-proxy,有效期内其他键值采集数据直接从缓存中获取,否则每次都要http访问获取。
4.3 自发现配置
prometheus.discovery.metric[{$PURL},key,label1="xx",label2="xx",...]
prometheus.discovery.metric为固定键值;
第⼀个参数:prometheus metric数据url访问连接;
第二个参数:prometheus metric返回数据格式中的"{xxx}"前的key值信息;
后续参数:数量不固定,为Prometheus metric返回数据格式中的"{xxx}"中的信息。
自发现只适用于发现为Prometheus metric结果信息中格式为 xxx{label1="xx",label2="xx",...}的信息。
配置详情
1. 设备名 agent
采集方式:Zabbix agent
键值:agent.activehost[{HOST.HOST}]
数据类型:字符
2. 缓存 Prometheus metric 信息
采集方式:Zabbix agent(active)
键值:prometheus.cache.metric[{$PURL},300]
数据类型:字符
prometheus.cache.metric为固定值;
{$PURL}为Prometheus metric的http请求地址;
300为缓存有效时间。
配置这个键值后会把Prometheus metric的返回信息缓存至snc-agent或者snc-proxy,有效期内其他键值采集数据直接从缓存中获取,否则每次都要http访问获取。
3. 普通监控项配置
采集方式:Zabbix agent(active)
键值:prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...]
{$PURL}为Prometheus metric的http请求地址;
key为Prometheus metric返回数据格式中的"{xxx}"前的信息;
label为Prometheus metric返回数据格式中的"{xxx}"中的信息,label不是必须输入,长度可变。
首先会根据key对Prometheus metric信息进行筛选,如果键值包含label,再根据label进行进一步筛选,label的值支持通配符和正则表达式。
筛选结果为单条数据,返回对象格式json文本。
例:
{
"metric": {
"exception": "None",
"method": "GET",
"uri": "/**",
"outcome": "REDIRECTION",
"status": "304"
},
"value": "0.0"
}
筛选结果为多条数据,返回数组格式的json文本。
例:
[
{
"metric": {
"exception": "None",
"method": "GET",
"uri": "/**",
"outcome": "REDIRECTION",
"status": "304"
},
"value": "0.0"
},
{
"metric": {
"exception": "None",
"method": "OPTIONS",
"uri": "root",
"outcome": "SUCCESS",
"status": "200"
},
"value": "0.0"
}
]
配置监控项,如果想要获取返回结果中的某个信息,可以使用预处理JSON路径获取结果中的某个信息。
4. 依赖监控项配置
普通监控项返回结果为对象格式JSON文本或者数组格式JSON文本,如果想要基于普通监控项的监控信息进行解析,可以添加依赖监控项,主要项为想要解析的普通监控项。
5. 自发现配置
5.1 自发现规则配置
采集方式:Zabbix agent(active)
键值:prometheus.discovery.metric[{$PURL},key,label1="xx",label2="xx",...],label为可选参数。
自发现只适用于发现为Prometheus metric结果信息中格式为 xxx{label1="xx",label2="xx",...}的信息。
5.2 监控项原型配置
采集方式:Zabbix agent(active)
键值:prometheus.xx.xx[{$PURL},key,label="{#LABEL}"]
其中{#xxx}为自发现规则键值中的label转换为大写的信息。如果自发先规则键值中没有传label,则{#xxx}变量为所有筛选结果 xxx{label1="xx",label2="xx",...}中的label的大写信息。
自发现监控项:
版 本
基于GA03版本实现snc-proxy-agent的扩展。
展 望
实现支持prometheus exporter数据HTTP访问授权验证。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129557.html
摘要:本文已经收录在合集都可以采集那些指标常用合集中。允许通过和对接口进行黑盒探测监控。我们来看这个示例文件,其他是经常搭配服务发现来进行工作的,比如搭配基于的服务发现来进行。小结其实在监控系统中非常实用,尤其是监控和监控。 本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- ...
摘要:根据配置文件,对接收到的警报进行处理,发出告警。在默认情况下,用户只需要部署多套,采集相同的即可实现基本的。通过将监控与数据分离,能够更好地进行弹性扩展。参考文档本文为容器监控实践系列文章,完整内容见 系统架构图 1.x版本的Prometheus的架构图为:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
摘要:根据配置文件,对接收到的警报进行处理,发出告警。在默认情况下,用户只需要部署多套,采集相同的即可实现基本的。通过将监控与数据分离,能够更好地进行弹性扩展。参考文档本文为容器监控实践系列文章,完整内容见 系统架构图 1.x版本的Prometheus的架构图为:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...
摘要:比如定义了基础的数据类型以及对应的方法收集事件次数等单调递增的数据收集当前的状态,比如数据库连接数收集随机正态分布数据,比如响应延迟收集随机正态分布数据,和是类似的库的详细解析可以参考本文为容器监控实践系列文章,完整内容见 概述 Prometheus从2016年加入CNCF,到2018年8月毕业,现在已经成为Kubernetes的官方监控方案,接下来的几篇文章将详细解读Promethu...
阅读 1356·2023-01-11 13:20
阅读 1706·2023-01-11 13:20
阅读 1215·2023-01-11 13:20
阅读 1906·2023-01-11 13:20
阅读 4165·2023-01-11 13:20
阅读 2755·2023-01-11 13:20
阅读 1400·2023-01-11 13:20
阅读 3670·2023-01-11 13:20