prometheus学习笔记之node-export
1.安装node-export
k8s各node节点使⽤⼆进制或者daemonset⽅式安装node_exporter,⽤于收集各k8s node节点宿主机的监控指标数据,默认监听端⼝为9100
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local
cd /usr/local/
ln -sv node_exporter-1.3.1.linux-amd64/ node_exporter
vim /usr/lib/systemd/system/node-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter #可以再命令行自定义要运行的采集器 --web.disable-exporter-metrics参数可以禁用goland SDK相关数据
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl restart node-exporter
systemctl enable node-exporter
netstat -tnlp #默认9100
2.访问node exporter web界⾯验证安装
访问地址:节点ip:9100/metrics,正常情况下会显示当前节点信息
node-exporter常⻅指标
node_boot_time:系统⾃启动以后的总结时间
node_cpu:系统CPU使⽤量
node_disk*:磁盘IO
node_filesystem*:系统⽂件系统⽤量
node_load1:系统CPU负载
node_memeory*:内存使⽤量
node_network*:⽹络带宽指标
node_time:当前系统时间
go_*: node exporter中go相关指标
process_*: node exporter⾃身进程相关运⾏指标
3.配置prometheus server收集node-exporter指标数据
1.修改prometheus配置文件
vim /usr/local/prometheus/prometheus.yml
#在proemtheus job下添加需要抓取的target的,根据实际情况修改
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090","192.168.100.131:9100","192.168.100.132:9100"]
2.更新配置
curl -X POST http://127.0.0.1:9090/-/reload #启动时需要添加开启热更新参数
4.验证node数据抓取
prometheus图形数据展示
5.自定义node_exporter收集器
node_exporter -h #default: enabled表示默认启用 default: disabled表示默认禁用
通过提供 --collector.<name> 标志来启用收集器
--collector.systemcd
通过提供 --no-collector.<name> 标志来禁用默认启用的收集器
--no-collector.cpu #禁用CPU采集器
仅启用某些特定收集器,请使用 --collector.disable-defaults --collector.<name>
--collector.disable-defaults --collector.meminfo --collector.cpu #关闭默认采集项 只开启内存和CPU采集
也可以在prometheus的scrape配置中设定
- job_name: "prometheus"
static_configs:
- targets:
- localhost:9100
params:
collect[]: #可以多次使用但是不能和exclude[]同时使用
- cpu
- meminfo
include和exclude flage
一些收集器可以配置为使用专用标志包含或排除某些模式。
关键字:exclude(排除) include(包含)
注意,这些标志在同时支持两者的收集器上是互斥的。
示例:
--collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/)
也可以在prometheus的scrape配置中设定
params:
exclude[]:
- netdev
具体的收集器有支持不同的include和exclude flage,具体参考官方文档:https://github.com/prometheus/node_exporter
如果自定义了采集器,可以在目标节点显示,如下图
5.配置本地采集目录
#数据格式参考官方文档:https://prometheus.io/docs/instrumenting/exposition_formats/
cat <<EOF > /metrics/node_mem.prom #注意文件的后缀名称 #TYPE node_memory_usage gauge node_memory_usage 4311744512 # TYPE memory_total gauge node_memory_total 103481868288 EOF # 可使用参数 --web.telemetry-path="/metrics" #指定本地数据采集的目录 --web.disable-exporter-metrics #指定本地采集数据的文件 node_exporter --collector.textfile.directory=/metrics #直接指定目录
在node_exporter上验证
在prometheus中查询验证,需要注意的是如果prometheus自定义了node_exporter收集器,并且是collect,那么prometheus可能不会去收集
参考文档:
https://github.com/prometheus/node_exporter
https://prometheus.io/docs/instrumenting/exposition_formats/
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少