阿里云提供自定义监控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、添加自定义监控

脚本post方法说明

post方法中传入4个参数,分别为 aliuid,监控项名称,监控项值,字段信息(以下脚本中传入参数)。

最后按照第4部分的说明,添加定时任务即可。

再次强调这些参数的意义,参见云监控控制台自定义监控自定义监控项管理

a.命名空间中的数字串,即是用户的aliuid

b. 监控项名称,即是用户创建监控项时填写的名称

c. 监控项值,是用户上报到云监控的业务数据

d.  字段信息,结合监控项,表示具体业务字段的实际意义。

例如字段信息是  machineIp,监控项名称是 cpuutilization,若当前cpu利用率80%,那么在上面的示例中传入的 参数分别是 1359099605207770 ,cpuutilization,0.8,machineIp=192.168.1.1

2、定制脚本

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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.0
 
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export VAUL=$(ps --user tomcat |grep java |wc -l)
#export VAUL=$(ps aux --user deploy |grep java |grep -E "a|b|c"|wc -l)
#export IP=$(ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//' |grep -v "127.0.0.1" |sed -n "1p")
export HOSTS=$(hostname)
#新版监控脚本位置自定义
/usr/local/aegis/script/cms_post.sh 1359099605207770 tomcat $VAUL java=$HOSTS-tomcat-stop

给予脚本执行权限
chmod +x cms_post.sh tomcat_process_check.sh

3、配置调度任务

3-1新版监控(cloudmonitor进程):

将脚本放置到任意位置中:
/usr/local/aegis/script/

添加crontab定时任务(与云监控控制台中设置监控项【上报频率】保持一致)

* * * * * /bin/bash /usr/local/aegis/script/tomcat_process_check.sh >/dev/null 2>&1

3-2旧版监控:如果是利用阿里云监控自带的调度任务,那么我们需要将脚本放置到制定位置:
/usr/local/aegis/aegis_quartz/libexec/user
然后添加调度任务,执行此命令必须使用绝对路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/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 "RemoveTask [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 分钟),若修改上报频率请保持控制台与
脚本一致,否则监控数据处理会不准确

如果你发现不能上报数据,可以使用

/usr/local/aegis/aegis_quartz/aegis_quartz -e "SetLogLevel debug"

设置日志级别,来查看日志排查问题。更多选项请查看 aegis_quartz -h

日志目录 /usr/local/aegis/aegis_quartz/log

4、配置报警

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

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

下面就是我收到阿里云的短信报警信息,上报频率5分钟
【阿里云】您监控tomcat的f45966d***e60d在11:10发生报警,实例:(server07-tomcat-stop),值为0个,请登录云监控平台查看
【阿里云】您监控tomcat的f45966d***e60d在11:15发生报警,实例:(server07-tomcat-stop),值为0个,请登录云监控平台查看

配置成功。

