通过categraf监控指标
本例子中演示的夜莺版本为5.8.0,使用的categraf为v0.2.33
categraf部署参考:https://blog.ywdevops.cn/index.php/2023/03/14/categraf/
categraf的conf路径下有多个input开头的目录,每个目录都表示采集不同的指标,如果不想采集某个指标,可以将目录删除或者修改名字,对于那些需要配置的指标,不配置即可,比如采集mysql的

探测本机或者远程主机端口
探测端口的指标是input.net_reponse
1、进入目录中,编辑net_response.toml文件,添加端口信息,如图:

黄线表示探测远程主机端口,其余都是探测本机端口,修改后重启categraf
2、登陆页面,选择主机后,点击net-net_reponse_result_code,聚合维度位置把indent叉掉,如图:


注意:端口正常运行是指标是0,如果异常就是非0,可能是2,没有配置探测端口前,指标net_reponse_result_code是不存在的,配置后才会出现
通过自定义脚本来检测进程是否存在
如果input目录下的插件无法满足采集需求或者有特殊场景需要自定义实现指定业务的监控
原理:监控脚本采集到监控数据之后通过相应的格式输出到stdout,categraf截获stdout内容,解析之后传给服务端
插件目录为input.exec,路径下有一个extc.toml文件,需要在其中配置data_format数据格式,只有指定格式的数据才能被categraf读取,数据格式支持以下3种:
- influx
- falcon
- prometheus
influx格式如下:
mesurement,labelkey1=labelval1,labelkey2=labelval2 field1=1,field2=2
mesurement,定义指标名称(或者前缀),这是最终显示在最上层的指标,跟cpu这种同级- labelkey1=labelval1这种是标签,标签和指标用逗号分割,可以有多个标签
- field1=1 这种是属性名,属性名与指标前缀一起作为子指标,也就是类似于cpu_usage_active,属性值在categraf里只能是数字(可通过数字来判断告警)
示例,下面定义一个shell脚本来检测java进程是否存在,首先编辑exec.toml,设置数据格式,如图:

编写n9e_get_ps_unit.sh,如果进程存在ps-unit为1,否则为0,如图:

- processmonitor 最外层的指标名
- ident,protocol,processname为标签,根据需要想写几个都行
- ps-unit 为属性名,要与processmonitor拼接为最终的子指标名
启动categraf后,可以看到指标已经出来,如图:

最后根据指标值是0还是1来判断告警规则即可
注意:也可以先不直接启动categraf,先通过脚本和categraf来测试下脚本是否符合格式标准,先执行脚本后再执行./categraf --test --inputs exec 来测试输出,没报错就可以


