电脑教程

克服网络障碍:Prometheus如何通过间接方式采集目标服务数据

字号+作者:创站实验室来源:数据库2025-11-26 18:40:12我要评论(0)

图片在上篇从零开始:使用Prometheus与Grafana搭建监控系统,我们了解了Prometheus采集数据主要是采用Pull模式,即主动拉取模式,这种方式虽然简单,但是有一定限制,比如服务器A部

图片

在上篇从零开始:使用Prometheus与Grafana搭建监控系统 ,克服我们了解了Prometheus采集数据主要是网络务数采用Pull模式,即主动拉取模式 ,障碍这种方式虽然简单 ,何通但是过间有一定限制  ,比如服务器A部署在边缘端与Prometheus部署在云端 ,接方集目据两者网络不通 ,式采因此不能采用Pull模式。源码下载标服

图片

那么如何获取服务器 A 的克服指标 ?答案就是采用Pushgateway ,这里Pushgateway充当了一个桥接的网络务数作用,把Pushgateway服务暴漏一个公网地址,障碍然后服务器 A 与Prometheus都能连接即可。何通服务器 把数据 Push到Pushgateway ,过间然后 Prometheus 去 Pushgateway 上定时 pull数据即可。云计算接方集目据

图片

下面分享一下如何使用Pushgateway如何采集远程节点数据指标 。式采

下载

复制docker pull prom/pushgateway:v1.5.11.

启动

复制docker run --name pushgateway -d -p 9091:9091 prom/pushgateway:v1.5.11.

图片

访问http://localhost:9091/metrics查看是否启动成功  ,可以看到Pushgateway自身也带了一些指标

图片

边缘服务器配置下载node-exporter

复制wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-arm64.tar.gz1.

图片

下载完成以后执行tar -xvf node_exporter-1.5.0.linux-arm64.tar.gz && cd node_exporter-1.5.0.linux-arm64进行解压

图片

解压完成以后,执行./node_exporter进行简单验证  ,

图片

看到以上信息则启动成功,通过浏览器进行访问http://ip:9100/metrics ,可以看到以下指标

图片

安装node-exporter

由于直接启动node-exporter关闭窗口此进程就会挂掉,因此可以采用systemctl方式进行配置

执行mv node_exporter //usr/local/移动node_exporter文件

在/usr/lib/systemd/system/目录 ,模板下载创建node_exporter.service文件 ,内容如下 ,ExecStart指向的就是node_exporter执行文件

复制cat <<EOF > /usr/lib/systemd/system/node_exporter.service [Unit] Descriptinotallow=Node Exporter [Service] ExecStart=/usr/local/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target EOF1.2.3.4.5.6.7.8.9.10.

图片

执行systemctl daemon-reload

执行systemctl start node_exporter启动node_exporter

执行netstat -aon|grep 9100查看9100是否启动成功

图片

边缘端指标上报

由于node-exporter只提供的数据 ,默认是由prometheus进行pull的建站模板方式来获取指标数据,而我们需要主动push数据到Pushgateway  ,所以这里需要增加shell脚本 ,先获取node-exporter数据 ,然后在调用Pushgateway接口进行push ,以下为推送语句

PushgatewayIP: 10.211.55.2

边缘服务器IP:10.211.55.6

复制curl 10.211.55.6:9100/metrics|curl --data-binary @- http://10.211.55.2:9091/metrics/job/agent-server/instance/10.211.55.6/hostname/边缘服务器1.

手动执行以下脚本 ,并访问Pushgateway查看是否有对应数据

图片

可以看到数据已上传

图片

虽然以上脚本没问题,但是亿华云还需要定时执行才行,所以需要编写shell脚本,并通过crontab进行调用

创建shell脚本

复制cat <<EOF > /etc/cron.d/propushgateway.sh #!/bin/bash curl 10.211.55.6:9100/metrics|curl --data-binary @- http://10.211.55.2:9091/metrics/job/agent-server/instance/hostname/10.211.55.6 date>> /tmp/date.txt EOF1.2.3.4.5.

分配文件执行权限

复制chmod 777 /etc/cron.d/propushgateway.sh1.

配置crontab任务,10s执行一次 ,由于crontab只支持到分,所以采用采用以下方式配置

复制crontab -e * * * * * /etc/cron.d/propushgateway.sh * * * * * sleep 10; /etc/cron.d/propushgateway.sh * * * * * sleep 20; /etc/cron.d/propushgateway.sh * * * * * sleep 30; /etc/cron.d/propushgateway.sh * * * * * sleep 40; /etc/cron.d/propushgateway.sh * * * * * sleep 50; /etc/cron.d/propushgateway.sh1.2.3.4.5.6.7.8.

查看执行日志tail -f /var/log/cron可以看到10s执行一次

图片

修改prometheus配置文件

在prometheus.yml文件中增加如下配置

复制- job_name: AgentServer # Override the global default and scrape targets from this job every 5 seconds. honor_labels: false static_configs: - targets: [10.211.55.2:9091] labels: pushgateway_instance: agent-server ##这里必须加这边标签过滤 ,不然采集的是pushGateway数据1.2.3.4.5.6.7.

增加完成以后重启prometheus

复制docker restart prometheus1.

启动完成以后访问prometheus地址,香港云服务器查看Pushgateway的target已经生效

图片

访问Grafana,可以看到边缘段数据已采集

图片

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 市值暴跌、巨额诉讼,网安一哥走下神坛

    市值暴跌、巨额诉讼,网安一哥走下神坛

    2025-11-26 17:52

  • WordPress 插件存在漏洞,500 万网站面临严重安全风险

    WordPress 插件存在漏洞,500 万网站面临严重安全风险

    2025-11-26 17:44

  • NIST中网络安全中有多少工作角色?

    NIST中网络安全中有多少工作角色?

    2025-11-26 16:32

  • 泰勒斯威夫特演唱会16万张门票泄露

    泰勒斯威夫特演唱会16万张门票泄露

    2025-11-26 16:27

网友点评