📅  最后修改于: 2023-12-03 15:23:46.901000             🧑  作者: Mango
在 Prometheus 监控系统中,Prometheus 会从各个 target(例如 Node Exporter)中采集数据。但是,我们有时候需要在计算机或虚拟机中运行一些与监控目标无关的任务,并将结果反馈到 Prometheus 中。在这种情况下,我们可以考虑使用 Pushgateway,它能够接收不同的时间序列数据,并将这些数据暴露给 Prometheus。
本教程将介绍如何通过 Shell 脚本向 Pushgateway 发送数据。我们将实现一个简单的示例,使用 curl 命令将当前系统负载数据发送到 Pushgateway 中。
在开始之前,你需要确保你的系统中已经安装了 curl 命令,如果没有,请使用以下命令安装:
sudo apt-get update
sudo apt-get install curl
其次,你需要准备一个可用的 Pushgateway 实例。建议使用 Docker 容器运行 Pushgateway,命令如下:
docker run -d -p 9091:9091 prom/pushgateway
这样,你就成功启动了一个 Pushgateway 实例,并将其暴露在了本地的 9091 端口上。
在这个示例中,我们将使用 Shell 脚本来发送当前系统的负载数据。下面是示例脚本的内容,你可以将其拷贝到一个名为 push_load.sh
的文件中。
#!/bin/bash
PUSHGATEWAY="http://localhost:9091"
echo "Sending current load data to Pushgateway..."
LOAD1MIN=$(uptime | awk '{print $10}' | cut -d, -f1)
LOAD5MIN=$(uptime | awk '{print $11}' | cut -d, -f1)
LOAD15MIN=$(uptime | awk '{print $12}' | cut -d, -f1)
curl -X POST -d "system_load1m $LOAD1MIN" $PUSHGATEWAY/metrics/job/system
curl -X POST -d "system_load5m $LOAD5MIN" $PUSHGATEWAY/metrics/job/system
curl -X POST -d "system_load15m $LOAD15MIN" $PUSHGATEWAY/metrics/job/system
echo "Successfully sent load data to Pushgateway."
脚本中使用的 $PUSHGATEWAY
变量指向我们运行的 Pushgateway 实例的地址,$LOAD1MIN
、$LOAD5MIN
、$LOAD15MIN
变量分别保存了系统的 1 分钟、5 分钟和 15 分钟的负载值。在脚本的最后,我们使用 curl 命令分别向 Pushgateway 中发送这三个时间序列。
在准备好 Shell 脚本之后,你可以使用以下命令来运行:
chmod +x push_load.sh
./push_load.sh
你应该看到如下信息:
Sending current load data to Pushgateway...
Successfully sent load data to Pushgateway.
这意味着负载数据已经成功发送到 Pushgateway,并可以被 Prometheus 采集了。
通过本教程,你已经学会了如何使用 Shell 脚本向 Pushgateway 发送数据。这个技巧还可以用于其他需要将数据推送到 Prometheus 的场景,你可以根据需要进行调整和扩展。