Prometheus监控系统(4)pushgateway及自定义脚本

一、pushgateway的作用

传统监控软件如Zabbix通常都建议使用push的方式来由客户端推送数据给服务端,这样可以减轻服务端压力。但是这样也有个弊端就是配置更为复杂,需要在每个agent上都配置server的地址才可以感知到server的存在。虽然Prometheus默认已经是采用pull的方式来主动拉取数据,但是在某些情况下还是会使用更灵活的push方式,比如需要监控的项目生命周期很短,需要主动上报数据给服务端,这个时候就可以使用Prometheus的pushgateway来实现push方式的监控。Prometheus不再需要自己去拉取数据,而是让用户通过自定义的Shell脚本把需要的数据发送给pushgateway,然后再由pushgateway推送数据给Prometheus。pushgateway是可以单独运行在任何节点上的插件,不一定要在被监控客户端上。

二、配置pushgateway方式监控

1、在Prometheus官网下载pushgateway组件。下载地址是https://prometheus.io/download/

2、将压缩包解压并运行pushgateway程序,默认会监听在9091端口

1

. /pushgateway

3、修改prometheus的配置文件,给pushgateway定义一个job

1

2

3

-job_name: 'pushgateway_test' #这个名称可以自定义,后面会用到
static_configs:
- targets: [ '192.168.100.110:9091' ]  #这里是pushgateway的地址

4、自定义脚本采集数据,这里以监控timewait的数量为例

1

2

3

4

5

6

7

vi count_netstat_wait_connections.sh

#!/bin/bash

instance_name= -f | -d '.'</code>-f1<code>  </code>#获取本机名,用于后面的的标签

label= "count_netstat_wait_connections" #&#x5B9A;&#x4E49;key&#x540D;

count_netstat_wait_connections= -an | -i wait | </code>-l<code>  </code>#获取数据的命令

echo "$label: $count_netstat_wait_connections"

echo "$label&#xA0; $count_netstat_wait_connections" | curl --data-binary @- http: //server .com:9091 /metrics/job/pushgateway_test/instance/ $instance_name&#xA0; #&#x8FD9;&#x91CC;pushgateway_test&#x5C31;&#x662F;prometheus&#x4E3B;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x91CC;job&#x7684;&#x540D;&#x5B57;&#xFF0C;&#x9700;&#x8981;&#x4FDD;&#x6301;&#x4E00;&#x81F4;&#xFF0C;&#x8FD9;&#x6837;&#x6570;&#x636E;&#x5C31;&#x4F1A;&#x63A8;&#x9001;&#x7ED9;&#x8FD9;&#x4E2A;job&#x3002;&#x540E;&#x9762;&#x7684;instance&#x5219;&#x662F;&#x6307;&#x5B9A;&#x673A;&#x5668;&#x540D;&#xFF0C;&#x4F7F;&#x7528;&#x7684;&#x5C31;&#x662F;&#x811A;&#x672C;&#x91CC;&#x83B7;&#x53D6;&#x7684;&#x90A3;&#x4E2A;&#x53D8;&#x91CF;&#x503C;

5、将脚本加入到计划任务中,定时推送数据,如果希望监控时长小于一分钟,可以使用sleep方法

6、在Prometheus界面使用自定义的key获取数据测试

Prometheus监控系统(4)pushgateway及自定义脚本

实例操作:

python;gutter:true; python3 查询influxdb的数据</p> <h1>!/usr/bin/env python3</h1> <p>-<em>- encoding: utf-8 -</em>-</p> <p>import datetime as dt import re import sys import os from influxdb import InfluxDBClient</p> <p>def influxdb_query(): host = '10.96.66.79' port = 8086 user = 'root' password = 'root' dbname = 'telegraf' query = 'select last(value) from iostat_info;'</p> <pre><code>client = InfluxDBClient(host, port, user, password, dbname) </code></pre> <p># print("Querying data: " + query) result = client.query(query) result_list = list(result)[0] print(result_list[0]["last"])</p> <p>influxdb_query()</p> <pre><code> shell 调用python的返回值, 并将值推送给 pushgateway ;gutter:true;
#!/bin/bash

instance_name="测试环境的iostat信息"

label="iostat_info_value"

iostat_info_value=python3 influxdb_query.py

echo "$label: ${iostat_info_value}"
echo "$label: ${iostat_info_value}" | curl --data-binary @- http://172.16.234.60:9091/metrics/job/pushgateway_test/instance/$instance_name

prometheus 配置 相关的 job_name 信息:

python;gutter:true; - job_name: 'pushgateway_test' scrape_interval: 5s honor_labels: true static_configs: - targets: ['172.16.234.60:9091']</p> <p>重启 prometheus: :kill -HUP $(ps aux|grep prometheus |awk 'NR==1{print $2}')</p> <pre><code> 执行脚本 sh iostat_info_value.sh 查看promethus 信息, 数据已经产生 ![Prometheus监控系统(4)pushgateway及自定义脚本](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230526/1152810-20220819175057460-185549194.png) ;gutter:true;
脚本监控gitlab的备份文件

cat gitlab_backup_monitor_to_prometheus.sh

#!/bin/bash

instance_name="gitlab备份文件监控"

label="gitlab_backup_file_monitor"

gitlabfile_nums_value=cd /data3/wjj/gitlabbak && ls |grep -c gitlab

