1. 配置主动模式
通常情况下,我们不需要监控服务的具体运行状态,只需要知道服务在运行、端口在监听即可。我们可以通过脚本自定义键值来实现目的,但相比于Zabbix自带的键值来说显得稍微麻烦些。
1.1 设置主动模式
这里采用主动模式,有两个好处:
1. 不受客户端防火墙限制; 2. 可以减轻zabbix服务端的压力。
- 编辑zabbix-agent配置文件:
vim /etc/zabbix/zabbix_agent.conf Server=192.168.1.254 #被动模式的serverip地址,如果设置纯被动模式,可以注释掉这行 ServerActive=192.168.1.254 #主动模式的serverip地址 StartAgents=3 #打开主动模式,0表示纯主动模式,纯主动模式下不会监听任何tcp端口
纯主动模式下,zabbix-agent 不会监听10050端口。而且,在web界面配置监控项时,如果设置为Zabbix客户端,监控项也是不会起作用的,必须设置为Zabbix客户端(主动式)。
上面,指定了主、被动模式下server端ip地址,而且进行被动检查的agent分支进程设置为3,所以是主、被动模式共存。
1.2 设置监控端口
倘若一个服务监听的端口没了,那这个服务必然宕掉了,我们可以通过监控端口是否存在来判断服务是否在运行。
- 先创建模板。配置 → 模板 → 创建模板
填好后,切换到宏页面,添加宏
- 再创建监控项。配置 → 模板 → Port and Proc monitor → 监控项 → 创建监控项
- 再创建触发器。还在Port and Proc monitor模板下面,触发器 → 新建触发器
- 再创建图形。图形 → 创建图形
- 测试监控效果:
nginx服务正在运行,正在监听80端口
systemctl stop nginx #关闭nginx服务
[root@server3 home]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1170/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10312/zabbix_agentd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 950/sshd tcp6 0 0 127.0.0.1:7001 :::* LISTEN 14274/java tcp6 0 0 :::12345 :::* LISTEN 14274/java tcp6 0 0 ::1:25 :::* LISTEN 1170/master tcp6 0 0 :::40607 :::* LISTEN 14274/java tcp6 0 0 :::10050 :::* LISTEN 10312/zabbix_agentd tcp6 0 0 :::8081 :::* LISTEN 14274/java tcp6 0 0 :::45105 :::* LISTEN 14274/java tcp6 0 0 :::22 :::* LISTEN 950/sshd
可以看到已经显示为0,收到邮件告警
systemctl start nginx
收到恢复告警
这样就实现了对端口的监控,而具体的端口我们是可以在宏那里定义的。
1.3 设置监控进程
监控了端口还不够,我们还要根据进程名来监控具体的进程,由此来判断业务服务是否在运行。具体步骤与上面类似,键值有改变。
- 在Port and Proc monitor模板页面,添加宏
- 创建监控项。监控项 → 创建监控项
- 创建触发器。触发器 → 创建触发器
- 创建图形。图形 → 创建图形
- 测试监控结果:
manager stop #自定义的java服务,关闭它
可以看到已经显示为0,收到邮件告警
manager start
收到恢复告警
这样就实现对具体进程的监控。
以上都是对服务的简单监控,如果监控需求不用涉及到服务具体的运行状态,那这样就可以满足需求。