Prometheus标签处理&服务发现

标签处理的重要性

之前的配置中提到了标签的处理,不过由于写的是静态的配置,标签可以自己设置或者不设置都可以.

当使用服务发现之后发现标签处理的重要性提升了更高的级别.

标签处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 - 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配置:

1
2
3
4
5
6
7
scrape_configs:
- job_name: 'prometheus'
file_sd_configs:
- files: ['/usr/local/prometheus/files_sd_configs/*.yaml']
##指定服务发现文件位置
refresh_interval: 5s
##刷新间隔改为5秒

Prometheus 每5秒扫描一次指定位置的配置文件.

服务发现文件格式:

1
2
3
- targets: ['localhost:9090']    # 监控目标
labels: # 配置标签
server: local
请我吃辣条吧?!