点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(已更完)
- DataX(已更完)
- Tez(已更完)
- 数据挖掘(已更完)
- Prometheus(正在更新...)
章节内容
上节我们完成了如下的内容:
- Prometheus 安装配置
- 启动服务
- 监控服务
官方网站
目前我们需要安装 exporter,我们的机器是 Rocky Linux,当然其他类 CentOS 也可以,我们需要用 node_exporter 来提供监控。
这里 Prometheus 已经提供好了:
shell
https://prometheus.io/download/
页面需要往下滚动,找到对应的内容:
下载配置
shell
cd /opt/software
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
执行结果如下图所示:
解压配置
shell
cd /opt/software
tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz
mv node_exporter-1.8.2.linux-amd64 ../servers/
部分内容如下图所示:
启动服务
shell
cd /opt/servers/node_exporter-1.8.2.linux-amd64
./node_exporter
执行结果如下图所示:
访问服务
我们访问刚才的 targets,可以看到 h121-wzk-icu 已经 UP 了:
PushGateway
基本介绍
Prometheus Pushgateway 是一个用于帮助 Prometheus 监控短期任务和批处理任务的组件。在 Prometheus 的原生拉取模型中,它通常通过定期从各服务中"拉取"指标。然而,对于一些存在于短时间内的工作任务或批处理任务,比如脚本或批处理作业,它们可能在 Prometheus 下一次拉取前就已经完成并消失了,这种模型不适用。因此,Prometheus 提供了 Pushgateway 作为这些短暂任务的解决方案。
综上,PushGateway 是 Prometheus 生态中的一个重要的工具,使用它的主要原因是:
- Prometheus 采用 PULL 模式,可能由不再一个子网或者防火墙的原因,导致 Prometheus无法直接拉去各个 Target 数据
- 在监控业务数据的时候,需要将不同数据汇总,由 Prometheus 统一收集。
由于以上的原因,不得不使用 PushGateway,但在使用之前,有必要了解一下弊端:
- 将多个节点数据汇总到 PushGateway,如果它挂了,受到影响节点比多个 Target 大。
- Prometheus 拉去状态 UP 只针对 PushGateway,无法做到对每个节点都生效
- PushGateway 可以持久化推送给它的所有监控数据
Pushgateway 允许应用程序将数据主动推送到一个中介,之后 Prometheus 可以从中提取数据并存储到时间序列数据库中。这对短期的、瞬态的批处理任务特别有用,例如:
- 定期运行的批处理任务(如夜间作业)
- 编译和打包任务
- 自动化的备份任务
- 临时的数据库迁移脚本等
因此,即使你的监控已经下线,Prometheus 还会拉取旧的监控数据,需要手动清理 PushGateway 不要的数据。
工作流程
- 任务或批处理作业启动:任务或作业在运行过程中生成指标数据。
- 推送到 Pushgateway:在作业结束时,作业将指标推送到 Pushgateway。
- Prometheus 拉取数据:Prometheus 定期从 Pushgateway 拉取数据,记录在数据库中。
- 显示在监控系统:指标数据可以在 Grafana 等监控系统中进行展示和分析。
注意事项
- 持久性问题:Pushgateway 默认不持久化数据,重启后数据会丢失。可以使用磁盘持久化来保存指标。
- 数据过时问题:Pushgateway 适合单次批量数据推送,而不是长期的服务健康监测。如果批处理任务没有新的数据推送,Prometheus 也不会自动将旧数据删除,可能会导致监控面板显示过时数据。因此,推荐通过 push_time_seconds 标签来跟踪数据的推送时间。
- 避免泛用:Pushgateway 适用于短期任务,不建议用于长期任务监控,否则可能造成数据过时以及系统负担。
拓扑图
对应的拓扑图如下:
官方地址
shell
https://prometheus.io/download/#pushgateway/
对应的内容如下图所示:
下载配置
shell
cd /opt/software
wget https://github.com/prometheus/pushgateway/releases/download/v1.10.0/pushgateway-1.10.0.linux-amd64.tar.gz
执行结果如下图所示:
解压配置
shell
cd /opt/software
tar -zxvf pushgateway-1.10.0.linux-amd64.tar.gz
mv pushgateway-1.10.0.linux-amd64 ../servers/
对应的内容如下所示:
配置服务
shell
cd /opt/servers/pushgateway-1.10.0.linux-amd64
我们需要将 pushgateway 放置到 Prometheus 中:
shell
cp pushgateway ../prometheus-2.53.2.linux-amd64/
chmod +x pushgateway
此外,我们还需要修改配置文件:
shell
vim prometheus.yml
将 pushgateway 配置进去:(如果你之前跟着上文配置了, 这里就不需要了,已经配置过了)
yaml
- job_name: "wzk-icu-grafana"
static_configs:
- targets: ["h121.wzk.icu:9091"]
对应的内容如下所示:
使用场景
- CI/CD 流程中的指标监控:Pushgateway 可以在 Jenkins、GitLab CI 等工具的管道中用于推送编译、测试、发布的状态数据。
- 自动化脚本和批处理任务:自动化作业完成后推送成功或失败状态,便于实时跟踪系统作业执行情况。
- 批量数据处理作业:批处理工作如 Spark、Flink 等完成特定任务后,将关键的作业数据推送到 Pushgateway,确保执行的详细状态能够被监控到。
Pushgateway 是 Prometheus 中一个重要的扩展工具,适合短期作业和批处理任务的监控。它不适合长期监控使用,但在大规模数据处理或 DevOps 场景中,Pushgateway 可以确保 Prometheus 捕获到所有任务数据,并提升监控的覆盖率和有效性。