一、实验需求
公司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
四、开启踩坑之旅——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官方文档既可