zoukankan      html  css  js  c++  java
  • 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端口

    ./pushgateway

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

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

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

    vi count_netstat_wait_connections.sh
    #!/bin/bash
    instance_name=`hostname -f | cut -d'.' -f1`  #获取本机名,用于后面的的标签
    label="count_netstat_wait_connections"  #定义key名
    count_netstat_wait_connections=`netstat -an | grep -i wait | wc -l`  #获取数据的命令
    echo "$label: $count_netstat_wait_connections"
    echo "$label  $count_netstat_wait_connections" | curl --data-binary @- http://server.com:9091/metrics/job/pushgateway_test/instance/$instance_name  #这里pushgateway_test就是prometheus主配置文件里job的名字,需要保持一致,这样数据就会推送给这个job。后面的instance则是指定机器名,使用的就是脚本里获取的那个变量值

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

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

    版权声明
    本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15107966.html
Copyright © 2011-2022 走看看