监控-自定义指标

pushgateway

prometheus默认是pullgateway的采集方法,主动去node节点服务器上采集数据,如果node节点服务器过多的情况下,会造成prometheus服务器负载过高,承受能力增加! 所以需要进行特殊的配置

pushgatewy介绍: pushgateway 是另⼀种采⽤被动推送的⽅式(⽽不是exporter 主动获取)获取监控数据的prometheus 插件 ! 运行方式:它是可以单独运⾏在 任何节点上的插件(并不⼀定要在被监 控客户端),也可以是单独的服务器,也可以和prometheus放在一台服务器上 采集方式: 通过⽤户⾃定义开发脚本 把需要监控的数据 发送给 pushgateway ,然后pushgateway 再把数据 推送给prometheus server API: 推送方式采用http方式推送,类似rest 推送的端口默认是9100,路径为:

# JOB_NAME: job标签       LABEL_NAME: 自定义标签
/metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}

pushgateway安装

wget https://github.com/prometheus/pushgateway/releases/download/v1.0.0/pushgateway-1.0.0.linux-amd64.tar.gz
tar zfx pushgateway-1.0.0.linux-amd64.tar.gz
cd pushgateway-1.0.0.linux-amd64 && ./pushgateway
或者使用daemonize 启动

如何使用

# 首先: 需要在 prometheus server 配置一下:这里我们的prometheus server 与 pushgateway安装在同一个服务器上
- job_name: 'pushgateway'
  static_configs:
    - targets: ['localhost:9091']
# pushgateway主要是以用户自定义脚本的形式来推送给pushgateway,那么这里我们写一个统计系统当中正在监听的连接数
[root@cloud shell]# cat node_shell.sh 
#!/bin/bash
# 定义来源地、标签
instance_name='192.168.1.134'
label="count_netstat_established_connections"
count_netstat_established_connections=$(netstat -antp |grep -i established|wc -l)

echo "$label $count_netstat_established_connections" |curl --data-binary @-http://192.168.1.134:9091/metrics/job/pushgateway/instance/$instance_name

  • http://192.168.1.134:9091/metrics/job/ 这里的IP地址是pushgateway服务器地址及端口,

  • job/pushgateway 跟这刚才在prometheus.yml 当中定义的job_name标签名字是一样的!

  • instance/$instance_name 推送后显示的机器名字是什么,可以自定义hostname(需要在prometheus服务器中hosts解析) 也可以使用服务器IP的地址

  • 这里综合意思就是:将定义的key values 以HTTP POST 的方式发送请求,并以纯二进制传输的方式发送给HTTP服务器器(pushgateway);

  • 1、只要服务器不当机 那么基本上 pushgateway运⾏还是很稳定的 就算有太多的脚本 同时都发送给⼀个pushgateway 其实也只是 接收的速度会变慢 丢数据没有遇到过

  • 2、其实只要我们在写脚本的时候 细⼼⼀些 别出错,那么 监控数据也不会有错

Last updated