阿里云自定义监控tomcat进程数
阿里云提供自定义监控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进程数的更多相关文章
- 使用腾讯云“自定义监控”监控GPU使用率
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 随着人工智能以及比特币的火热,GPU云服务的使用场景是越来越广,在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行.目 ...
- 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除
阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除 4. ECS 实例释放后,自定义镜像是否还存在? 存在. 5. ECS 实例释放后,快照是否还存在? 保留手动快照,清除自动 ...
- 搭建阿里云 centos mysql tomcat jdk
[toc] 阿里云使用centos 登录 http://www.aliyun.com/ 点击登录 进入控制 https://home.console.aliyun.com/ 云服务器 运行中 把ip输 ...
- 阿里云服务器 配置 tomcat 发布spring boot项目 的具体操作 【使用公网ip】
1.前言 spring boot 转成war包 后用tomcat发布的具体操作在我另一篇随笔有详细记载,不论是window系统还是Linux系统,tomcat的发布配置都是一样的,所以这里不具体讲这个 ...
- 阿里云Linux启动tomcat并能外网访问
问题描述: 先描述一下我的心路历程吧,新买了阿里云服务器,由于需求不是很大,只是为了备案,所以买了个最低配的,而且是Windows server2012的.那现在需要做的是在这个乞丐版的server上 ...
- 阿里云 ECS 监控报警设置
1.阿里云监控项说明 https://helpcdn.aliyun.com/document_detail/43505.html 2.监控设置 3.报警规则 4.设置阈值 5.确定即可. 6.效果图
- 阿里云SSL证书tomcat配置
1. SSL证书申请 登录阿里云控制台,查看购买域名中有SSL证书的申请,ssl证书申请中有单域名的申请,配置要申请的域名信息(注意:一个域名下,一次只能添加一个证书,最多申请3个免费证书用于测试), ...
- 阿里云服务器对外开放tomcat端口访问
今天第一次在阿里云服务器ecs上安装完成tomcat,然后启动tomcat之后.在本地输入ip:端口,发现不能访问. 出现这个的原因可能是你购买的服务器是 专有网络 类型的 如果是专有网络类型的服务器 ...
- 阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。
1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,能够看看.没怎么看懂.呵呵,要细细读下. 2.须要开启to ...
随机推荐
- 二、深度解析HTML5之视频播放和音频播放
一:视频播放 传统的视频音频播放是通过flash插件的形式完成,不是所有的浏览器都安装了flash插件,而且手机端不支持flash,这就导致视频和音频的播放会有很大的麻烦. 于是,HTML5增加音频和 ...
- webpack 提升90%的构建速度 HardSourceWebpackPlugin
HardSourceWebpackPlugin 插件 不能提升第一次构建的速度,但对于第二次构建能提升99%的构建速度 第一次构建: 第二次: 提升了..,算不出来,反正就是很多啦~~~ npm in ...
- BZOJ3436: 小K的农场(差分约束裸题&DFS优化判环)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2111 Solved: 986[Submit][Status][Discus ...
- InputStream,String和Reader之间的转换
1.String –> InputStreamInputStrem is = new ByteArrayInputStream(str.getBytes());orByteArrayInputS ...
- Map排序(按key排序,按value排序)
主要分两种,按键排序.按值排序. 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用. 一.按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小 ...
- Loj 2005 相关分析
Loj 2005 相关分析 大力把式子拆开. \[ \begin{aligned} a &= \frac {\sum_{i=L}^{R} (x_i-\bar{x})(y_i-\bar{y})} ...
- webdriver的2种等待
隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉WebDriver查询Dom一定时间,默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用 driver.man ...
- 用Navicat复制数据库到本地(导入.sql文件运行)
今天装数据库的机子没开,项目运行不了,于是还是决定在自己电脑上装数据库,由于新学数据库操作,记录一下 一.转储sql文件 右键点击数据库,转储sql文件,点击结构和数据 存放在本地,开始转储 转储完成 ...
- 初识安卓小程序(Android短信发送器)
首先,先创建一个安卓项目(我的版本号是4.4.2的),名字为"短信发送器" 然后在res目录下找到layout目录,找到activity_main.xml或fragment_mai ...
- c++ 声明和定义的区别
从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存.而定义就是分配了内存. int a;在外面是作为一个语句,这就是定义,会构造对象,定义本身也是声明. ...