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. DNS & TXT recode & Google Search Console

    DNS & TXT recode & Google Search Console domain name verification / 域名验证 demo DNS TXT recode ...

  2. queueMicrotask & EventLoop & macrotask & microtask

    queueMicrotask https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicro ...

  3. color recognition by image

    color recognition by image 通过图像进行颜色识别 https://imagecolorpicker.com/ unknown color origin pic grey bl ...

  4. 开发Microsoft Teams选项卡应用安全注意事项

    我们都知道,为了方便广大的开发人员快速开发Microsoft Teams选项卡应用,微软提供了一个JS SDK,你可以通过这里 https://docs.microsoft.com/en-us/jav ...

  5. C++算法代码——骨牌铺法

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1638 题目描述 输入 输入一个正整数,表示n. 输出 输出一个正整数,表示铺法. 样 ...

  6. java自学第4期——:Scanner类、匿名对象介绍、Random类、ArrayList集合、标准类格式、String类、static静态、Arrays工具类、Math类(1)

    一.Scanner类 1.api简介: 应用程序编程接口 2.Scanner类: 作用:获取键盘输入的数据 位置: java.util.Scanner. 使用:使用成员方法nextInt() 和 ne ...

  7. 4. Vue基本指令

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

  8. oracle ora-01114 IO error writing block to file 207 (block # )

    oracle ORA-01114 IO error writing block to file 207 (block # ) Reference: https://stackoverflow.com/ ...

  9. EFCodeFirst 数据库连接

    EFCodeFirst 数据库连接 EFCodeFirst 数据库连接 1.NuGet安装实体命令 PM> Install-Package EntityFramework  2.数据库连接字符串 ...

  10. 图文详解:阿里宠儿【小兔】RabbitMQ的养成攻略