# 监控-自定义指标



### pushgateway

> prometheus默认是pullgateway的采集方法，主动去node节点服务器上采集数据，如果node节点服务器过多的情况下，会造成prometheus服务器负载过高，承受能力增加！ 所以需要进行特殊的配置
>
> pushgatewy介绍： pushgateway 是另⼀种采⽤被动推送的⽅式（⽽不是exporter 主动获取）获取监控数据的prometheus 插件 ！ 运行方式：它是可以单独运⾏在 任何节点上的插件（并不⼀定要在被监 控客户端），也可以是单独的服务器，也可以和prometheus放在一台服务器上 采集方式： 通过⽤户⾃定义开发脚本 把需要监控的数据 发送给 pushgateway ，然后pushgateway 再把数据 推送给prometheus server API: 推送方式采用http方式推送，类似rest 推送的端口默认是9100，路径为：
>
> ```bash
> # JOB_NAME: job标签       LABEL_NAME: 自定义标签
> /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}
> ```

### **pushgateway安装**

```bash
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 启动
```

### 如何使用

```bash
# 首先： 需要在 prometheus server 配置一下：这里我们的prometheus server 与 pushgateway安装在同一个服务器上
- job_name: 'pushgateway'
  static_configs:
    - targets: ['localhost:9091']
```

```bash
# 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)；

![](https://2134947750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvILwbD2PrkBCkSitM3m4%2Fuploads%2FWUGyxV5OCufXrh9lOPqu%2Fclipboard.png?alt=media\&token=914ae654-6c90-45a4-bf84-6104f9dac9e6)

![](https://2134947750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvILwbD2PrkBCkSitM3m4%2Fuploads%2FCFQ6C5Gemoj4rqucvzRo%2Fclipboard-1620025170501.png?alt=media\&token=5a948854-8105-4b27-9cc4-3e98bb09ce9b)



* 1、只要服务器不当机 那么基本上 pushgateway运⾏还是很稳定的 就算有太多的脚本 同时都发送给⼀个pushgateway 其实也只是 接收的速度会变慢 丢数据没有遇到过
* 2、其实只要我们在写脚本的时候 细⼼⼀些 别出错，那么 监控数据也不会有错
