CentOS7中Prometheus PushGateway的使用


系列文章

第一章:超详细 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_secondspush_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

在这里插入图片描述

Prometheus PushGateway 注意事项

指标值只能是数字类型,非数字类型报错
数据指标推送时间≤ Prometheus 拉取的时间,以保证Prometheus保证每次拉取的数据是最新 Push 上来的。
默认 PushGateway 不做数据持久化操作,当 PushGateway 重启或者异常挂掉,导致数据的丢失,可以通过启动时添加 -persistence.file 和 -persistence.interval 参数来持久化数据。-persistence.file 表示本地持久化的文件,将 Push 的指标数据持久化保存到指定文件,-persistence.interval 表示本地持久化的指标数据保留时间,若设置为 5m,则表示 5 分钟后将删除存储的指标数据。
指标值支持最大长度为 16 位,超过16 位后默认置为 0

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于MySQL+Vue.js开发集成实时聊天系统的动态项目管理web端软件源码+答辩PPT+使用说明.zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程,如有问题或建议,请及时私信沟通,帮助解答。 2.项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、项目初期立项演示等用途。 4.如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能。 基于MySQL+Vue.js开发集成实时聊天系统的动态项目管理web端软件源码+答辩PPT+使用说明.zip 部署前端服务 1. 打包前端文件生成 dist 文件夹 ```js // genal-chat-client npm i npm run build ``` 1. 将 dist 下所有文件放到 nginx 下的 html 文件夹 2. 配置 nginx 的 gzip (提高传输速度)和请求级别(注意只是新增下面的代码,不是替换整个nginx文件) ```js 记得重启一下nginx #### 数据库配置 1. 安装 mysql 2. 设置 mysql 账号密码 3. 创建名为 `chat` 的数据库 4. 配置后端 `app.module.ts` 的 mysql 账号密码 部署后端服务 1. 安装 pm2 ```js // genal-chat-server npm i pm2 -g ``` 2. 生成 dist 文件 ```js // genal-chat-server npm i npm run build ``` 3. 使用 pm2 运行 ```js // genal-chat-server npm run pm2 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值