Prometheus 配置文件与核心功能
#全局配置选项
global:
# 采集被监控端的一个周期 默认一分钟采集一次
[ scrape_interval: <duration> | default = 1m ]
# 采集时的超时候就 请求接口10s里面没有响应就是失败的
[ scrape_timeout: <duration> | default = 10s ]
# 告警的评估周期 默认是一分钟
[ evaluation_interval: <duration> | default = 1m ]
#web标签
external_labels:
[ <labelname>: <labelvalue> ... ]
[ query_log_file: <string> ]
#指定规则监控告警规则
rule_files:
[ - <filepath_glob> ... ]
# A list of scrape configurations.
#配置被监控指标
scrape_configs:
[ - <scrape_config> ... ]
#配置告警
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
#配置告警组件的连接地址 也可以对告警重新打标签
alertmanagers:
[ - <alertmanager_config> ... ]
# 写
remote_write:
[ - <remote_write> ... ]
# 读
remote_read:
[ - <remote_read> ... ]
relabel_configs
static_configs:
- targets: ['localhost:9090']
relabel_configs: #配置规则
- action: replace #重写
source_labels: ['job'] #标签重新命名
regex: (.*) #正则匹配
replacement: $1 #使用正则匹配第一个变量
target_label: idc #job修改成IDC
统计机房cpu使用总和
sum(process_cpu_seconds_total{job="bj"})
relabel_configs 动作
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},…)替代
选择采集目标?(监控端)
drop 过滤不需要采集的目标
keep 过滤需要采集的目标
labeldrop 实例
- action: labeldrop
regex: job
删除job
=======================================================
#基于文件的服务发现
• azure_sd_configs
• consul_sd_configs
• dns_sd_configs
• ec2_sd_configs
• openstack_sd_configs
• file_sd_configs
• gce_sd_configs
• kubernetes_sd_configs
• marathon_sd_configs
• nerve_sd_configs
• serverset_sd_configs
• triton_sd_configs
=======================================================
文件服务发现
file_sd_configs:
- files: ['/usr/local/prometheus/sd_config/*.yml']
#文件路径
refresh_interval: 5s
#服务发现时间
服务发现文件配置
- targets: ['localhost:9090']
labels:
idc: CD
总结
当你实例很多时 有很多动态缩容扩容这样非常适合 动态发现的
Prometheus会定期去扫文件看有没有修改 有修改就添加新的实例进来