1、 配置文件核心功能
a) 全局配置文件
b) scrape_configs
c) relabel_configs
d) 基于文件的服务发现
全局配置文件:
global: # 全局
[ scrape_interval: <duration> | default = 1m ] # 采集周期—默认1分钟采集一次
[ scrape_timeout: <duration> | default = 10s ] # 采集超时时间
[ evaluation_interval: <duration> | default = 1m ] # 告警周期,默认1分钟
external_labels: # Web标签、不常用
[ <labelname>: <labelvalue> ... ]
rule_files: # 指定告警规则,比如CPU超过多少告警
[ - <filepath_glob> ... ]
scrape_configs: # 被监控端
[ - <scrape_config> ... ]
alerting: # 配置告警部分
alert_relabel_configs: # 告警标签
[ - <relabel_config> ... ]
alertmanagers: # 告警地址
[ - <alertmanager_config> ... ]
remote_write: # 远程存储,默认存储周期时间15天不适合存储长期数据,所以在这我们就需要用到这个选项吧数据存储到远程数据库当中。
[ - <remote_write> ... ]
remote_read: # 同上
[ - <remote_read> ... ]
scrape_configs: # 当前Job的全局配置,一个Prometheus可以有多个Job
job_name: <job_name>
[ scrape_interval: <duration> | default = <global_config.scrape_interval> ] # 采集时间间隔
[ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ]
[ metrics_path: <path> | default = /metrics ] # metrics路径,默认接口
[ honor_labels: <boolean> | default = false ] # 标签动作
[ scheme: <scheme> | default = http ] # 采集目标使用的方式、例如:http、https
params: # 访问http的时候是否需要携带什么参数
[ <string>: [<string>, ...] ]
basic_auth: # 配置http的认证方式
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
[ bearer_token: <secret> ]
[ bearer_token_file: <filename> ]
tls_config:
[ <tls_config> ]
[ proxy_url: <string> ] # 用代理的形式访问
consul_sd_configs: # 服务发现,动态配置
[ - <consul_sd_config> ... ]
dns_sd_configs: # DNS服务发现
[ - <dns_sd_config> ... ]
file_sd_configs: # 文件的方式发现
[ - <file_sd_config> ... ]
kubernetes_sd_configs: # Kubernetes方式发现
[ - <kubernetes_sd_config> ... ]
…
static_configs: # 静态配置被监控端
[ - <static_config> ... ]
relabel_configs: # 数据采集之前标记、命名
[ - <relabel_config> ... ]
metric_relabel_configs: # 数据采集之后标记、命名
[ - <relabel_config> ... ]
[ sample_limit: <int> | default = 0 ] # 采集样本的数量
relabel_configs:
relabel_configs: 允许在采集之前对任何目标及其他标签进行修改。
重新标签的意义:
重命名标签名
删除标签
过滤目标
relabel_configs:
# 源标签
[ source_labels: '[' <labelname> [, ...] ']' ]
# 多个源标签时连接的分隔符
[ separator: <string> | default = ; ]
# 重新标记的标签
[ target_label: <labelname> ]
# 正则表达式匹配源标签的值
[ regex: <regex> | default = (.*) ]
# 匹配源标签的值默认匹配所有*
[ modulus: <int> ]
# 替换正则表达式匹配的分区,分组引用$1,$2,$3
[ replacement: <string> | default = $1 ]
# 基于正则表达式 匹配执行的操作
[ action: <relabel_action> | default = replace ]
# 对上面匹配的标签做什么动作,默认replace(替换)
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分组引用(${2},${2},…)代替
添加新的标签:
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# ps -ef | grep Prometheus
root 380 1 0 10:42 ? 00:00:04 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
[root@k8smaster prometheus]# kill -hup 380 # 热更新,不停服务更新Prometheus配置文件使Prometheus生效
[root@k8smaster prometheus]# ./promtool check config prometheus.yml # 类似于nginx –t选项,检测修改的配置文件是否有问题
将已有的标签重命名一个新的标签名:
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
relab重命名:
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
注:在这里需要注意一下,因为我们没有删除默认的标签,所以他会生成一个新的并且保留原来的
删除job所匹配的所有标签:
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
注:在这可以看到已经查看不到数据了
删除除了job不匹配的标签
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
注:可以看到数据又回来了
删除job
[root@k8smaster prometheus]# vim prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
基于文件的服务发现:
[root@k8smaster prometheus]# mkdir /usr/local/prometheus/sd_config
[root@k8smaster prometheus]# vim prometheus.yml # 将前面所改的内容全部删除并恢复源来的内容
[root@k8smaster prometheus]# kill -hup 380
注:通过上面的图片可以看到我们的机器是没有了,然后我们通过文件发现的方式给展现出来
[root@k8smaster prometheus]# vim prometheus.yml # 将前面所改的内容全部删除并恢复源来的内容
28 file_sd_configs: # 设置动态服务发现、文件发现
29 - files: ['/usr/local/prometheus/sd_config/*.yml'] # 文件路径
30 refresh_interval: 5s # 多少秒查看一下这个文件并更新,主要就是看你有没有修改这个文件
[root@k8smaster prometheus]# kill -hup 380
[root@k8smaster sd_config]# vim test.yml
访问一下验证效果:
注:在这可以看见服务发现这里发现一个机器