阿里云监控系统支持用户自定义监控类型,具备极强的监控扩展能力,支持用户本身编写监控插件实现自定义监控类型。编写完后将插件放到Agent安装目录下面的scripts目录下面,若是是linux服务器则是/usr/local/cms/scripts目录下面。jquery
监控插件无论以何种语言编写,只要是能够直接执行就能够,它能够是已编译成功的可执行二进制程序文件(例如: C, C++等),同时也能够是可执行脚本文件(例如: shell, Perl, PHP等)。linux
为了云监控插件可以被云监控Agent正确调用和执行,监控插件的参数和退出值必须遵照如下规则,其中业务逻辑彻底由您决定:web
云监控Agent根据插件的返回值来判断其状态是Ok仍是Critical。目前只有Ok和Critical两种状态。shell
若是是exit(0),则表示其状态是OK的。这种状态表示插件检测的结果是正常的,不须要报警。服务器
若是是exit(2),则表示其状态是Critical的。这种状态表示插件检测异常,须要报警。ide
若是云监控插件运行完后的退出值不是以上固定值,云监控不会作任何处理。阿里云
具体的报警信息就是云监控插件执行时的输出字符串,它能够彻底由您本身决定。spa
云监控Agent在调用插件时会向插件传三个参数。 您能够不处理这些参数,也能够处理这些参数。插件
第一个输入参数是就是页面上监控项的参数,是由您在页面上自行输入的。orm
第二个输入参数是报警阈值,是您在页面上配置的报警阈值。若是您的插件须要阈值,则您的插件里面须要解析阈值,并与阈值比较以决定返回值是0,仍是1或2。
第三个输入参数是超时时间,是您在页面上选择的超时时间。这个参数能够根据您的须要决定是否处理。若是插件执行时间超过这个时间值,云监控Agent则会终止这个插件的运行。
若是插件是用脚本语言写的话,第一行要有解释器,不然云监控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 #正常退出