第十讲:企业级监控数据采集脚本开发实践
第十讲内容
• pushgateway 的介绍
• pushgateway 的安装和运⾏和配置
• ⾃定义编写脚本的⽅法 发送pushgateway 采集
• 使⽤pushgateway的优缺点
(⼀) pushgateway 的介绍
pushgateway 是另⼀种采⽤被动推送的⽅式(⽽不是exporter 主动获取)获取监控数据的prometheus 插件 在上篇中 我们对pushgateway已经做过介绍 它是可以单独运⾏在 任何节点上的插件(并不⼀定要在被监 控客户端) 然后 通过⽤户⾃定义开发脚本 把需要监控的数据 发送给 pushgateway 然后pushgateway 再把数据 推送给prometheus server
(⼆)pushgatway 的安装和运⾏和配置
下载地址:https://prometheus.io/download/#pushgateway
解压设置systemctl运行
1 2 3 | cd /usr/local tar -xf pushgateway-1.2.0.linux-amd64.tar.gz mv pushgateway-1.2.0.linux-amd64 pushgateway |
设置systemctl文件
1 2 3 4 5 6 7 8 9 10 11 | # cat /usr/lib/systemd/system/pushgateway.service [Unit] Description=Prometheus Node Exporter After=network.target [Service] ExecStart=/usr/local/pushgateway/pushgateway User=nobody [Install] WantedBy=multi-user.target |
启动
systemctl daemon-reload systemctl start pushgateway systemctl enable pushgateway |
关于pushgateway的配置 主要指的是 在prometheus sever端的配 置
1 2 3 | job_name: 'pushgateway' static_configs: - targets: [ '192.168.1.101:9091' , '192.168.1.101:9092' ] |
这⾥我们发现了没有, localhost:9091/9092 使⽤的 pushgateway开启了两个
在prometheus_server 本机上 为什么开启两个 最后⼀个段落给⼤家解释
重启prometheus
(三)⾃定义编写脚本的⽅法 发送pushgateway 采集
接下来 进⼊重头戏了 pushgateway 本⾝是没有任何抓取监控数据的功能的 它只是被 动的等待推送过来
1 2 3 4 5 6 7 8 9 10 11 12 | # cat /usr/local/node_exporter/node_exporter_shell.sh #!/bin/bash instance_name=`hostname -f | cut -d '.' -f1` #?#本机机器名 变量用于于之后的标签 if [ $instance_name == "localhost" ];then echo "Must FQDN hostname" fi # For waitting connections label= "count_netstat_wait_connections" count_netstat_wait_connections=`netstat -an | grep -i wait | wc -l` echo "$label : $count_netstat_wait_connections" echo "$label $count_netstat_wait_connections" |curl --data-binary @- http: //192.168.1.101:9091/metrics/job/pushgateway/instance/$instance_name |
脚本解释
1 2 3 4 5 6 7 8 9 10 11 12 | #获取主机名用于区分不同主机,而且机器名不能是localhost instance_name=`hostname -f | cut -d '.' -f1` #后⾯红⾊部分 是我们通过Linux命令⾏ 就简单的获取到了 我 们需要监控的数据 TCP_WAIT数 count_netstat_wait_connections=`netstat -an | grep -i wait | wc -l` #最后这⾥ ⽤POST ⽅式 把 key & value 推送给 pushgatway的URL地址 curl --data-binary @- http: //192.168.1.101:9091/metrics/job/pushgateway/instance/$instance_name #url的主location http: //192.168.1.101:9091/metrics/job/pushgateway/ #这⾥是 第⼆部分 第⼀个标签: 推送到 哪⼀个prometheus.yml 定义的 job⾥ job/pushgateway/ #这⾥是 第⼆个标签 推送后 显⽰的 机器名是什么 instance/$instance_name |
手动运行该脚本,然后放入crontab运行就可以定时抓取服务器tcp的wait链接信息了
web界面查看
1 | count_netstat_wait_connections |
(四)pushgateway的优缺点
pushgateway这种⾃定义的 采集⽅式 ⾮常的快速 ⽽且极其灵活 ⼏乎不收到任何约束 其实我个⼈ 还是⾮常希望 使⽤pushgateway来获取监控数据的 各类的exporters虽然玲琅满⽬ ⽽且默认提供的数据很多了已 经 ⼀般情况下 我在企业中 只安装 node_exporter 和 DB_exporter 两个 其他种类的 监控数据 我倾向于 全部使⽤pushgateway的⽅式 采集
pushgateway的缺点
1) pushgateway 会形成⼀个单点瓶颈,假如好多个 脚本同时 发送给 ⼀个pushgateway的进程 如果这个进程没了,那么监控数据也就没了
2) pushgateway 并不能对发送过来的 脚本采集数据 进⾏更智 能的判断 假如脚本中间采集出问题了 那么有问题的数据 pushgateway⼀样照单全收 发送给 prometheus
作业
我们⾃⼰搭建pushgateway 并⾃⾏编写⼀个 采集脚本 (bash shell即可) 采集⼀个 ping 延迟和丢包率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-07-24 Gitlab提交时间错误问题修复