阿里云自定义监控tomcat进程数的更多相关文章

  1. 使用腾讯云“自定义监控”监控GPU使用率

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 随着人工智能以及比特币的火热,GPU云服务的使用场景是越来越广,在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行.目 ...

  2. 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除

    阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除 4. ECS 实例释放后,自定义镜像是否还存在? 存在. 5. ECS 实例释放后,快照是否还存在? 保留手动快照,清除自动 ...

  3. 搭建阿里云 centos mysql tomcat jdk

    [toc] 阿里云使用centos 登录 http://www.aliyun.com/ 点击登录 进入控制 https://home.console.aliyun.com/ 云服务器 运行中 把ip输 ...

  4. 阿里云服务器 配置 tomcat 发布spring boot项目 的具体操作 【使用公网ip】

    1.前言 spring boot 转成war包 后用tomcat发布的具体操作在我另一篇随笔有详细记载,不论是window系统还是Linux系统,tomcat的发布配置都是一样的,所以这里不具体讲这个 ...

  5. 阿里云Linux启动tomcat并能外网访问

    问题描述: 先描述一下我的心路历程吧,新买了阿里云服务器,由于需求不是很大,只是为了备案,所以买了个最低配的,而且是Windows server2012的.那现在需要做的是在这个乞丐版的server上 ...

  6. 阿里云 ECS 监控报警设置

    1.阿里云监控项说明 https://helpcdn.aliyun.com/document_detail/43505.html 2.监控设置 3.报警规则 4.设置阈值 5.确定即可. 6.效果图

  7. 阿里云SSL证书tomcat配置

    1. SSL证书申请 登录阿里云控制台,查看购买域名中有SSL证书的申请,ssl证书申请中有单域名的申请,配置要申请的域名信息(注意:一个域名下,一次只能添加一个证书,最多申请3个免费证书用于测试), ...

  8. 阿里云服务器对外开放tomcat端口访问

    今天第一次在阿里云服务器ecs上安装完成tomcat,然后启动tomcat之后.在本地输入ip:端口,发现不能访问. 出现这个的原因可能是你购买的服务器是 专有网络 类型的 如果是专有网络类型的服务器 ...

  9. 阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。

    1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,能够看看.没怎么看懂.呵呵,要细细读下. 2.须要开启to ...

随机推荐

  1. Java 工程师求职遇害|多一分警惕,少一份悲剧

    当朋友圈里满是战狼票房屡创新高的刷屏文章时,一则有关 Java 开发工程师李文星面试遇害的报道,却令人唏嘘不已.年仅23岁.正值青春年少.怀揣着通过打拼奋斗实现养家糊口梦想的大学毕业生,在初入职场的第 ...

  2. 基于Html5的爱情主题网站–表白神器

    介绍 一个基于基于Html5的爱情主题,文字采用打字机效果,逐字打印,并带有键盘敲击声音.在chrome,safari,firefox,IE10下都有效,chrome下效果最佳.要注意的是safari ...

  3. 使TextView里面的文字滚动起来

    要使TextView里面的内容滚动起来,那么就要配置好几个参数, 1.focusable来获取焦点. 2.ellipsize来获得滚动的方法. 3.focusableInTouchMode来获取触摸方 ...

  4. POI使用 (4.0) 常用改动

    POI 升级到高版本后,原有的EXCLE导入导出工具类部分代码已不适用,目前只是对我自己写的工具类的过期代码进行更新,以后继续更新 若有问题请指出,再修改 1.数据类型 Cell.CELL_TYPE_ ...

  5. [C#] DataTable转成List集合

    项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...

  6. 【传输协议】发送https请求,由于客户端jdk版本过高,服务端版本低。导致异常:javax.net.ssl.SSLHandshakeException: Server chose SSLv3, but that protocol version is not enabled or not supported by the client.

    本地环境jdk为1.8,服务器使用jdk版本未知.但发送https请求,抛出如下异常,解决方案. 一:发送异常内容如下 javax.net.ssl.SSLHandshakeException: Ser ...

  7. 使用ksync 加速基于k8s 的应用开发

      ksync 实际上实现了类似 docker docker run -v /foo:/bar 的功能,可以加速我们应用的开发&&运行 安装 mac os curl https://v ...

  8. PHP 设计模式 原型模式(Prototype)之深/浅拷贝

      看PHP 设计模式 原型模式(Prototype)时,衍生出一个扩展问题之 原型拷贝的浅拷贝和深拷贝问题(不管写Java还是写PHP还是写JS时都多多少少遇到过对象拷贝问题)   比如写前端页面时 ...

  9. /etc/sysctl.conf参数解释(转)

    来自<深入理解Nginx模块开发与架构解析> P9 #表示进程(例如一个worker进程)可能同时打开的最大句柄数,直接限制最大并发连接数fs.file max = 999999 #1代表 ...

  10. laravel 控制器中使用 try catch

    需要操作数据库时,当数据字段不一致,mysql报错,控制程序,需要使用try catch 下面是使用案例 $morder['morder_time'] = time();//在这里使用try catc ...