Prometheus监控实战系列十四:Pushgateway

1、Pushgateway简介

Pushgateway为Prometheus整体监控方案的功能组件之一,并做为一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙;目标服务没有可抓取监控数据的端点等多种情况。在类似场景中,可通过部署Pushgateway的方式解决问题。

当部署该组件后,监控源通过主动发送监控数据到Pushgateway,再由Prometheus定时获取信息,实现资源的状态监控。
在这里插入图片描述
工作流程:

  1. 监控源通过Post方式,发送数据到Pushgateway,路径为/metrics。
  2. Prometheus服务端设置任务,定时获取Pushgateway上面的监控指标。
  3. Prometheus获取监控指标后,会根据告警规则进行计算,如果匹配将触发告警到Alertmanager;同时,Grafana可配置数据源调用Prometheus数据,做为数据展示。
2、安装部署
2.1 二进制安装

下载安装包

wget https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz
tar zxvf pushgateway-1.4.3.linux-amd64.tar.gz  -C /usr/local/
cp /usr/local/pushgateway-1.4.3.linux-amd64/pushgateway /usr/local/bin/

查看版本号验证是否正常

在这里插入图片描述

修改配置

scrape_configs:
  - job_name: 'pushgateway'
    static_configs:
    - targets: ['192.168.75.160:9091']
      labels:
        instance: pushgatewayCopy

重启Prometheus,启动服务,默认端口为9091,可通过--web.listen-address更改监听端口

pushgateway &
2.2 docker安装
docker pull prom/pushgateway
docker run -d --name=pushgateway -p 9091:9091 prom/pushgateway

部署完成后,在浏览器输入http://192.168.75.160:9091/# 即可看到程序界面

在这里插入图片描述

3、数据推送Pushgateway

pushgateway的数据推送支持两种方式,Prometheus Client SDK推送和API推送。

3.1 Client SDK推送

Prometheus本身提供了支持多种语言的SDK,可通过SDK的方式,生成相关的数据,并推送到pushgateway,这也是官方推荐的方案。

目前的SDK覆盖语言有官方的:

  • Go
  • Java or Scala
  • Python
  • Ruby

也有许多第三方的,详情可参见此链接:https://prometheus.io/docs/instrumenting/clientlibs/,https://www.172173.com/2022/04/01/Prometheus-Pushgateway/

在其他机器上提交数据测试

echo "some_metric 3.14" | curl --data-binary @- http://192.168.75.160:9091/metrics/job/some_job

在这里插入图片描述
示例:

本示例以python为例,讲解SDK的使用,复制以下代码到vscode中,并安装prometheus_client,pip install prometheus_client

[root@grafana ~]# cat push.py
from prometheus_client import Counter,Gauge,push_to_gateway
from prometheus_client.core import CollectorRegistry
 
registry = CollectorRegistry()
data1 = Gauge('gauge_test_metric','This is a gauge-test-metric',['method','path','instance'],registry=registry) 
data1.labels(method='get',path='/aaa',instance='instance1').inc(3)
 
push_to_gateway('192.168.75.160:9091', job='test-job',registry=registry)

在这里插入图片描述
注解

第一、二行代码:引入Python的Prometheus SDK;

第五行代码:创建相关的指标,类型为Gauge。其中“gauge_test_metric”为指标名称,'This is a gauge-test-metric’为指标注释,[‘method’,‘path’,‘instance’] 为指标相关的label。

第六行代码:添加相关的label信息和指标value 值。

第七行代码:push数据到pushgateway,'192.168.75.161:9091’为发送地址,job指定该任务名称。

以上代码产生的指标数据等同如下 :

# HELP gauge_test_metric This is a gauge-test-metric
# TYPE gauge_test_metric gauge
gauge_test_metric{instance="instance1",method="get",path="/aaa"} 3.0
3.2 API推送

通过调用pushgateway API的方式实现数据的推送。

请求格式:

/metrics/job/<jobname>{/instance/instance_name}

将用作Job标签的值,然后是其他指定的标签。

