Pushgetway安装和使用

1、Pushgetway安装和使用

在这里插入图片描述

1.1 Pushgateway是什么

pushgateway 是另一种数据采集的方式,采用被动推送来获取监控数据的prometheus插件,它可以单独运行在

任何节点上,并不一定要运行在被监控的客户端。

首先通过用户自定义编写的脚本把需要监控的数据发送给 pushgateway,pushgateway 再将数据推送给对应的

Prometheus 服务。

对于短时运行、不支持轮询的任务,可以引入 pushgateway,将指标数值以 push 的方式推送到 pushgateway暂

存,然后 prometheus 从 pushgateway 中轮询。

PushGateway:短期存储指标数据。主要用于临时性的任务,各个目标主机可以上报数据到 pushgateway,然后

prometheus server 统一从 pushgateway 拉取数据。

Pushgateway 是 prometheus 的一个组件,prometheus server 默认是通过 exporter 主动获取数据(默认采取

pull 拉取数据),pushgateway 则是通过被动方式推送数据到 prometheus server,用户可以写一些自定义的监控

脚本把需要监控的数据发送给 pushgateway, 然后 pushgateway 再把数据发送给 Prometheus server。

1.2 使用Pushgateway的主要原因

1、因为Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙,导致 Prometheus 无法直接拉取各个

target 数据。

Prometheus 在一些情况下无法直接拉取各个 target 数据。

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

1.3 使用Pushgateway的弊端

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

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

通过单个 Pushgateway 监控多个实例时, Pushgateway 将会成为单点故障和潜在瓶颈。

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

3、Pushgateway 可以持久化推送给它的所有监控数据。 因此,即使你的监控已经下线,prometheus 还会拉取

到旧的监控数据,需要手动清理 pushgateway 不要的数据。

总:

  • Prometheus拉取状态只针对 pushgateway,不能对每个节点都有效。

  • Pushgateway出现问题,整个采集到的数据都会出现问题。

  • 监控下线,prometheus还会拉取到旧的监控数据,需要手动清理 pushgateway不要的数据。

1.4 Pushgateway流程图

在这里插入图片描述

我们编写脚本将数据发送到 Pushgateway,Pushgateway将数据 push 到 Prometheus。

1.5 与Prometheus结合使用流程图

通过客户端 POST数据至pushgateway,prometheus拉取pushgateway里数据,经过alertmanager报警规则触

发,到prometheusalert自定义模板,最后飞书机器人发送该报警信息。

在这里插入图片描述

1.6 Pushgateway使用

1.6.1 下载部署包

下载地址:

https://github.com/prometheus/pushgateway/releases/

这里下载 pushgateway-1.4.3.linux-amd64.tar.gz

https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz
1.6.2 解压
tar -xvf pushgateway-1.4.3.linux-amd64.tar.gz
1.6.3 启动
nohup ./pushgateway >> nohup.out 2>&1 &
1.6.4 测试

访问:http://192.168.54.195:9091/

在这里插入图片描述

1.6.5 在Prometheus配置
- job_name: pushgateway
  static_configs:
    - targets: ['192.168.54.195:9091']
      labels:
        instance: pushgateway

重新启动 Prometheus:

nohup ./prometheus --config.file=prometheus.yml >> nohup.out 2>&1 &

在这里插入图片描述

1.6.6 测试发送数据
# 推送指定的数据格式到pushgateway
# 将"metrics"字节赋值"3.6",向{job="test_job"}添加单条数据
$ echo "metric 3.6" | curl --data-binary @- http://192.168.54.195:9091/metrics/job/test_job

查看结果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

# 添加复杂数据
cat <<EOF | curl --data-binary @- http://192.168.54.195:9091/metrics/job/test_job/instance/test_instance
node_memory_usage 36
node_memory_total 36000
EOF

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

# 利用shell脚本完成数据推送
$ vim push.sh
# 内容
node_memory_usages=$(free -m | grep Mem | awk '{print $3/$2*100}')
job_name="memory"
instance_name="192.168.54.195"
cat <<EOF | curl --data-binary @- http://192.168.54.195:9091/metrics/job/$job_name/instance/$instance_name
# TYPE node_memory_usages gauge
node_memory_usages $node_memory_usages
EOF
# 执行
./push.sh

在这里插入图片描述

1.6.7 定时任务定时推送数据
# 新建定时任务
crontab -e 
或者
vim /etc/crontab

