热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pushgateway部署

Pushgateway简介Pushgateway是Prometheus生态中一个重要工具,使用它的原因主要是:Prometheus采用pull模式,可能由于不在一个子网或者防火墙原

Pushgateway 简介

Pushgateway 是 Prometheus 生态中一个重要工具,使用它的原因主要是:



  • Prometheus 采用pull模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。

    在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。

由于以上原因,不得不使用pushgateway,但在使用之前,有必要了解一下它的一些弊端:



  • 将多个节点数据汇总到 pushgateway, 如果 pushgateway 挂了,受影响比多个 target 大。

    Prometheus 拉取状态 up 只针对 pushgateway, 无法做到对每个节点有效。



  • Pushgateway可以持久化推送给它的所有监控数据。



因此,即使你的监控已经下线,prometheus 还会拉取到旧的监控数据,需要手动清理 pushgateway 不要的数据。



  • 下载Pushgateway:

cd /opt/prometheus_exporter
# wget https://github.com/prometheus/pushgateway/releases/download/v0.4.0/pushgateway-0.4.0.linux-amd64.tar.gz
wget https://github.com/prometheus/pushgateway/releases/download/v1.4.2/pushgateway-1.4.2.linux-amd64.tar.gz
tar -zxvf pushgateway-1.4.2.linux-amd64.tar.gz
mv pushgateway-1.4.2.linux-amd64 pushgateway_exporter
chown -R prometheus:prometheus /opt/prometheus_exporter/


  • 安装Pushgateway:

chown -R prometheus:prometheus /opt/prometheus_exporter/
# 使用systemd进行管理blackbox_exporter服务
vim /usr/lib/systemd/system/pushgateway.service

[Unit]
Description=pushgateway
After=network.target
[Service]
User=root
Type=simple
ExecStart=/opt/prometheus_exporter/pushgateway_exporter/pushgateway
Restart=on-failure
[Install]
WantedBy=multi-user.target


  • 启动pushgateway:

# 重新加载并启动
systemctl daemon-reload
systemctl enable pushgateway && systemctl start pushgateway
systemctl status pushgateway
[root@prometheus pushgateway]# netstat -lntp | grep pushgateway
tcp6 0 0 :::9091 :::* LISTEN 16498/blackbox_expo

# 查看日志
journalctl -u pushgateway -fn 200


  • 浏览器访问:

http://XX.XX.XX.XX:9091/metrics

[root@prometheus pushgateway_exporter]# curl http://localhost:9091/metrics | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 602# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
6# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 2.4241e-05
go_gc_duration_seconds{quantile="0.25"} 2.4241e-05
go_gc_duration_seconds{quantile="0.5"} 0.00058479
go_gc_duration_seconds{quantile="0.75"} 0.00058479
0go_gc_duration_seconds{quantile="1"} 0.00058479
go_gc_duration_seconds_sum 0.000609031
go_gc_duration_seconds_count 2
6# HELP go_goroutines Number of goroutines that currently exist.
026 0 0 999k 0 --:--:-- --:--:-- --:--:-- 1176k
(23) Failed writing body
[root@prometheus pushgateway_exporter]#

[root@prometheus pushgateway_exporter]# curl http://localhost:9115/metrics | grep 'pushgateway'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8520 0 8520 0 0 1571k 0 --:--:-- --:--:-- --:--:-- 1664k


  • 修改prometheus配置,添加pushgateway

vim prometheus.yml

- job_name: 'pushgateway'
honor_labels: true #避免收集数据本身的 job 和 instance被pushgateway实例信息覆盖
static_configs:
- targets: ['localhost:9091']
labels:
instance: pushgateway


  • 重启prometheus

systemctl restart prometheus

数据管理

正常情况我们会使用 Client SDK 推送数据到 pushgateway, 但是我们还可以通过 API 来管理, 例如:



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

echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job


  • 添加更多更复杂数据,通常数据会带上 instance, 表示来源位置:

cat <# 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://pushgateway.example.org:9091/metrics/job/some_job/instance/some_instance


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

curl -X DELETE http://pushgateway.example.org:9091/metrics/job/some_job

可以发现 pushgateway 中的数据我们通常按照 job 和 instance 分组分类,所以这两个参数不可缺少。

因为 Prometheus 配置 pushgateway 的时候,也会指定 job 和 instance, 但是它只表示 pushgateway 实例,不能真正表达收集数据的含义。所以在 prometheus 中配置 pushgateway 的时候,需要添加 honor_labels: true 参数,

从而避免收集数据本身的 job 和 instance 被覆盖。

注意,为了防止 pushgateway 重启或意外挂掉,导致数据丢失,我们可以通过 -persistence.file 和 -persistence.interval 参数将数据持久化下来。



推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南
    提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 本章节深入探讨了 Webpack 命令的高级功能,涵盖了官方快速入门教程中未涉及的细节。通过实际操作和案例分析,对官方文档进行了详细解读与补充,帮助读者更好地理解和应用这些进阶技巧。 ... [详细]
  • 系统管理员可以通过多种方法实时监控Linux系统中的用户活动,包括当前已登录的用户及其正在进行的操作。利用特定的命令和工具,管理员可以轻松获取这些信息,确保系统的安全性和稳定性。例如,使用`who`、`w`或`last`等命令可以快速查看当前登录的用户及其活动详情。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
author-avatar
dazhi20
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有