当前位置: 首页 > news >正文

关于prometheus的一些简单的理解和总结

一、pushgateway和Node Exporter区别

1.Pushgateway

  • 数据采集方式:传统的 Prometheus 是通过拉取(pull)的方式从目标系统获取监控指标数据。而 Pushgateway 允许客户端主动推送(push)指标数据到它这里,然后 Prometheus 再从 Pushgateway 拉取数据 。这种方式打破了 Prometheus 只能主动拉取数据的限制,适用于那些无法被 Prometheus 直接拉取数据的场景,比如一些短生命周期的任务(如一次性的批处理作业),这些任务运行时间短,Prometheus 可能来不及去拉取数据,任务就结束了,此时就可以将任务的指标数据推送到 Pushgateway。
  • 适用场景
    • 批处理任务监控:像每天定时执行的数据库备份脚本、数据清洗作业等,在任务执行完成后,将执行状态(成功或失败次数)、耗时、处理的数据量等指标推送到 Pushgateway。
    • 网络隔离环境:当目标系统处于严格的网络隔离环境,无法与 Prometheus 直接通信时,可以在允许的网络区域部署 Pushgateway,目标系统将数据推送到 Pushgateway,再由 Pushgateway 提供给 Prometheus。
  • 数据持久性:Pushgateway 中的数据默认是临时存储的,它不保证数据的长期保存。如果 Pushgateway 重启或者客户端长时间不推送新数据,之前的数据可能会过期被删除。
  • 默认监听端口:9091

安装配置方法:

在安装prometheus主机上的vim /usr/local/prometheus/conf/prometheus.yml里面添加下面的内容
客户端主机上需要安装上
Pushgateway
方法1:静态发现

  - job_name: "pushgateway"honor_labels: true  # 可选项,设置为true,Prometheus将使用Pushgateway上的job和instance标签。# 如果设置为false,它将重命名这些值,在它们前面加上exported_前缀,并在服务器上为这些标签附加新值。scrape_interval: 10s  # 可选项static_configs:- targets: ["10.0.0.101:9091"]  # 目标Pushgateway服务器地址

客户端主机上安装Pushgateway 略 可以从github上进行下载解压
执行脚本以客户端为10.0.0.101为例

#!/bin/bash# Configuration
METRIC_NAME="login_number"
METRIC_VALUE_CMD="who | wc -l"
METRIC_TYPE="gauge"
METRIC_HELP="login user number"# Optional metric (commented out)
# METRIC_NAME="mem_free"
# METRIC_VALUE_CMD="free -b | awk 'NR==2{print \$4}'"
# METRIC_TYPE="gauge"
# METRIC_HELP="free memory"# Pushgateway settings
PUSHGATEWAY_HOST="10.0.0.101:9091"
EXPORTED_JOB="pushgateway_job"
INSTANCE=$(hostname -I | awk '{print $1}')
SLEEP_TIME=1# Construct cURL command
CURL_URL="curl --silent --data-binary @- http://${PUSHGATEWAY_HOST}/metrics/job/${EXPORTED_JOB}/instance/${INSTANCE}"# Function to push metrics
push_metric() {while true; doVALUE=$(eval "$METRIC_VALUE_CMD")# Send metrics to Pushgatewaycat <<EOF | $CURL_URL
# HELP ${METRIC_NAME} ${METRIC_HELP}
# TYPE ${METRIC_NAME} ${METRIC_TYPE}
${METRIC_NAME} ${VALUE}
EOF# Add error handlingif [ $? -ne 0 ]; thenecho "[$(date)] Failed to push metric ${METRIC_NAME}" >&2fisleep $SLEEP_TIMEdone
}# Start pushing metrics
push_metric

