Kubernetes监控体系(14)-prometheus使用pushgateway进行数据采集

1.Pushgateway简介

Pushgateway是prometheus的一个组件,prometheus server默认是通过exporter主动获取数据(默认采取pull拉取数据),pushgateway则是通过被动方式推送数据到prometheus server,用户可以写一些自定义的监控脚本把需要监控的数据发送给pushgateway, 然后pushgateway再把数据发送给Prometheus server

2.Pushgateway优点

  • Prometheus 默认采用定时pull 模式拉取targets数据,但是如果不在一个子网或者防火墙,prometheus就拉取不到targets数据,所以可以采用各个target往pushgateway上push数据,然后prometheus去pushgateway上定时pull数据
  • 在监控业务数据的时候,需要将不同数据汇总, 汇总之后的数据可以由pushgateway统一收集,然后由 Prometheus 统一拉取。

3.pushgateway缺点

  • Prometheus拉取状态只针对 pushgateway, 不能对每个节点都有效;
  • Pushgateway出现问题,整个采集到的数据都会出现问题
  • 监控下线,prometheus还会拉取到旧的监控数据,需要手动清理 pushgateway不要的数据。

4.安装pushgateway,在k8s-node节点(192.168.124.26)操作

在k8s-node节点操作

docker pull prom/pushgateway

docker run -d --name pushgateway -p 9091:9091 prom/pushgateway

在浏览器访问192.168.124.26:9091出现如下ui界面

5.修改prometheus-cfg.yaml文件,在k8s-master节点操作

添加如下job

- job_name: 'pushgateway'

      scrape_interval: 5s

      static_configs:

      - targets: ['192.168.124.26:9091']

  honor_labels: true

kubectl apply -f prometheus-cfg.yaml

kubectl delete -f prometheus-deploy.yaml

kubectl apply -f prometheus-deploy.yaml

在prometheus的targets列表可以看到pushgateway

 

 

 

6.推送指定的数据格式到pushgateway

6.1 向 {job="test_job"} 添加单条数据:

echo " metric 3.6" | curl --data-binary @- http://192.168.124.26:9091/metrics/job/test_job

 注:--data-binary 表示发送二进制数据,注意:它是使用POST方式发送的!

6.2 添加复杂数据

cat <<EOF | curl --data-binary @- http://192.168.124.26:9091/metrics/job/test_job/instance/test_instance

#TYPE node_memory_usage gauge

node_memory_usage 36

# TYPE memory_total gauge

node_memory_total 36000

EOF

删除某个组下某个实例的所有数据

curl -X DELETE http://192.168.124.26:9091/metrics/job/test_job/instance/test_instance

删除某个组下的所有数据:

curl -X DELETE http://192.168.124.26:9091/metrics/job/test_job

6.把数据上报到pushgateway

在被监控服务所在的机器配置数据上报

cat push.sh

node_memory_usages=$(free -m | grep Mem | awk '{print $3/$2*100}')

job_name="memory"
instance_name="192.168.124.26"

cat <<EOF | curl --data-binary @- http://192.168.124.26:9091/metrics/job/$job_name/instance/$instance_name
#TYPE node_memory_usages  gauge

node_memory_usages node_memory_usages
EOF

sh push.sh

打开pushgateway web ui界面,可看到如下:

 

打开prometheus ui界面,可看到如下memory_usage的metrics指标

 

设置计划任务,定时上报数据

crontab -e

*/1 * * * * /root/push.sh
chmod +x push.sh

注意:从上面配置可以看到,我们上传到pushgateway中的数据有job也有instance,而prometheus配置pushgateway这个job_name中也有job和instance,这个job和instance是指pushgateway实例本身,添加 honor_labels: true 参数, 可以避免promethues的targets列表中的job_name是pushgateway的 job 、instance 和上报到pushgateway数据的job和instance冲突。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值