第一种方式 crontab -e

  • 输入 crontab -e
  • 按下 a 键进入到编辑模式
  • 输入定时任务
  • 同时按下 ctrl+c 退出编辑模式
  • 按下 shift+: 输入 wq 退出 crontab

第二种方式 vim /etc/crontab

$ vim /etc/crontab
# 写入如下内容
1 * * * * sh /home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/push.sh
# 查看定时任务
# 第一种方式
$ crontab -l
1 * * * * sh /home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/push.sh
# 第二种方式
$ cat /var/log/cron
Mar  3 09:23:01 zsx crond[27252]: (root) RELOAD (/var/spool/cron/root)
$ cat /var/spool/cron/root
1 * * * * sh /home/zhangshixing/prometheus/prometheus-2.34.0-rc.2.linux-amd64/push.sh
1.6.8 删除某个组下的某实例的所有数据
curl -X DELETE http://192.168.54.195:9091/metrics/job/some_job/instance/some_instance
curl -X DELETE http://192.168.54.195:9091/metrics/job/some_job

1.7 Pushgateway使用方法

$ ./pushgateway --help
usage: pushgateway [<flags>]

The Pushgateway

Flags:
  -h, --help                     		Show context-sensitive help (also try --help-long and --help-man).
      --web.config.file=""       		[EXPERIMENTAL] Path to configuration file that can enable TLS or uthentication.
      --web.listen-address=":9091"		Address to listen on for the web interface, API, and telemetry.
      --web.telemetry-path="/metrics"	Path under which to expose metrics.
      --web.external-url=        		The URL under which the Pushgateway is externally reachable(可从外部访问Pushgateway的URL).
      --web.route-prefix=""      		Prefix for the internal routes of web endpoints. Defaults to the path of --web.external-url(web端点内部路由的前缀,默认为-web.external-url的路径).
      --web.enable-lifecycle     		Enable shutdown via HTTP request.
      --web.enable-admin-api     		Enable API endpoints for admin control actions.
      --persistence.file=""      		le to persist metrics. If empty, metrics are only kept in memory(持久化metrics的文件,如果该文件为空,则metrics只保留在内存中).
      --persistence.interval=5m  		The minimum interval at which to write out the persistence file(写入持久性文件的最小间隔).
      --push.disable-consistency-check	Do not check consistency of pushed metrics. DANGEROUS.                  
      --log.level=info           		Only log messages with the given severity or above. One of: [debug, nfo, warn, error]
      --log.format=logfmt        		Output format of log messages. One of: [logfmt, json]
      --version                  		Show application version.

1.8 docker部署pushgateway

搜索镜像:

$ docker search pushgateway

在这里插入图片描述

$ docker search prom/pushgateway

在这里插入图片描述

拉取镜像:

$ docker pull prom/pushgateway

在这里插入图片描述

启动:

$ docker run -d --name pushgateway -p 9091:9091 --network host prom/pushgateway

在这里插入图片描述

通过http://192.168.54.195:9091/进行访问:

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、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)等 七、课程大纲
PushgatewayPrometheus 生态系统中的一个组件,用于临时存储和持久化短期任务的指标数据。它允许应用程序将指标数据推送到 Pushgateway,并由 PrometheusPushgateway 获取数据进行抓取和持久化。 要实现 Pushgateway 数据的持久化,你可以考虑以下几个方法: 1. 使用持久化存储:Pushgateway 默认将数据存储在内存中,但你可以通过配置将其存储到持久化存储介质,如磁盘。这样可以确保即使重启 Pushgateway,也能保留之前推送的指标数据。 2. 定期备份:你可以设置定期备份 Pushgateway 的数据。定期备份可以通过将数据导出到文件,或者将其推送到其他远程存储(如对象存储服务)来实现。这样即使出现故障,也能恢复历史数据。 3. 数据复制:如果你有多个 Pushgateway 实例,你可以考虑使用数据复制来实现数据的冗余和容错。这可以通过设置多个 Pushgateway 实例,并使用适当的同步机制来实现数据的复制。 4. 故障恢复策略:在出现故障或不可用情况时,需要定义合适的故障恢复策略。例如,当 Pushgateway 不可用时,应用程序可以缓存指标数据,并在 Pushgateway 可用时重新推送。 需要注意的是,Pushgateway 适用于短期任务和临时指标数据的存储,并不适合长期存储大量数据。对于长期存储和分析,你可以考虑将指标数据导入到其他系统(如 Prometheus 或时间序列数据库)中。 希望以上信息能帮助到你!如果你还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值