方法2:文件形式的自动发现

  - job_name: pushgatewayhonor_labels: truefile_sd_configs:- files:- targets/pushgateway/*.jsonrefresh_interval: 5m
#pushgateway目标:
vim /usr/local/prometheus/conf/targets/pushgateway/test.json
[{"targets": ["10.0.0.1019091"]}]

2.Node Exporter

  • 数据采集方式:Node Exporter 遵循 Prometheus 拉取数据的模型,它在目标主机上运行,暴露 HTTP 接口,当 Prometheus 按照配置的抓取任务和时间间隔来请求该接口时,Node Exporter 会将主机的系统指标(如 CPU 使用率、内存使用量、磁盘 I/O、网络流量等)以 Prometheus 可识别的格式返回。
  • 适用场景:主要用于长期监控服务器主机的系统资源使用情况。无论是物理服务器、虚拟机还是容器环境中的主机,Node Exporter 都能持续提供详细的基础性能指标,方便运维人员实时掌握主机的运行状态,进行性能分析、故障排查以及容量规划等工作 。
  • 数据持久性:Node Exporter 本身不负责数据的持久化存储,它只是定期将采集到的指标提供给 Prometheus,由 Prometheus 进行数据的存储和管理。
  • 默认监听端口:9100

安装和配置方法:

在安装prometheus主机上的vim /usr/local/prometheus/conf/prometheus.yml里面添加下面的内容
同时按照下面的例子,101,102主机上需要安装上node_exporter

 - job_name: 'node_exporter'static_configs:- targets: ['10.0.0.101:9100','10.0.0.102:9100']

3.两者对比总结

  • 数据流向:Pushgateway 是客户端推数据到它,再由 Prometheus 拉取;Node Exporter 是 Prometheus 直接从它拉取数据 。
  • 应用场景:Pushgateway 针对特殊场景(短任务、网络受限等)的数据采集;Node Exporter 专注于主机系统指标的长期、稳定采集。
  • 数据性质:Pushgateway 数据临时、动态变化大;Node Exporter 数据相对稳定、持续产生。

简单来说,虽然它们都服务于 Prometheus 的数据采集,但 Pushgateway 拓展了 Prometheus 的数据采集方式,而 Node Exporter 则是 Prometheus 进行主机监控的重要组件。

二、PromQL运算

对于PromQL来说,它的操作符号主要有以下两类:
①二元运算符
https://prometheus.io/docs/prometheus/latest/querying/operators/
②聚合运算
https://prometheus.io/docs/prometheus/latest/querying/operators/

rate irate 函数
都表示变化速率,但有所不同。
rate函数可以用来求指标的平均变化速率
rate函数=时间区间前后两个点的差 / 时间范围
irate
函数=时间区间内最后两个样本点的差 / 最后两个样本点的时间差
一般情况下,irate函数的图像峰值变化大,rate函数变化较为平缓。

http://www.xdnf.cn/news/1151533.html

相关文章:

  • 1Panel中的OpenResty使用alias
  • 【Java源码阅读系列56】深度解读Java Constructor 类源码
  • SSH 密钥
  • C++ :vector的模拟
  • Oracle RU19.28补丁发布,一键升级稳
  • Python爬虫实战:研究psd-tools库相关技术
  • web前端渡一大师课 02 浏览器渲染原理
  • RESTful API设计与实现指南
  • 锂电池充电芯片
  • 从丢包到恢复:TCP重传机制的底层逻辑全解
  • 基于单片机智能插座设计/智能开关
  • MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成
  • 大模型军备竞赛升级!Grok 4 携 “多智能体内生化” 破局,重构 AI 算力与 Agent 2.0 时代
  • 如何快速学习一门新技术
  • 用户中心项目实战(springboot+vue快速开发管理系统)
  • 【黑马SpringCloud微服务开发与实战】(三)微服务01
  • LangGraph是一个基于图计算的大语言模型应用开发框架
  • 敏感词 v0.27.0 新特性之词库独立拆分
  • 数字图像处理(三:图像如果当作矩阵,那加减乘除处理了矩阵,那图像咋变):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
  • 《计算机网络》实验报告二 IP协议分析
  • leetcode3_435 and 605
  • 【Linux服务器】-zabbix通过proxy进行分级监控
  • 子线程不能直接 new Handler(),而主线程可以
  • sql练习二
  • 打靶日记之xss-labs
  • OpenCV 官翻 4 - 相机标定与三维重建
  • 如何设计一个软件项目管理系统:架构设计合集(六)
  • 小明记账簿焕新记:从单色到多彩的主题进化之路
  • Java并发8--并发安全容器详解
  • Springboot项目的搭建方式5种