Prometheus监控实战系列八:标签重写
Posted 唐僧骑白马
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus监控实战系列八:标签重写相关的知识,希望对你有一定的参考价值。
标签重写(Relabeling)是Prometheus一个非常有用的功能,它可以在任务拉取(scraping)阶段前
,修改target和它的labels。
1、默认标签
默认情况下,Prometheus加载targets后,都会包含一些默认的标签,其中以__作为前置的标签是在系统内部使用的,因此这些标签不会写入到样本数据中。
如:
address:当前Target实例的访问地址
scheme:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS;
metrics_path:采集目标服务访问地址的访问路径;
2、relabel_config
标签重写的配置参数为relabel_config,其完整的配置格式如下 :
#源标签,需要在现有标签中已存在
[ source_labels: '[' <labelname> [, ...] ']' ]
# 多个源标签的分隔符;
[ separator: <string> | default = ; ]
# 要替换的目标标签;
[ target_label: <labelname> ]
# 正则表达式,用于匹配源标签的值
[ regex: <regex> | default = (.*) ]
# 源标签值取hash的模块;
[ modulus: <uint64> ]
# 当正则表达式匹配时,用于替换的值,$1代替正则匹配到的值;
[ replacement: <string> | default = $1 ]
# 基于正则匹配的动作
[ action: <relabel_action> | default = replace ]
其中,相关的action类型有如下几种:
- replace:正则匹配源标签的值用来替换目标标签,如果有replacement,使用replacement替换目标标签;
- keep: 如果正则没有匹配到源标签的值,删除该targets ,不进行采集;
- drop: 与keep相反,正则匹配到源标签,删除该targets;
- labelmap:正则匹配所有标签名,将匹配的标签值部分做为新标签名,原标签值 做为新标签的值;
- labeldrop:正则匹配所有标签名,匹配则移除标签;
- labelkeep:正则匹配所有标签名,不匹配的标签会被移除;
注意:重定义标签并应用后,__
开头的标签会被删除;要临时存储值用于下一阶段的处理,使用__tmp
开头的标签名,这种标签不会被Prometheus使用;
3、功能操作
在开始测试前,我们先配置一个测试Job,该Job包含两个实例,实例分别包含了两个标签,machine_hostname
和machine_idc__
。
# 被监控机器
- job_name: 'agent1'
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
labels:
__machine_hostname__: 'node-01'
__machine_idc__: 'idc-01'
- targets: ['192.168.75.162:9100']
labels:
__machine_hostname__: 'node-02'
__machine_idc__: 'idc-02'
3.1 replace操作
将machine_hostname的值替换到新标签hostname
# 被监控机器
- job_name: 'agent1'
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
labels:
__machine_hostname__: 'node-01'
__machine_idc__: 'idc-01'
- targets: ['192.168.75.162:9100']
labels:
__machine_hostname__: 'node-02'
__machine_idc__: 'idc-02'
relabel_configs:
- source_labels: [__machine_hostname__]
regex: "(.*)"
target_label: 'hostname'
action: replace
replacement: '$1'
重启Prometheus后,查看target信息如下:
3.2 keep/drop操作
排除标签值不匹配正则的targets 目标,此处正则匹配machine_hostname: 'node-01'
。
# 被监控机器
- job_name: 'agent1'
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
labels:
__machine_hostname__: 'node-01'
__machine_idc__: 'idc-01'
- targets: ['192.168.75.162:9100']
labels:
__machine_hostname__: 'node-02'
__machine_idc__: 'idc-02'
relabel_configs:
- source_labels: [__machine_hostname__]
regex: "(.*)-01"
target_label: 'hostname'
action: keep
replacement: '$1'
如果将上面配置的action
改为drop
,则结果相反,将删除正则匹配到标签的实例。
3.3 labelmap操作
重写新的标签hostname
和idc
,使用原有machine_hostname
和machine_idc
标签的值。
# 被监控机器
- job_name: 'agent1'
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets: ['192.168.75.162:9100'] # 被监控ip,端口9100
labels:
__machine_hostname__: 'node-01'
__machine_idc__: 'idc-01'
- targets: ['192.168.75.162:9100']
labels:
__machine_hostname__: 'node-02'
__machine_idc__: 'idc-02'
relabel_configs:
- action: labelmap
regex: __machine_(.+)__
查看target信息,可看到重写的新标签。
上一篇:Prometheus监控实战系列七:任务与实例
下一篇:Prometheus监控实战系列九:主机监控
云原生系列之使用prometheus监控redis集群实战
前言
本次实战使用prometheus监控redis集群,如果你只想监控redis的某一个单机服务,可以参考:
超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控
本文中的是prometheus已经安装好,如果你还未安装,可以参考上一篇文章:prometheus安装及使用入门
若你想监控其他服务可以参考:
- 监控远程主机: 云原生系列之使用 prometheus监控远程主机实战
- 监控MySQL: 云原生系列之使用 prometheus监控MySQL实战
- 监控nginx : 云原生系列之使用prometheus监控nginx
- 监控tomcat :
【云原生】prometheus结合jmx exporter 的http server模式采集tomcat监控实战
【云原生】
以上是关于Prometheus监控实战系列八:标签重写的主要内容,如果未能解决你的问题,请参考以下文章
Prometheus监控实战系列二十四: Alertmanager集群
超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控
企业运维实战-k8s学习笔记17.k8s集群+Prometheus监控部署基于prometheus实现k8s集群的hpa动态伸缩虚拟机部署prometheus监控