当前位置: 代码网 > it编程>编程语言>Java > 安装配置pushgateway

安装配置pushgateway

2024年08月06日 Java 我要评论
Prometheus采用pull模式,可能由于不在一个子网或者防火墙原因导致Prometheus无法直接拉取各个target数据。在监控业务数据的时候,需要将不同数据汇总,由Prometheus统一收集。当exporter不能满足需要时,也可以通过自定义(python、shell、Java)监控我们想要的数据。将多个节点数据汇总到pushgateway,如果pushgateway挂了,受影响比多个target大。

环境

1、pushgateway简介

2、docker方式安装pushgateway

我是在prometheus服务器端安装的

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

3、在浏览器查看

访问本机ip加9091端口

4、对prometheus配置文件进行添加内容

在prometheus服务器端打开配置文件添加以下配置

vim prometheus/prometheus.yml

  - job_name: pushgateway
    honor_labels: true #加上此配置exporter节点上传数据中的一些标签将不会被pushgateway节点的相同标签覆盖。
    static_configs:
      - targets: ['192.168.1.144:9091']
        labels:
          instance: pushgateway

5、重新加载配置文件

curl -x post http://localhost:9090/-/reload

在浏览器访问prometheus服务器的ip加9090端口然后选择status然后选择targets查看

6、curl方式向pushgateway推送监控数据

使用curl:

正常情况我们会使用client推送数据到pushgateway但是我们还可以curl调用api来管理,例如:

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

echo "some_metric 3.14" | curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job

添加更多更复杂数据,通常数据会带上instance(some_instance为instance名)表示来源位置:

cat <<eof | curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job/some_job/instance/some_instance

# type some_metric counter

some_metric{label="val1"} 42

# type another_metric gauge

# help another_metric just an example.

another_metric 2398.283

eof

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

curl -x delete http://192.168.1.144:9091/metrics/job/some_job/instance/some_instance

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

curl -x delete http://192.168.1.144:9091/metrics/job/some_job

命令解释: echo "some_metric 3.14" | curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job

  1. echo "some_metric 3.14":这部分命令使用echo命令创建一个包含指标数据的字符串。在这个例子中,指标名称是some_metric,其值是3.14

  2. |:这是一个linux命令中的管道符号,它将前一个命令的输出作为后一个命令的输入。

  3. curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job:这部分命令使用curl命令将数据发送到指定的url。

  4. --data-binary @-选项告诉curl命令从标准输入中读取数据,并将其作为二进制数据发送。@-表示读取标准输入。

  5. http://192.168.1.144:9091/metrics/job/some_job是目标url,其中包含prometheus服务器的地址和端口以及要存储指标数据的job名称。

推送完数据后在浏览器刷新可以看的我们推送的数据

7、python方式向pushgateway推送监控数据我在140机器安装配置的

注:可以在prometheus服务器配置也可以在被监控端配置

安装prometheus_client模块

安装pip

yum install -y python3-pip                #centos安装

apt install -y python3-pip                 #ubunt安装

通过pip安装prometheus_client

pip3 install -y prometheus_client

创建一个python脚本加入以下内容

vim py.py

from prometheus_client import collectorregistry, gauge, push_to_gateway

registry = collectorregistry()
g = gauge('job_last_success_unixtime', 'last time a batch job successfully finished', registry=registry)
g.set_to_current_time()
push_to_gateway('http://192.168.1.144:9091', job='batcha', registry=registry)

注:如果是本机将http://192.168.1.144:9091改为localhost:9091

加载脚本文件

在浏览器查看

8、监控data数据目录下的文件数量

注:我是配置在140服务器上的centos系统

shell 脚本:

cat >>/opt/file_num.sh<<"eof"

#!/bin/sh

filenum=`ls -l /data |sed 1d| wc -l`

echo "data_file_num ${filenum}" | curl --data-binary @- http://192.168.1.144:9091/metrics/job/test_job/instance/test

eof

解释:

  1. 使用 ls -l /data 命令列出 /data 目录下的文件信息。
  2. 使用 sed 1d 命令删除列表中的第一行(即目录总计)。
  3. 使用 wc -l 命令统计剩余行数,即文件数量。
  4. 将输出结果与字符串 "data_file_num " 拼接,形成指标 "data_file_num 文件数量"。
  5. 使用 curl 命令将指标数据发送到 http://192.168.1.144:9091/metrics/job/test_job/instance/test。

配置定时任务:

crontab -e

*/1 * * * * /bin/sh /opt/file_num.sh >/dev/null 2>&1

如果是ubuntu系统按下面的

9、配置告警规则(在prometheus端配置)

例如:当data目录下的文件数量超过9,报警出来

因为之前我在prometheus.yaml文件中加了一个触发器文件

所以在rules文件中添加一个mongodb的触发器文件即可

在prometheus端创建一个mongodb的yml文件添加输入以下触发器内容

vim pushgateway.yml

groups:
- name: pushigateway
  rules:
  - alert: datafilenum
    expr: data_file_num > 9
    for: 0m
    labels:
      severity: warning
    annotations:
      summary: 'data数据目录文件过多'
      description: "data数据目录文件数>9,当前数量:{{ $value }}"

10、检查更新

检查配置

docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

重新加载配置

curl -x post http://localhost:9090/-/reload

在浏览器输入prometheus端的ip加9090端口选择alerts查看

11、添加到grafana图形化

进入grafana页面 在左上角选择 starred 然后在右上角选择new 然后选择new dashboard 会出现下面的页面

完成

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com