pushgateway相比较exporter是主动向服务器发送请求,pushgateway本身也是一个程序,可以运行在任意节点上(不是必须在被监控端),运行本身没有抓取数据的功能,它只是被动的等待推送过来,然后发现服务端。
1、GitHub下载解压
PushGateway下载地址:
wget https://github.com/prometheus/pushgateway/releases/download/v1.5.0/pushgateway-1.5.0.linux-amd64.tar.gz
2、运行pushgateway 默认端口是9091
,可以使用--web.listen-address
更改默认端口
tar zxf pushgateway-1.5.0.linux-amd64.tar.gz
mv pushgateway-1.5.0.linux-amd64 /usr/local/pushgateway
cd /usr/local/pushgateway
./pushgateway --web.listen-address=:19091
PS:前台启动没有报错就可以 ^C 停止掉了,我们配置systemd管理!
3、配置system管理
cat > /usr/lib/systemd/system/pushgateway.service << EOF
[Unit]
Description=prometheus pushgateway
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/pushgateway/pushgateway --web.listen-address=:19091
ExecStop=/usr/bin/kill -HUP \$MAINPID
[Install]
WantedBy=multi-user.target
EOF
启动并加入开机自启动
systemctl enable pushgateway.service --now
systemctl status pushgateway.service
如上图,查看状态是active (running)
表示已经起来了!
4、Prometheus配置文件中,添加PushGateway地址
- job_name: "prometheus gateway"
static_configs:
- targets: ["localhost:19091"]
systemctl restart prometheus.service
systemctl status prometheus.service
5、验证
浏览器访问 IP:19091
验证pushgateway页面
验证Prometheus页面
1、推送单个样本
echo "test_metric 1314521" | curl --data-binary @- http://localhost:19091/metrics/job/test_job
job=test_job
,多个标签直接往后添加即可使用shell脚本推送 netstat wait
数量
#!/bin/bash
pushgateway="localhost:19091"
lable="count_netstat_wait_connections"
count_netstat_wait_connections=$(netstat -an|grep -i wait|wc -l)
if [ ${HOSTNAME} == "localhost" ];then
echo "主机名不可使用 'localhost'" && exit 5
fi
# 这里定义了两个标签 job=pushgateway-1 hostname=${HOSTNAME}
echo "${lable} $count_netstat_wait_connections"|curl --data-binary @- http://${pushgateway}/metrics/job/pushgateway-1/hostname/${HOSTNAME}
使用定时任务执执行脚本,每3秒推送一次数据
crontab -e
* * * * * /usr/bin/sleep 3; /bin/bash /root/qinzt/pushgateway.sh