思路1:我们通过监测应用的端口是否挂掉来判断该端口对应的应用是否挂掉。
思路2:如果一个进程没有监听端口(即每次服务启动,生成的端口都不固定),则可以直接监测应用的进程,来判断应用有没有挂
以192.168.158.141 这台服务器上的 tomcat服务 为例:
思路1 --- 通过监控端口方式
1. 配置 ---> 主机:192.168.158.141 ---> 监控项 ---> 创建监控项
2. 根据自己需求填写 监控项参数
3. 配置 ---> 主机: 192.168.158.141 ----> 触发器 ----> 创建触发器
4. 填写触发器相关参数
触发器名字可以随便起
到此,思路1就结束了。
报警效果示例参考截图如下(我这里使用的是邮件报警):
思路2 --- 通过监控进程方式
如果一个进程没有监听端口,则可以使用如下 key
key: proc.num[<name>,<user>,<state>,<cmdline>]
通过某用户执行,某进程状态,进程名称来统计进程的数量
name: 是进程名称(默认“all processes”)
user: 运行该进程的用户名(默认"all user")
state: 进程状态(默认"all"), 可选:run, sleep, zomb
cmdline: 该项内容是模糊匹配,命令行过滤(支持正则表达式)
注:name 匹配可能不是很准,一般根据cmdline来匹配进程
例如:proc.num[,root,all,tomcat] 统计root用户运行匹配tomcat的所有状态的进程。
先在zabbix 服务端通过 zabbix_get 测一下(不要在zabbix agent端 使用zabbix_agent 命令去测,因为会不准)
# tomcat 服务关闭后
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,root,all,apache-tomcat-7.0.94]
0
或
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,,,apache-tomcat-7.0.94]
0# tomcat 服务启动后
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,root,all,apache-tomcat-7.0.94]
1
或
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,,,apache-tomcat-7.0.94]
1# mysql 服务启动后
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,mysql,all,mysqld]
1
或
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,,,mysqld]
1# mysql 服务关闭后
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,mysql,all,mysqld]
0
或
[root@zabbix_nginx ~]# zabbix_get -s 192.168.158.141 -k proc.num[,,,mysqld]
0
1. 配置 ---> 主机:192.168.158.141 ---> 监控项 ---> 创建监控项
2. 根据自己需求填写 监控项参数
3. 创建触发器
配置 ---> 主机: 192.168.158.141 ----> 触发器 ----> 创建触发器
到此,思路2 就结束了。
报警效果示例参考截图如下(我这里使用的是邮件报警):