系列文章
第一章:超详细 CentOS7安装部署Prometheus及其简单使用(exporter、探针、告警)
第二章:超详细 Centos7下Prometheus Alertmanager配置钉钉告警与邮箱告警(已亲手验证)
第三章(当前):CentOS7中Prometheus PushGateway的使用
第四章:Prometheus结合Consul实现自助服务发现
第五章:CentOS7中使用Prometheus 集成 mtail 实现错误日志采集
扩展:CentOS7中使用Prometheus Process-exporter监控进程状态
扩展:CentOS7中使用Prometheus监控Windows主机
一、简介
概述
Pushgateway是Prometheus的一个组件,prometheus server默认是通过Exporter主动获取数据(默认采取pull拉取数据),Pushgateway则是通过exporter主动方式推送数据到Pushgateway,再由prometheus主动去拉取 Pushgateway数据,用户可以写一些自定义的监控脚本把需要监控的数据发送给Pushgateway。从prometheus server角度看,都是由prometheus server主动去拉取各个数据源(例:Exporter和Pushgateway)的数据。
使用场景
Prometheus 采用定时 Pull 模式,但由于子网络或者防火墙的原因,不能直接拉取各个 Target 的指标数据,此时可以采用各个 Target 往 PushGateway 上 Push 数据,然后 Prometheus 去 PushGateway 上定时 pull。
PushGateway官网
https://github.com/Prometheus/pushgateway
二、PushGateway 部署
1,二进制包安装PushGateway
wget https://githubfast.com/prometheus/pushgateway/releases/download/v1.5.0/pushgateway-1.5.0.linux-amd64.tar.gz
tar zvxf pushgateway-1.5.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local
mv pushgateway-1.5.0.linux-amd64/ pushgateway
2,启动服务
./pushgateway
2.1,systemctl 管理pushgateway
vim /usr/lib/systemd/system/pushgateway.service
[Unit]
Description=pushgateway
After=network.target
[Service]
User=root
Type=simple
ExecStart=/usr/local/prometheus_exporter/pushgateway/pushgateway
Restart=on-failure
[Install]
WantedBy=multi-user.target
2.2,启动 pushgateway
systemctl daemon-reload
systemctl enable pushgateway
systemctl start pushgateway
2.3, 查看日志
journalctl -u pushgateway -fn 200
3,访问Pushgateway的web界面
http://192.168.168.12:9091
默认 Metrics 上没有数据展示,无节点向PushGateway 上推送数据。PushGateway 服务本身 Metrics
可以通过访问 http://:9091/metrics获取。Pushgateway每次只向Prometheus返回最后一次推送的数据,如果客户端一直没有推送新的指标到pushgateway,那么Prometheus将始终拉取最后push上来的数据。
三、接入Prometheus Server
1,编辑prometheus.yml文件
vim prometheus.yml
添加
- job_name: 'pushgateway'
scrape_interval: 30s
static_configs:
- targets: ['192.168.168.12:9091']
labels:
instance: pushgateway
honor_labels: true #避免收集数据本身的 job 和 instance被pushgateway实例信息覆盖
2,检查prometheus.yml文件格式
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
3,重启Prometheus或者热加载配置
systemctl restart prometheus
curl -X POST http://127.0.0.1:9090/-/reload
4,查看Prometheus的web界面
四、推送数据演示
1,API 方式 Push 数据到 PushGateway
1.1,通过 API 接口Push 数据至PushGateway
命令默认格式
http://:9091/metrics/job/{/<LABEL_NAME>/<LABEL_VALUE>}
<JOBNAME> 是必填项,为 job 标签值
1.2,Push 指标数据到 PushGateway 中测试
echo "pro_metric 80" | curl --data-binary @- http://192.168.168.12:9091/metrics/job/
1.3,在Pushgateway web界面中查看指标
除== pro_metric== 指标外,同时新增 push_time_seconds 和 push_failure_time_seconds 两个指标,是 PushGateway 系统自动生成的相关指标。
1.4,在Prometheus Server的web界面查询指标
下面这个pro_metric就是推送到Pushgateway上的指标查询语句PromQL,是Prometheus Server从Pushgateway拉取(pull)过来的
pro_metric
1.5,Push 一次写入多个指标,而且每个指标添加 TYPE 及 HELP 说明
cat <<EOF | curl --data-binary @- http://192.168.168.12:9091/metrics/job/test_job/instance/test_instance
# TYPE test_metrics counter
test_metrics{label="app1",name="demo"} 100.00
# TYPE another_test_metrics gauge
# HELP another_test_metrics Just an example.
another_test_metrics 123.45
EOF
1.6,Push 指标数据文件 pushgdata.txt 至 PushGateway
vim pushdata.txt
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 67548
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
推送数据文件
curl -XPOST --data-binary @pushdata.txt http://192.168.168.12:9091/metrics/job/app/instance/192.168.100.100-app
1.7,重复执行上述的1.3,1.4步查看对应指标
2,PushGateway API 删除指标 (也可通过PushGateway 删除Group)
2.1,删除 job=“test_job” 组下的所有指标值
curl -X DELETE http://192.168.168.12:9091/metrics/job/test_job
2.2,删除 job=“test_job” 组下test_instance指标
curl -X DELETE http://192.168.168.12:9091/metrics/job/test_job/instance/test_instance
3,Pushgateway 网络延迟指标案例
3.1,fping 编译安装
wget http://www.fping.org/dist/fping-5.0.tar.gz
tar -zxvf fping-5.0.tar.gz -C /usr/local/fping/
cd /usr/local/fping
./configure --prefix=/usr/local/fping --enable-ipv4 --enable-ipv6
make && make install
ln -s /usr/local/fping/sbin/fping /usr/sbin/fping
chmod u+s /usr/local/fping/sbin/fping
3.2,编写shell脚本
vim pushfping.sh
#!/bin/bash
#set -x
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
job="fping"
instance="www.cloudwise.com"
icmppingloss=`fping -q -c3 "$instance" 2>&1 |awk -F '[/ %]+' '{print $9}'`
icmppingsec=`fping -q -c3 "$instance" 2>&1 |awk -F '[/ %]+' '{print $16}'`
icmpping=`fping -q -c3 "$instance" 2>&1 |awk -F '=' '{print $2}' |awk -F '/' '{print $2}'`
cat <<EOF | curl --data-binary @- http://192.168.168.12:9091/metrics/job/$job/instance/$instance
# TYPE node_fping_usages gauge
node_fpingloss_usages $icmppingloss
node_fpingsec_usages $icmppingsec
node_fping_usages $icmpping
EOF
3.3,使用crontab定期执行脚本
crontab -e
* * * * * bash /usr/local/fping/pushfping.sh
3.4,Pushgateway Web
3.5,Prometheus Web
文章来源:https://www.toymoban.com/news/detail-807827.html
Prometheus PushGateway 注意事项
指标值只能是数字类型,非数字类型报错。
数据指标推送时间≤ Prometheus 拉取的时间,以保证Prometheus保证每次拉取的数据是最新 Push 上来的。
默认 PushGateway 不做数据持久化操作,当 PushGateway 重启或者异常挂掉,导致数据的丢失,可以通过启动时添加 -persistence.file 和 -persistence.interval 参数来持久化数据。-persistence.file 表示本地持久化的文件,将 Push 的指标数据持久化保存到指定文件,-persistence.interval 表示本地持久化的指标数据保留时间,若设置为 5m,则表示 5 分钟后将删除存储的指标数据。
指标值支持最大长度为 16 位,超过16 位后默认置为 0文章来源地址https://www.toymoban.com/news/detail-807827.html
到了这里,关于CentOS7中Prometheus PushGateway的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!