阿里云自定义监控tomcat进程数

本文涉及的产品
云监控,每月短信1000条
简介:

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

wKioL1e20eWRYRSbAAB9aE0TujE127.png

脚本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、配置报警

然后我们设置报警规则,在报警管理如图:
fail
这里需要注意,字段的值一定要与脚本中字段的值一致,否则即使监控的值触发了你的报警规则,状态依然是正常的。

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

配置成功。

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1840371如需转载请自行联系原作者


qianghong000

相关实践学习
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
相关文章
|
25天前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
3月前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
|
13天前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
19天前
|
数据采集 监控 API
如何监控一个程序的运行情况,然后视情况将进程杀死并重启
这篇文章介绍了如何使用Python的psutil和subprocess库监控程序运行情况,并在程序异常时自动重启,包括多进程通信和使用日志文件进行断点重续的方法。
|
4月前
|
缓存 监控 调度
第六十一章 使用 ^PERFSAMPLE 监控进程 - 分析维度
第六十一章 使用 ^PERFSAMPLE 监控进程 - 分析维度
35 0
|
16天前
|
应用服务中间件 Linux iOS开发
使用 setenv 配置文件管理 Tomcat 的自定义环境变量
【8月更文挑战第29天】通过在Tomcat安装目录的`bin`文件夹下创建`setenv.sh`或`setenv.bat`文件,可以轻松管理Tomcat的自定义环境变量。针对Linux/macOS系统,需编辑`setenv.sh`文件,如`export MY_CUSTOM_VAR="my custom value"`;而在Windows系统中,则编辑`setenv.bat`,如`set MY_CUSTOM_VAR=my custom value`。
|
22天前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
23天前
|
Java 应用服务中间件 Windows
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
2月前
|
监控 安全 Java
使用JMX监控Tomcat
【7月更文挑战第18天】
|
2月前
|
测试技术 持续交付 对象存储
阿里云云效产品使用合集之健康检查是否可以探测到失败的进程的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。