阿里云监控系统支持用户自定义监控类型,具有极强的监控扩展能力,支持用户自己编写监控插件实现自定义监控类型。编写完后将插件放到Agent安装目录下面的scripts目录下面,如果是linux服务器则是/usr/local/cms/scripts目录下面。
监控插件不管以何种语言编写,只要是可以直接执行就可以,它可以是已编译成功的可执行二进制程序文件(例如: C, C++等),同时也可以是可执行脚本文件(例如: shell, Perl, PHP等)。
为了云监控插件能够被云监控Agent正确调用和执行,监控插件的参数和退出值必须遵守以下规则,其中业务逻辑完全由您决定:
1、云监控插件输出规范
云监控Agent根据插件的返回值来判断其状态是Ok还是Critical。目前只有Ok和Critical两种状态。
如果是exit(0),则表示其状态是OK的。这种状态表示插件检测的结果是正常的,不需要报警。
如果是exit(2),则表示其状态是Critical的。这种状态表示插件检测异常,需要报警。
如果云监控插件运行完后的退出值不是以上固定值,云监控不会做任何处理。
具体的报警信息就是云监控插件执行时的输出字符串,它可以完全由您自己决定。
2、云监控插件输入规范
云监控Agent在调用插件时会向插件传三个参数。 您可以不处理这些参数,也可以处理这些参数。
第一个输入参数是就是页面上监控项的参数,是由您在页面上自行输入的。
第二个输入参数是报警阈值,是您在页面上配置的报警阈值。如果您的插件需要阈值,则您的插件里面需要解析阈值,并与阈值比较以决定返回值是0,还是1或2。
第三个输入参数是超时时间,是您在页面上选择的超时时间。这个参数可以根据您的需要决定是否处理。如果插件执行时间超过这个时间值,云监控Agent则会终止这个插件的运行。
3、插件注意事项:
如果插件是用脚本语言写的话,第一行要有解释器,否则云监控Agent无法执行这些插件。比如如果是用shell写的话,第一行应该是类似这样的:#!/bin/sh
#!/bin/sh #请注意这个shell的解释器POLICY_PARAMS=$1 #将第一个参数接收进来,便于后面处理CRITICAL_PARAMS=$2 #将报警阈值接收进来,后面检测到的值跟这个阈值相比如,如果大于等于阈值,则exit(1)退出,表示Critical;如果小于阈值,则exit(0)退出,表示OK。TIMEOUT=$3 #将超时时间接收进来,便于后面处理。比如里面调用wget命令,希望这个命令执行超过这个时间后超时,则可以在wget命令中使用$TIMEOUT这个变量………If (Critical) Echo “Critical-The filesystem is readonly.” Exit 1 #异常退出If (OK) Echo “OK-The filesystem is normal.” Exit 0 #正常退出