15.prometheus之pushgateway自定义监控
一、Pushgateway
1.Pushgateway简介
Pushgateway 是 Prometheus 生态中一个重要工具,使用它的原因主要是: ● Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。
● 在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
● 当exporter不能满足需要时,也可以通过自定义(python、shell、java)监控我们想要的数据。 由于以上原因,不得不使用 pushgateway,但在使用之前,有必要了解一下它的一些弊端: ● 将多个节点数据汇总到 pushgateway, 如果 pushgateway 挂了,受影响比多个 target 大。
● Prometheus 拉取状态 up 只针对 pushgateway, 无法做到对每个节点有效。
● Pushgateway 可以持久化推送给它的所有监控数据。 因此,即使你的监控已经下线,prometheus 还会拉取到旧的监控数据,需要手动清理 pushgateway 不要的数据。
2. 二进制安装
官网下载地址https://prometheus.io/download/
wget https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz tar xf pushgateway-1.5.1.linux-amd64.tar.gz
ls -l
mv pushgateway-1.5.1.linux-amd64 /opt/pushgateway
ls -l /opt/pushgateway # 更改pushgateway文件夹权限:
chown prometheus:prometheus -R /opt/pushgateway # 创建 systemd 服务
cat >/etc/systemd/system/pushgateway.service << "EOF" [Unit]
Description=Prometheus Push Gateway
After=network.target [Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/opt/pushgateway/pushgateway
[Install]
WantedBy=multi-user.target
EOF systemctl daemon-reload
systemctl start pushgateway.service
systemctl enable pushgateway.service
3. docker 安装
docker run -d -p 9091:9091 --restart=always --name pushgateway prom/pushgateway cat >docker-compose.yaml <<EOF
version: '3.3'
services:
pushgateway:
image: prom/pushgateway
container_name: pushgateway
restart: always
expose:
- 9091
ports:
- "9091:9091"
EOF
docker-compose up -d
4.Prometheus配置
去pull拉取pushgateway收集到的数据。
#进入到prometheus安装目录
cd /data/docker-prometheus
通过cat在prometheus.yml文件末尾添加
cat >> prometheus/prometheus.yml <<"EOF"
- job_name: pushgateway
honor_labels: true #加上此配置,exporter节点上传数据中的一些标签将不会被pushgateway节点的相同标签覆盖
static_configs:
- targets: ['192.168.10.100:9091']
labels:
instance: pushgateway
EOF
重新加载配置:
curl -X POST http://localhost:9090/-/reload
查看:http://192.168.10.14:9090/targets?search=
5.向pushgateway推送监控数据
使用curl
正常情况我们会使用 Client SDK 推送数据到 pushgateway, 但是我们还可以curl调用 API 来管理, 例如:
● 向 {job="some_job"} 添加单条数据:
echo "some_metric 3.14" | curl --data-binary @- http://192.168.10.100:9091/metrics/job/some_job
添加更多更复杂数据,通常数据会带上 instance(some_instance为instance名), 表示来源位置:
cat <<EOF | curl --data-binary @- http://192.168.10.100:9091/metrics/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.10.100:9091/metrics/job/some_job/instance/some_instance
删除某个组下的所有数据:
curl -X DELETE http://192.168.10.100:9091/metrics/job/some_job
检查
http://192.168.10.14:9090/graph
http://192.168.10.100:9091/metrics
5.1 使用python
安装prometheus_client模块
安装pip
apt install python3-pip
pip install prometheus_client
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('192.168.10.100:9091', job='batchA', registry=registry)
6.监控data数据目录下的文件数量(需求)
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.10.100:9091/metrics/job/test_job/instance/test
EOF # 定时任务
*/1 * * * * /bin/sh /opt/file_num.sh >/dev/null 2>&1 # python脚本
cat >>/opt/file_num.py<<"EOF"
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
import os path = '/data' # 输入文件夹地址
files = os.listdir(path) # 读入文件夹
num_png = len(files) # 统计文件夹中的文件个数 registry = CollectorRegistry()
g = Gauge('python_data_file_num', 'data file num', ['instance'], registry=registry)
g.labels('test').set(num_png)
push_to_gateway('192.168.10.100:9091', job='test_job', registry=registry)
EOF # 定时任务
*/1 * * * * /usr/bin/python3 /opt/file_num.py >/dev/null 2>&1
7.配置告警规则
例如:当data目录下的文件数量超过5,报警出来
cat >> prometheus/rules/pushgateway.yml <<"EOF"
groups:
- name: pushgateway
rules:
- alert: DataFileNum
expr: data_file_num > 5
for: 0m
labels:
severity: warning
annotations:
summary: 'data数据目录文件数过多'
description: "data数据目录文件数>5,当前数量:{{ $value }}"
EOF # 重载配置
curl -X POST http://localhost:9090/-/reload
8.grafana添加图形
15.prometheus之pushgateway自定义监控的更多相关文章
- prometheus自定义监控指标——实战
上一节介绍了pushgateway的作用.优劣以及部署使用,本机通过几个实例来重温一下自定义监控指标是如何使用的. 一.监控容器启动时间(shell) 使用prometheus已经两个月了,但从未找到 ...
- prometheus自定义监控指标——入门
grafana结合prometheus提供了大量的模板,虽然这些模板几乎监控到了常见的监控指标,但是有些特殊的指标还是没能提供(也可能是我没找到指标名称).受zabbix的影响,自然而然想到了自定义监 ...
- Prometheus Operator自定义监控项
Prometheus Operator默认的监控指标并不能完全满足实际的监控需求,这时候就需要我们自己根据业务添加自定义监控.添加一个自定义监控的步骤如下: 1.创建一个ServiceMonitor对 ...
- 简单4步,利用Prometheus Operator实现自定义指标监控
本文来自Rancher Labs 在过去的文章中,我们花了相当大的篇幅来聊关于监控的话题.这是因为当你正在管理Kubernetes集群时,一切都会以极快的速度发生变化.因此有一个工具来监控集群的健康状 ...
- Prometheus自定义监控内容
Prometheus自定义监控内容 一.io.micrometer的使用 1.1 Counter 1.2 Gauge 1.3 Timer 1.4 Summary 二.扩展 相关内容原文地址: 博客园: ...
- Golang 基于Prometheus Node_Exporter 开发自定义脚本监控
Golang 基于Prometheus Node_Exporter 开发自定义脚本监控 公司是今年决定将一些传统应用从虚拟机上迁移到Kubernetes上的,项目多而乱,所以迁移工作进展缓慢,为了建立 ...
- 基于Prometheus的Pushgateway实战
一.Pushgateway 简介 Pushgateway 是 Prometheus 生态中一个重要工具,使用它的原因主要是: Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙 ...
- Grafana+Prometheus 搭建 JuiceFS 可视化监控系统
作为承载海量数据存储的分布式文件系统,用户通常需要直观地了解整个系统的容量.文件数量.CPU 负载.磁盘 IO.缓存等指标的变化. JuiceFS 没有重复造轮子,而是通过 Prometheus 兼容 ...
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- 理解OpenShift(7):基于 Prometheus 的集群监控
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
随机推荐
- 记录--前端实现文件预览(pdf、excel、word、图片)
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前端实现文件预览功能 需求:实现一个在线预览pdf.excel.word.图片等文件的功能. 介绍:支持pdf.xlsx.docx.jpg ...
- MySQL报语法错误,排查竟然花了一个钟!!!!
背景:最近协助远程同事开发一个功能,我调用同事写的接口,出现报错,影响和前端联调,同事正在处理其他事情,暂时无暇顾及.遂自行解决.查看日志现发一个inser语句报语法错误. 异常日志: bad SQL ...
- Java中一个逐渐被遗忘的强大功能,强到你难以置信!!
大家好,我是冰河~~ 说起Java,简单好用,但是Java中很多牛逼的技术却逐渐被遗忘了~~ 在Java语言出现之前,很多系统都是使用C和C++开发的.Java出现之后,由于其面向对象的思想更加符合人 ...
- DevOps迈向标准化,平台工程让开发运维更轻松
在近一代人的时间里,DevOps 在软件开发和运维领域占据了主导地位.这是一套开发人员都离不开的技能和方法.Pearl Zhu 在 "The Digital Master" 一书中 ...
- 关于tomcat容器抛出的异常解决方案之一
1,描述 问题类型:调试信息泄露 如: 现要求:前端页面不显示调试信息. 解决方案: 替换默认的tomcat <dependency> <groupId>org.springf ...
- Circle Loss:从统一的相似性对的优化角度进行深度特征学习 | CVPR 2020 Oral
论文提出了Circle loss,不仅能够对类内优化和类间优化进行单独地处理,还能根据不同的相似度值调整对应的梯度.总体而言,Circle loss更灵活,而且优化目标更明确,在多个实验上都有较好的表 ...
- Jetpack Compose(4)——重组
目录 一.状态变化 1.1 状态变化是什么 1.2 mutableStateListOf 和 mutableStateMapOf 二.重组的特性 2.1 Composable 重组是智能的 2.2 C ...
- 使用OHOS SDK构建mimalloc
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone https://github.com/microsoft/mimalloc.git ...
- 使用pillow制作长图
这是来自一个妹子的需求,需要将多张图片拼接成一张长图 我是使用pillow这个库来实现的,下面的简单的代码,操作比较简单,代码还有优化的空间 def test(dirpath): ims = [Ima ...
- Rome反序列化链分析
环境搭建 <dependencies> <dependency> <groupId>junit</groupId> <artifactId> ...