Golang 基于Prometheus Node_Exporter 开发自定义脚本监控

公司是今年决定将一些传统应用从虚拟机上迁移到Kubernetes上的,项目多而乱,所以迁移工作进展缓慢,为了建立统一的监控平台,我们使用的是在Kubernetes集群内部署Prometheus-operator,不得不说Prometheus-operator对k8s的监控支持的非常好,helm安装后会把Prometheus、Alertmanger、Grafana、以及NodeExporter都给安装完成,打开Grafana k8s中所有监控指标和图标都已经创建好,大大降低监控部署的复杂性。但是对于我们项目迁移较慢的环境,Promethues只监控k8s集群当然是不行的,所以我们选择使用在虚拟机上部署Node_Exporter来监控虚拟机的各项指标,但是Node_Exporter只能监控系统指标,我们可能想要业务的一些监控,比如(文件状态监控,业务日志监控...都是一些传统软件留下来的坑),这样Node_Exporter就显得力不从心了,而且每个项目监控的一些指标并不相同,所以开发统一Exporter不但耗时还会出现一些兼容性和运维复杂性的问题,所以根据原来zabbix自定义监控项的思路考虑对Node_Exporter进行二次开发,增加一个自定义脚本监控项

Node_Exporter源码目录结构

通过collector目录下源码文件名可以看到具体监控项通过单独的代码文件去采集

新建custom_scripts.go 开始编写自定义脚本监控项采集器

  • 定义struct

  • 定义所要用到的变量

  • 定义init函数去注册collector,NewCoustomScriptCollector 返回CoustomScriptCollector结构体

  • 实现*Unix执行脚本函数

  • 注册Collector接口Update方法

主要逻辑:遍历目录下的脚本文件,给脚本文件增加执行权限,然后执行脚本,脚本输出格式Key=Value,取key、value生成metrics数据

在脚本目录放入测试脚本

编译运行

查看metrics数据


最后展示的话可以在grafana中添加图表,也可在alertmanger添加报警规则,具体可以参考Prometheus-Operator实战

Golang 基于Prometheus Node_Exporter 开发自定义脚本监控的更多相关文章

  1. 基于 prometheus 的微服务指标监控

    基于prometheus的微服务指标监控 服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等.而通过指标监控能清晰的 ...

  2. 基于Prometheus搭建SpringCloud全方位立体监控体系

    前提 最近公司在联合运维做一套全方位监控的系统,应用集群的技术栈是SpringCloud体系.虽然本人没有参与具体基础架构的研发,但是从应用引入的包和一些资料的查阅大致推算出具体的实现方案,这里做一次 ...

  3. 简单4步,利用Prometheus Operator实现自定义指标监控

    本文来自Rancher Labs 在过去的文章中,我们花了相当大的篇幅来聊关于监控的话题.这是因为当你正在管理Kubernetes集群时,一切都会以极快的速度发生变化.因此有一个工具来监控集群的健康状 ...

  4. zabbix 自定义脚本监控activemq

    1. 编写获取activemq队列积压消息(check-amq.sh) #!/bin/bash QUEUENAME=$ MQ_IP='172.16.1.56' curl -uadmin:admin h ...

  5. 基于Prometheus和Grafana打造业务监控看板

    前言 业务监控对许许多多的场景都是十分有意义,业务监控看板可以让我们比较直观的看到当前业务的实时情况,然后运营人员可以根据这些情况及时对业务进行调整操作,避免业务出现大问题. 老黄曾经遇到过一次比较尴 ...

  6. 基于AGS JS开发自定义贴图图层

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 假设一个景区有多张图片需要在地图上展示,并且随着地图的缩放而缩 ...

  7. zabbix使用自定义脚本监控内存

    我这里的脚本是监控centos7系统的内存.centos7系统的内存如何查看我之前的博客都是有的.这里直接写了监控步骤 1.首先是编写脚本. #!/bin/bash mem_total(){ TOTA ...

  8. Nagios 利用NSClient++的check_nrpe方式使用自定义脚本监控windows

    分类 NsClient++来监控windows主机有三种方式:check_nt.check_nrpe.nsca.check_nt自带很多功能,但是扩展性差,check_nrpe可以通过执行自己定义的脚 ...

  9. Prometheus监控学习笔记之360基于Prometheus的在线服务监控实践

    0x00 初衷 最近参与的几个项目,无一例外对监控都有极强的要求,需要对项目中各组件进行详细监控,如服务端API的请求次数.响应时间.到达率.接口错误率.分布式存储中的集群IOPS.节点在线情况.偏移 ...

随机推荐

  1. flutter 混合开发

    flutter 混合开发 https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps https://flutter.de ...

  2. where is the storage location of the browser's HTTP cache? disk or memory

    where is the storage location of the browser's HTTP cache? disk or memory HTTP cache & storage l ...

  3. 「NGK每日快讯」12.30日NGK第57期官方快讯!

  4. C++算法代码——字符串p型编码

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1681 题目描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字 ...

  5. C++实现String类

    1 #include<iostream> 2 #include<cstring> 3 4 class String 5 { 6 public: 7 String(); 8 St ...

  6. 4. Vue基本指令

    目录 1. v-on指令 2. v-if指令 3. v-show指令 4. v-for指令 5. v-model指令 一. v-on指令 1. 基础用法 v-on是事件监听的指令, 下面来看简单用法 ...

  7. MPAndroidChart实现LineChart(折线图)

    一.参照油管视频做法 1.引入依赖 新建Android工程,然后分别在build.gradle(Project:...)添加 maven { url 'https://jitpack.io' } 在b ...

  8. Javascript中的事件对象和事件类型

    接上次看JS的事件冒泡和捕获,所以顺带就把事件相关的知识都看完好了 而且想到一个好的学习方法,第一天自己看,第二天把前一天学习的东西写下来,一方面可以当复习,一方面当重新整理并且分享 事件对象 事件处 ...

  9. 字符串拼接出现null的问题

    最近在开发的过程中遇到这样的问题,原因是在做一个需求的时候,要求将解密的号码和前缀进行拼接.一开始在这个拼接的过程中,没有考虑到数据校验的问题,因为有可能他的前缀或者其他需要拼接的字段在前端传递的过程 ...

  10. Java Socket编程基础及深入讲解

    原文链接:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html 原文写的特别好,非常详细,但是禁止转载,那我就不再复制粘贴了! socket实现 ...