echo "$label: ${gitlabfile_nums_value}"
echo "$label ${gitlabfile_nums_value}" | curl --data-binary @- http://47.*****.**:9091/metrics/job/pushgateway_test/instance/$instance_name

bash;gutter:true; 监控规则</p> <p>cat pushgateway.yml groups: - name: gitlab-backup_file-monitor rules: - alert: gitlab-backup_file-failed expr: gitlab_backup_file_monitor < 5 for: 1m labels: severity: critical annotations: summary: gitlab backup files is less than 5pcs.</p> <pre><code> description: "gitlab backup process failed" </code></pre> <p>

Original: https://www.cnblogs.com/weifeng1463/p/16214867.html
Author: Oops!#
Title: Prometheus监控系统(4)pushgateway及自定义脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553866/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 字节一面:事务还没提交的时候,redolog 能不能被持久化到磁盘呢?

    又是被自己菜醒的一天,总结面经看到这题目听都没听过,打开百度就像吃饭一样自然 老规矩,背诵版在文末。点击阅读原文可以直达我收录整理的各大厂面试真题 首先,咱需要明白的是,啥是持久化…

    技术杂谈 2023年7月25日
    0213
  • Servlet之Request和Response的快速上手

    阅读提示: 前置内容 MyBatis知识点总结 HTTP和Servlet入门 1、Request和Response概述 2、Request对象 2.1 Request继承体系 2….

    技术杂谈 2023年7月25日
    086
  • JMeter 录制web脚本

    一.Badboy2.2.5简介 Badboy作用很多,但是大部分是作为脚本录制工具来使用。我们可以用Badboy录制脚本,然后将录制的脚本导出为JMeter格式的脚本,最后将该脚本…

    技术杂谈 2023年5月31日
    0103
  • Ubuntu 21.04配置adb服务

    当初一直以为ubuntu系统都是自带android adb服务的,结果一运行该命令直接啪啪打脸,为自己的无知买单。 1、adb 驱动安装 安装adb驱动到ubuntu系统下:更新一…

    技术杂谈 2023年7月11日
    072
  • C7N 重置 queryDataSet

    场景: F型布局的页面,点击左侧列表,右侧详情页面的数据需要更新,当时发现详情页中 queryDataSet 数据没有重置 思路: 调用 DataSet 中的 reset 方法,重…

    技术杂谈 2023年5月30日
    077
  • 浅析vue3在源码、性能和语法上对比vue2做了哪些优化

    Vue.js 从 1.x 到 2.0 版本,最大的升级就是引入了虚拟 DOM 的概念,它为后续做服务端渲染以及跨端框架 Weex 提供了基础。 Vue.js 2.x 发展了很久,现…

    技术杂谈 2023年5月31日
    085
  • DataTable转List<dynamic>

    DataTable转List 最近做的一个项目,MVC+Ado.net。没有ORM很不习惯。找到一个办法,DataTable转List 有过滤字段,和反转过滤字段。 csharp;…

    技术杂谈 2023年5月31日
    073
  • 异步导入导出Excel方案

    一、异步导出Excel文件 1、设计思想 用户无需在当前页面等待导出结果,点击导出按钮后服务端即可返回前端提示用户导出处理中请到下载中心查看结果。 具体业务文件导出实现由后台异步处…

    技术杂谈 2023年7月11日
    096
  • [转]axios 的理解和使用

    有废话少说,直接附上原文链接: 其它链接: 1、axios中文文档:http://www.axios-js.com/ Original: https://www.cnblogs.c…

    技术杂谈 2023年6月1日
    0101
  • 极钛星华pro1T智能话机(点评管家/美味不用等)型号p1A32 开启adb root等

    1、极钛星华p1A32 智能话机使用联发科mt6735芯片 2、解决让美味不用等、点评管家等定制版,不交年费是不能打电话的(作者:博客园季枫 或者在此贴留言,交流邮箱:liaoji…

    技术杂谈 2023年5月31日
    089
  • 这个开源组织里的项目都是精品(第二弹)

    前言 之前我写过一篇文章——《这个开源组织里的项目都是精品》,里面列举了Dromara开源组织的4个java项目,每一个都轻量且实用,受到了很多小伙伴的喜爱。Dromara这个开源…

    技术杂谈 2023年7月11日
    064
  • 【考研】C语言

    考研C语言 收录数据结构会用到的C语言知识,建议有基础的情况下再学习,针对性学习即可。 往后的学习要多从内存角度去学习计算机的知识 1. 数组 1.1 一维数值数组 具备相同的数据…

    技术杂谈 2023年7月10日
    076
  • 使用Supervisord软件管理go服务进程

    一、介绍Supervisord软件1、什么是Supervisord?Supervisord是一个非常优秀的进程管理工具,使用Python开发。它可以在类UNIX系统的方式让用户来准…

    技术杂谈 2023年5月31日
    081
  • vs 2005 thread 无法调试

    两种办法: 1、打开项目属性,在”Debug”一项里,把”Enable the Visual Studio hosting process&#8…

    技术杂谈 2023年7月11日
    057
  • mac 工作区

    https://www.zhihu.com/question/20917614 http://www.bjhee.com/mission-control.html 窗口切换 htt…

    技术杂谈 2023年7月11日
    060
  • 自动化测试之争:code vs codeless

    在TesterHome看到的一个话题,当我们选择做自动化时是否需要code 或者codeless。 code方案 用code去做自动化,实现过程就是拿个IDE撸代码。 python…

    技术杂谈 2023年5月31日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球