阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置。

阿里提供了2个版本的自定义监控接口:

自定义监控SDK(python版) :cms_post.py

自定义监控SDK(bash版) :cms_post.sh

下载地址: http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974901

本文使用shell版本做演示

这里说下我的简单需求,我们需要监控ECS服务器中tomcat的进程是否存在,如果小于1,就说明tomcat进程关闭,然后根据设定的报警规则报警。

首先我们需要在阿里云自定义监控页面建立一个自定义监控,如下图:

1、添加自定义监控

阿里云自定义监控配置实例_第1张图片

脚本post方法说明

阿里云自定义监控配置实例_第2张图片

2、定制脚本

我制作的调用自定义SDK的脚本内容如下:

vi tomcat_process_check.sh#!/bin/bash## This is a monitor shell script for aliyun ecs## It is mainly used to monitor the presence of the Tomcat process## Created in 2015.07.25## Written by Edison## Version 1.0export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binexport VAUL=$(ps --user tomcat |grep java |wc -l)
export HOSTS=$(hostname)
/usr/local/aegis/aegis_quartz/libexec/user/cms_post.sh 1509636335361036 tomcat $VAUL java=$HOSTS-tomcat-stop

给予脚本执行权限

chmod +x cms_post.sh tomcat_process_check.sh

3、配置调度任务

如果是利用阿里云监控自带的调度任务,那么我们需要将脚本放置到制定位置:

/usr/local/aegis/aegis_quartz/libexec/user

然后添加调度任务,执行此命令必须使用绝对路径

/usr/local/aegis/aegis_quartz/aegis_quartz -e "AddTask [0 0/5 * * * ?] /usr/local/aegis/aegis_quartz/libexec/user/tomcat_process_check.sh"
##删除
/usr/local/aegis/aegis_quartz/aegis_quartz -e "RemvoeTask [0 0/5 * * * ?] /usr/local/aegis/aegis_quartz/libexec/user/tomcat_process_check.sh"
##查看任务
/usr/local/aegis/aegis_quartz/aegis_quartz -e "GetTasks"
##aegis_quartz 帮助
[root@server07 ~]# /usr/local/aegis/aegis_quartz/aegis_quartz -h
Usage:/usr/local/aegis/aegis_quartz/aegis_quartz  -f  configFile				(default:conf/aegis_quartz.conf)  -c  configFile				(only check configFile)  -e "opType value"			(get or set some inner info)  -v								(show agent version)  -h								(show help)
about opType and value: 
  SetLogLevel [error|warn|info|debug] (set agent log level)  GetLogLevel				(show agent log level)  GetConfig				  (show config)  GetTasks					(show tasks)  GetTasksJson			  (show tasks)  GetTaskStatus			 (show task status)  AddTask "xxx"			 (add task)  RemoveTask "xxx"		 (remove task)  RemoveAllTasks			(remove all tasks)

需要用户注意的一些事情:

I. aegis_quartz 进程请匆停止,系统的监控数据采集是通过 aegis_quartz 完成

II. aegis_quartz 程序的调用请使用绝对路径,如 linux 环境下

/usr/local/aegis/aegis_quartz/aegis_quartz

III. aegis_quartz libexec/default 下面的脚本是内置的监控数据采集脚本,请用户匆

修改

IV. 用户的监控数据程序只能放在 libexec/user 目录下面;上面添加任务与删除任务

的示例中,脚本程序的路径写的即是相对路径。因此,用户在命令行中的脚本路径

只需要填写成 user/xxx 即可(其中 xxx,是用户的脚本)

V. 关于任务的执行频率,是基于标准的 quartz 表达式,用户按照规范填写即可。脚

本的监控数据上报频率请与云监控控制台中设置监控项【上报频率】保持一致(控

制台支持的频率是 1 分钟,5 分钟,15 分钟),若修改上报频率请保持控制台与

脚本一致,否则监控数据处理会不准确

4、配置报警

然后我们设置报警规则,在报警管理如图:

阿里云自定义监控配置实例_第3张图片

这里需要注意,字段的值一定要与脚本中字段的值一致,否则即使监控的值触发了你的报警规则,状态依然是正常的。

下面就是我收到阿里云的短信报警信息,上报频率5分钟

【阿里云】您监控tomcat的f45966d***e60d在11:10发生报警,实例:(server07-tomcat-stop),值为0个,请登录云监控平台查看

【阿里云】您监控tomcat的f45966d***e60d在11:15发生报警,实例:(server07-tomcat-stop),值为0个,请登录云监控平台查看

配置成功。