Prometheus 使用 PushGateway 进行数据上报采集

文章目录

    • 1、PushGateway 介绍
    • 2、环境、软件准备
    • 3、PushGateway 安装配置
      • 3.1、二进制包安装
      • 3.2、Docker 安装
    • 4、API 方式 Push 数据到 PushGateway
    • 5、用 Client SDK Push 数据到 Pushgateway 示例
    • 6、使用 PushGateway 注意事项

1、PushGateway 介绍

Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。Prometheus 基本原理是通过 Http 协议周期性抓取被监控组件的状态,而输出这些被监控的组件的 Http 接口为 Exporter。PushGateway 作为 Prometheus 生态中的一个重要一员,它允许任何客户端向其 Push 符合规范的自定义监控指标,在结合 Prometheus 统一收集监控。

PushGateway 使用场景:

  • Prometheus 采用定时 Pull 模式,可能由于子网络或者防火墙的原因,不能直接拉取各个 Target 的指标数据,此时可以采用各个 Target 往 PushGateway 上 Push 数据,然后 Prometheus 去 PushGateway 上定时 pull。
  • 其次在监控各个业务数据时,需要将各个不同的业务数据进行统一汇总,此时也可以采用 PushGateway 来统一收集,然后 Prometheus 来统一拉取。

2、环境、软件准备

本次演示环境,我是在虚拟机上安装 Linux 系统来执行操作,以下是安装的软件及版本:

  • Oracle VirtualBox: 5.1.20 r114628 (Qt5.6.2)
  • System: CentOS Linux release 7.3.1611 (Core)
  • Docker: 18.06.1-ce
  • Prometheus: v2.11.1
  • PushGateway: 1.0.0

注意:这里为了快速方便启动 Prometheus、PushGateway 服务,我使用 Docker 方式启动,所以本机需要安装好 Docker 环境,这里忽略 Docker 的安装过程。其中 Prometheus 安装配置,可以参照之前文章 Prometheus 监控报警系统 AlertManager 之邮件告警,这里着重介绍一下如何启动并配置 PushGateway 并配置数据上报到 Prometheus。

3、PushGateway 安装配置

PushGateway 安装很简单,可以使用二进制包解压安装服务,也可以使用 Docker 启动服务。

3.1、二进制包安装

二进制包安装方式,直接从 官方 Github 下载最新二进制安装包,解压即可。

使用命令 命令即可启动服务,此时浏览器访问 即可访问 UI 页面,只不过默认 Metrics 上没有任何数据展示,那是因为我们还没有往 PushGateway 上推送任何数据。

Prometheus 使用 PushGateway 进行数据上报采集

3.2、Docker 安装

使用 Docker 方式安装启动就更简单了,直接获取最新版官方镜像 启动命令如下:

启动完毕后,同上方法验证是否启动成功。这里为了方便演示,我采用 Docker 方式启动 PushGateway。

OK,现在 PushGateway 服务已经启动完毕,但是还没有跟 Prometheus 关联起来,我们需要的是通过 PushGateway 来上传自定义监控数据,然后通过 Prometheus 采集这些数据来进行监控。那么就需要将 PushGateway 添加到 Prometheus 目标任务中去,增加 配置如下:

说明一下,这里采用 静态配置方式,因为目前就一个 PushGateway,如果有多个可以考虑其他服务发现方式,来方便动态加载,具体可以参考 这里。配置完毕后,重启 Prometheus 服务,此时可以通过 Prometheus UI 页面的 Targets 下查看是否配置成功。

Prometheus 使用 PushGateway 进行数据上报采集
不过我们会发现,除了 外,同时还新增了 和 两个指标,这两个是 PushGateway 系统自动生成的相关指标。此时,我们在 Prometheus UI 页面上 Graph 页面可以查询的到该指标了。
Prometheus 使用 PushGateway 进行数据上报采集
从上图可以看出, 和 虽然它们都属于 ,但是它们属于两个指标值,因为 instance 对二者做了区分。此时我们访问 Prometheus UI 页面上 Graph 页面查询该指标。
Prometheus 使用 PushGateway 进行数据上报采集
此时,可以看到能够正确匹配到 Push 的指标值对应到 job 和 instance 上了。这里说明一下 的作用:因为 Prometheus 配置 PushGateway 的时候,也会指定 job 和 instance,但是它只表示 PushGateway 实例本身,不能真正表达收集数据的含义。所以配置 PushGateway 需要添加 参数,避免收集数据本身的 job 和 instance 被覆盖。详细可参考 这里 官网文档对该参数的说明。

上边我们 Push 指标数据是通过命令行追加方式,少量数据还凑合,如果需要 Push 的数据比较大时,就不太方便了,这里我们也可以通过将指标数据写入到文件,然后将文件内容提交,也可以正常添加到 PushGateway。新建一个指标数据文件 如下:

然后执行如下命令,将数据 Push 上去。

执行完毕,在 PushGateway UI 页面同样能够查询的到。

Prometheus 使用 PushGateway 进行数据上报采集
上边列子比较简单,咱们在来一个稍微负载一些的,指定多个 label 标签组的指标。

来源:哎_小羊_168

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月26日
下一篇 2019年9月26日

相关推荐