示例

本例中定义了两个标签 job=pushget-job和instance=instance1,并推送了指标 http_request_total 及其value值,192.168.75.161 为pushgateway地址。

echo 'http_request_total 12' |curl --data-binary @-  http://192.168.75.160:9091/metrics/job/pushget-job/instance/instance1

复杂数据发送:

cat <<EOF | curl --data-binary @- http://192.168.75.160:9091/metrics/job/pushgettest/instance/192.168.75.161
# TYPE http_request_total1 counter
http_request_total1{code="200",path="/aaa"} 46
http_request_total1{code="200",path="/bbb"} 15
EOF

在这里插入图片描述

在这里插入图片描述
假如需要删除pushgateway上面存储的指标信息,可通过如下方式操作:

删除某个组下某个实例的所有数据

curl -X DELETE http://192.168.75.160:9091/metrics/job/pushgettest/instance/192.168.75.161

在这里插入图片描述
删除某个job下所有的数据

curl -X DELETE http://192.168.75.160:9091/metrics/job/some_job

在这里插入图片描述

4、prometheus抓取数据
- job_name: 'pushgateway'
    static_configs:
    - targets: ['192.168.75.160:9091']
      labels:
        instance: pushgatewayCopy

在这里插入图片描述

5、注意事项

通过Pushgateway方式,Prometheus无法直接检测到监控源服务的状态,故此种方式不适用于监控服务的存活状态等场景。

Pushgateway属于静态代理,它接收的指标不存在过期时间,故会一直保留直到该指标被更新或删除。此种情况下,不再使用的指标可能存在于网关中。

如上所言,Pushgateway并不算是完美的解决方案,在监控中更多做为辅助方案存在,用于解决Prometheus无法直接获取数据的场景。

上一篇:Prometheus监控实战系列十三:告警管理
下一篇:Prometheus监控实战系列十五:Exporter详解

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
Prometheus是一种开源的监控系统,用于记录系统中各种指标的时间序列数据。GlusterFS是一个开源的分布式文件系统,可扩展性非常好。在这里,我将介绍如何使用Prometheus监控GlusterFS。 步骤1:安装和配置Prometheus 首先,你需要安装和配置Prometheus。你可以从官方网站下载Prometheus并且按照官方文档进行安装和配置。 在安装和配置完成后,你需要修改Prometheus的配置文件,以便它可以监控GlusterFS。在Prometheus的配置文件中添加以下内容: ``` - job_name: 'glusterfs' scrape_interval: 10s static_configs: - targets: ['localhost:9189'] ``` 这将告诉Prometheus在每10秒钟从本地主机的9189端口收集GlusterFS的指标数据。 步骤2:安装和配置GlusterFS Exporter 要监控GlusterFS,你需要使用GlusterFS Exporter。你可以从GitHub上下载GlusterFS Exporter并且按照官方文档进行安装和配置。 在安装和配置完成后,你需要修改GlusterFS Exporter的配置文件,以便它可以将指标数据提供给Prometheus。在GlusterFS Exporter的配置文件中添加以下内容: ``` glusterserver: - name: 'localhost' port: '24007' ``` 这将告诉GlusterFS Exporter在本地主机的24007端口上监听GlusterFS的指标数据,并将其提供给Prometheus。 步骤3:启动Prometheus和GlusterFS Exporter 启动Prometheus和GlusterFS Exporter,并确保它们正在运行。 步骤4:查看GlusterFS指标数据 现在你可以通过Prometheus的Web界面查看GlusterFS的指标数据。在Web浏览器中输入Prometheus的URL(默认为http://localhost:9090),然后进入Graph页面。在Metrics下拉列表中,搜索glusterfs,就可以看到所有GlusterFS指标数据的名称。 通过选择指标名称,你可以查看指标数据的详细信息,例如当前值、最大值、最小值等。 总结 现在你已经知道了如何使用Prometheus监控GlusterFS。这样,你就可以随时了解GlusterFS的性能和健康状况,并且可以在必要时采取相应的措施来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值