Prometheus之配置采集目标
1. 自定义采集目标
使用scrape_configs定义采集目标
1. 模板
# 任务名称,自动作为抓取到的指标的一个标签 job_name: <job_name> # 抓取周期 [ scrape_interval: <duration> | default = <global_config.scrape_interval> ] # 每次抓取的超时 [ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ] # 从目标抓取指标的URL路径 [ metrics_path: <path> | default = /metrics ] # 当添加标签发现指标已经有同名标签时,是否保留原有标签不覆盖 [ honor_labels: <boolean> | default = false ] # 抓取协议 [ scheme: <scheme> | default = http ] # HTTP请求参数 params: [ <string>: [<string>, ...] ] # 身份验证信息 basic_auth: [ username: <string> ] [ password: <secret> ] [ password_file: <string> ] # Authorization请求头取值 [ bearer_token: <secret> ] # 从文件读取Authorization请求头 [ bearer_token_file: /path/to/bearer/token/file ] # TLS配置 tls_config: [ <tls_config> ] # 代理配置 [ proxy_url: <string> ] # DNS服务发现配置 dns_sd_configs: [ - <dns_sd_config> ... ] # 文件服务发现配置 file_sd_configs: [ - <file_sd_config> ... ] # K8S服务发现配置 kubernetes_sd_configs: [ - <kubernetes_sd_config> ... ] # 此Job的静态配置的目标列表 static_configs: [ - <static_config> ... ] # 目标重打标签配置 relabel_configs: [ - <relabel_config> ... ] # 指标重打标签配置 metric_relabel_configs: [ - <relabel_config> ... ] # 每次抓取允许的最大样本数量,如果在指标重打标签后,样本数量仍然超过限制,则整个抓取认为失败 # 0表示不限制 [ sample_limit: <int> | default = 0
2. 样例
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
file_sd_configs:
- files: ['/usr/local/prometheus/sd_config/node.yml']
refresh_interval: 5s
- job_name: 'ping_all'
scrape_interval: 1m
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- 10.0.0.1
labels:
instance: ZX_防火墙
2. 标签的使用
1. 默认标签
__address__:当前Target实例的访问地址
__scheme__:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS;
__metrics_path__:采集目标服务访问地址的访问路径
2. 添加标签
scrape_configs:
- job_name: "ping_all"
static_configs: - targets: ['localhost:9090'] # 添加标签选项 labels: # 标签key:标签value idc: bj
3. 重新标签
1. 模板
relable_configs: # 源标签 [ source_labels: '[' <labelname> [, ...] ']' ] # 多个源标签时连接的分隔符 [ separator: <string> | default = ; ] # 重新标记的标签 [ target_label: <labelname> ] # 整则表达式匹配源标签的值 [ regex: <regex> | default = (.*) ] # 用的少,占时略 [ modulus: <uint64> ] # 替换正则表达式匹配的分组,分组引用 $1,$2,$3,.... [ replacement: <string> | default = $1 ] # 基于正则表达式匹配执行的操作 [ action: <relabel_action> | default = replace ]
2. action:重新标签动作
replace:默认,通过regex匹配source_label的值,使用replacement来引用表达式匹配的分组
keep:删除regex与连接不匹配的目标 source_labels
drop:删除regex与连接匹配的目标 source_labels
labeldrop:删除regex匹配的标签
labelkeep:删除regex不匹配的标签
hashmod:设置target_label为modulus连接的哈希值source_labels
labelmap:匹配regex所有标签名称。然后复制匹配标签的值进行分组,replacement分组引用(${1},${2},…)替代
3. 重命名标签
scrape_configs:
# 作业改为bj
- job_name: 'bj'
static_configs:
- targets: ['localhost:9090']
# 添加重命名标签
relabel_configs:
# 基于正则表达式匹配操作
- action: replace
# 指定源标签
source_labels: ['job']
# 写入正则,捕获值
regex: (.*)
# 替换正则表达式匹配到的分组,分组引用 $1
replacement: $1
# 重新标记标签 为 idc
target_label: idc
4. 删除标签
scrape_configs:
- job_name: 'bj'
static_configs:
- targets: ['localhost:9090']
relabel_configs:
# 删除指定标签
- action: labeldrop
# 指定 job 标签
regex: job
5. 指定标签下的主机停止数据采集
scrape_configs:
- job_name: 'bj'
static_configs:
- targets: ['localhost:9090']
relabel_configs:
# 启动drop标签过滤,被指定到的标签停止数据采集
- action: drop
# 指定 job 标签
source_labels: ['job']
6. 指定标签下的主机保留数据采集
scrape_configs:
- job_name: 'bj'
static_configs:
- targets: ['localhost:9090']
relabel_configs:
# 启动keep标签过滤,被指定到的标签保留数据采集
- action: keep
# 指定 job 标签
source_labels: ['job']
一往无前虎山行,拨开云雾见光明

浙公网安备 33010602011771号