一、实验需求
公司tomcat服务经常自动崩溃,导致业务中断,暂时用zabbix对其执行监控,在tomcat崩溃时能够先自动启动,保证业务尽快恢复正常。
二、准备环境
系统环境:CentOS 6.5
IP地址:
zabbix-server: 192.168.239.128
zabbix-agent: 192.168.239.130
zabbix的服务端和客户端的安装此处都以rpm包安装,配置略过。agent端上安装好tomcat。
三、开启踩坑之旅――agent端
① 修改zabbix-agent配置文件,修改后重启生效
# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 开启agent端远程命令执行功能
# sudo server zabbix-agent restart
② 修改sudoers,给zabbix用户赋予权限,不然zabbix-agent无法执行命令
# sudo visudo
zabbix ALL=NOPASSWD: ALL
zabbix ALL=NOPASSWD: /usr/loacal/catalina.sh start
③ 在tomcat启动脚本中添加jdk的环境变量,不然仍有可能启动不起来。
(超级大坑,被坑了俩礼拜才找到问题)
# vim /usr/local/tomcat/bin/catalina.sh # 添加jdk环境变量
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
四、开启踩坑之旅――server端
① 先创建一个Host ,直接填入agent端的IP就行
② 创建Item,使用�冉ǖ�Key
"proc.num[<name>,<user>,<state>,<cmdline>]"
通过某用户执行,某进程状态,进程名称来统计进程的数量
name:进程名称(默认"all processes")
user:用户名(默认"all user")
state:进程状态(默认"all"),可选:run,sleep,zomb
cmdline:命令行过滤(使用正则表达式查找进程)
例如: proc.num[,root,all,tomcat] 统计root用户运行匹配tomcat的所有状态的进程。
③ 创建Trigger,设定触发条件,下面的表达式意思就是 最近第二次的结果为0就触发告警
④ 创建Action
Operation type:改为执行远端命令
Target list:选定执行的agent
Type:可以有多种选择,此处是启动tomcat,选择Remote command或ssh既可
Execute on:执行端,默认选择agent端既可
Commands:写入想让agent端执行的命令既可
坑:这里的命令尤为注意,一定要加sudo提升zabbix的权限,不然命令无法执行,并且远程命令执行不会有回复信息的,排错也比较难。
五、测试
① agent端关闭tomcat
② server显示为故障,过一会儿就正常了。(正常的图是截完日志再截的,时间上有点久)
③ 通过日志也可以看出server端恢复了
总结:关键点总结
① zabbix-agent端:
添加 EnableRemoteCommands=1
修改sudoers,给zabbix授权
② zabbix-server端:
确保触发条件和执行条件正常,远程命令记得添加 sudo
直接参考zabbix官方文档既可
本文出自 “Linux学习记录表” 博客,请务必保留此出处http://pixiuwho.blog.51cto.com/2966916/1764770