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

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

img

公司是今年决定将一些传统应用从虚拟机上迁移到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

Node_Exporter源码目录结构

经过collector目录下源码文件名能够看到具体监控项经过单独的代码文件去采集golang

img

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

  • 定义struct

img

  • 定义所要用到的变量

img

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

img

  • 实现*Unix执行脚本函数

img

  • 注册Collector接口Update方法

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

img

在脚本目录放入测试脚本

img

编译运行

img

查看metrics数据

img


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

相关文章
相关标签/搜索