标签处理的重要性
之前的[配置](https://blog.51ai.vip/2019/10/09/prometueus-yml%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E/中提到了标签的处理,不过由于写的是静态的配置,标签可以自己设置或者不设置都可以.
当使用服务发现之后发现标签处理的重要性提升了更高的级别.
标签处理
- job_name: 'node'
static_configs:
- targets: ['172.16.23.110:9100','172.16.23.111:9100']
metric_relable_configs: #通过正则重命名标签
- action: replace #replace替换是默认动作。keep(只参加匹配标签的实例)、drop(不采集匹配正则的实例)、labelkeep\labeldrop(对标签进行过滤处理而非实例)等动作
source_labels: ['job'] #原标签,job是默认就会产生的标签,这里job标签的值是node
regex: (.*) #正则匹配,这里匹配job标签内的内容,也就是node
replacement: beijing #替换成什么内容,如果写$1就是将正则里读取的值
target_label: idc #把替换内容赋值给idc标签
- action: labeldrop #删除标签
regex: job #把原job标签删除
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
location: bj3
relabel_configs:
- action: replace
source_labels: ['job']
regex: (.*)
replacement: $1
target_label: server
以上两个例子都是替换标签,job:node中,删除了前job标签,下面的job新增了’server’标签内容取的job内容,但没删除job标签.
通过标签我们组成多维模型.可以对标签重命名,删除,过滤信息等.
服务发现
之前配置中的静态配置需要一个一些写配置,设备或者服务多的时候容易头大.
这里可以通过服务发现简化手动配置工作.
Prometheus支持多种服务发现机制,例如: consul、dns、openstack、file、kubernetes等.
这里举例file.比较简单的方式.
file机制中:需要提供文件来获取内容.文件格式为YAML 或 JSON格式.
prometheus配置:
scrape_configs:
- job_name: 'prometheus'
file_sd_configs:
- files: ['/usr/local/prometheus/files_sd_configs/*.yaml']
##指定服务发现文件位置
refresh_interval: 5s
##刷新间隔改为5秒
Prometheus 每5秒扫描一次指定位置的配置文件.
服务发现文件格式:
- targets: ['localhost:9090'] # 监控目标
labels: # 配置标签
server: local