本文按照官方文档的相关内容整理整理的配置语法以及实现功能
一个scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 配置文件格式如下
因为部署在kubernetes环境中所以我只在意基于kubernetes_sd_configs的服务发现和static_configs静态文件的发现
relable_configss是功能强大的工具,就是Relabel可以在Prometheus采集数据之前,通过Target实例的Metadata信息,动态重新写入Label的值。除此之外,我们还能根据Target实例的Metadata信息选择是否采集或者忽略该Target实例。
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分组引用( {2},…)替代
prometheus中的数值都是key:value格式, 其中replace、keep、drop都是对value的 *** 作, labelmap、labeldrop、labelkeep都是对key的 *** 作
replace是action的默认值, 通过regex匹配source_label的值,使用replacement来引用表达式匹配的分组
上面的列子中 address 的值为 $1:$2 , 其中 $1 是正则表达式 ([^:]+)(?::\d+)? 从 address 中获取, $2 是正则表达式 (\d+)从(\d+) 中获取, 最后的 address 的数值为192.168.1.1:9100
上面的例子只要匹配__meta_kubernetes_service_annotation_prometheus_io_probe=true数据就保留, 反正source_labels中的值没有匹配regex中的值就丢弃
drop 的使用和keep刚好相反, 还是使用keep的例子:
上面的例子只要__meta_kubernetes_service_annotation_prometheus_io_probe这个标签的值为true就丢弃, 反之如果__meta_kubernetes_service_annotation_prometheus_io_probe!=true的数据就保留
labelmap的用法和上面说到replace、keep、drop不同, labelmap匹配的是标签名称, 而replace、keep、drop匹配的是value
上面例子中只要匹配到正则表达式 __meta_kubernetes_service_label_(.+) 的标签, 就将标签重写为 (.+) 中的内容, 效果如下:
待续
使用labeldrop则可以对Target标签进行过滤,删除符合过滤条件的标签,例如:
该配置会使用regex匹配当前target中的所有标签, 删除符合规则的标签, 反之保留不符合规则的
使用labelkeep则可以对Target标签进行过滤,仅保留符合过滤条件的标签,例如:
该配置会使用regex匹配当前target中的所有标签, 保留符合规则的标签, 反之不符合的移除
上面我们说到relabel_config是获取metrics之前对标签的重写, 对应的metric_relabel_configs是对获取metrics之后对标签的 *** 作, metric_relabel_configs能够确定我们保存哪些指标,删除哪些指标,以及这些指标将是什么样子。
metric_relabel_configs的配置和relabel_config的配置基本相同, 如果需要配置相关参数请参考 2.scrape_configs
主要用途为指定exporter获取metrics数据的目标, 可以指定prometheus、 mysql、 nginx等目标
此规则主要是用于抓取prometheus自己数据的配置, targets列表中的为prometheus 获取metrics的地址和端口, 因为没有指定metrics_path所以使用默认的/metrics中获取数据,
简单理解就是, prometheus访问 http://localhost:9090/metrics 获取监控数据
还可以配置指定exporter中的目的地址, 如获取node_exporter的数据
简单理解为分别访问 http://10.40.58.153:9100/metrics http://10.40.58.154:9100/metrics http://10.40.61.116:9100/metrics 获取metrics数据
kubernetes的服务发现可以刮取以下几种数据
通过指定kubernetes_sd_config的模式为endpoints,Prometheus会自动从Kubernetes中发现到所有的endpoints节点并作为当前Job监控的Target实例。如下所示,
该配置是使用kubernetes的发现机制发现kube-apiservers
上面的刮取配置定义了如下信息:
该配置是自动发现kubernetes中的endpoints
可以看到relable_configs中的规则很多, 具体的内容如下
获取的metrics的信息如下:
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz
mysql -uroot -p #登录mysql starquest
执行命令
GRANT REPLICATION CLIENT, PROCESS ON . TO 'exporter'@'%' identified by '123456'
GRANT SELECT ON performance_schema.* TO 'exporter'@'%'
flush privileges
注意 如果有问题 请将'localhost' 改为 '%'
tar -zxvf mysqld_exporter-0.10.0.linux-amd64.tar.gz
groupadd prometheus2
useradd -g prometheus2 -m -d /home/monitor/node_exporter/ -s /sbin/nologin prometheus2
mv mysqld_exporter-0.10.0.linux-amd64 mysqld_exporter
rm -rf mysqld_exporter-0.10.0.linux-amd64.tar.gz
创建配置信息
cd /home/monitor/mysqld_exporter
vim .my.cnf
[client]
user=exporter
password=123456
touch /usr/lib/systemd/system/mysqld_exporter.service
chown prometheus2:prometheus2 /usr/lib/systemd/system/mysqld_exporter.service
chown -R prometheus2:prometheus2 /home/monitor/mysqld_exporter
vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
ExecStart=/home/monitor/mysqld_exporter/mysqld_exporter -config.my-cnf=/home/monitor/mysqld_exporter/.my.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动
systemctl daemon-reload
systemctl enable mysqld_exporter.service
systemctl start mysqld_exporter.service
systemctl status mysqld_exporter.service
systemctl stop mysqld_exporter.service
systemctl restart mysqld_exporter.service
Import dashboard 11323 选择数据源 Prometheus
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)