Zabbix 进程监控介绍
Zabbix可以很方便地监控服务器上的各种进程。在使用Zabbix进行进程监控时,被监控的节点通常需要安装Zabbix Agent。Zabbix Agent 是一个轻量级的代理程序,安装在被监控的主机上,用于收集系统的各种性能数据和指标,如CPU、内存、磁盘使用情况以及特定进程的运行状态等。
安装了Zabbix Agent后,登录Zabbix Server的Web界面添加新主机,通过配置相应的监控项(Item)和触发器来监控特定进程的状态。例如,使用proc.num
键来监控某个进程的数量,使用proc.mem
键来监控某个进程的内存使用情况,等等。
以下是Zabbix进程标准检测器的列表:
# 进程 CPU 利用率百分比。返回浮点数
proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]
# 操作系统进程及属性列表。返回 JSON 数组
proc.get[<name>,<user>,<cmdline>,<mode>]
# 进程内存,以字节为单位。返回整数
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
# 进程数。返回整数
proc.num[<name>,<user>,<state>,<cmdline>,<zone>]
# 具体处理的各个信息。返回浮点数
proc_info[process,<attribute>,<type>]
有以下三种进程监控配置方法:
- 直接在主机中新建监控项和触发器
- 新建模板,在模板中新建监控项和触发器
- 在zabbix客户端的配置文件添加过滤进程然后在服务器调取状态
Zabbix进程监控配置
zabbix环境信息:
节点 | IP | OS | Role |
---|---|---|---|
zabbix-server | 192.168.72.31 | Ubuntu 22.04 | zabbix-server |
web-server | 192.168.72.33 | Ubuntu 22.04 | web-server/zabbix-agent |
zabbix 版本: v7.0.0
前置要求:已在web-server上安装zabbix-agent,并且在zabbix-server上添加web-server主机。
在web-server上安装nginx服务作为示例应用进程。
apt install -y nginx
查看nginx进程数为3个
root@web-server:~# ps -ef | grep ngin[x]
root 46597 1 0 14:20 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 46598 46597 0 14:20 ? 00:00:00 nginx: worker process
www-data 46599 46597 0 14:20 ? 00:00:00 nginx: worker process
root@web-server:~#
在zabbix web控制台上,导航到数据采集 -> 主机,选择web-server节点
选择监控项,新建监控项
配置参数说明:
- 名称:
Check Nginx Process
- 类型:Zabbix 客户端
- 键值:
proc.num[nginx]
选择触发器,创建触发器,在表达式中选择Check Nginx Process
配置参数说明:
- 名称:
Nginx Process Not Running
- 表达式:点击添加,监控项选择
Check Nginx Process
,插入后表达式为:last(/zabbix-agent01/proc.num[nginx])=0
,当nginx进程数为0时进行告警
选择告警->动作->创建动作,在触发器中选择Nginx Process Not Running
配置参数说明:
- 名称:
Notify on Nginx Process Down
- 条件:点击添加,触发器选择
Nginx Process Not Running
配置操作
自定义消息内容如下:
Problem: {EVENT.NAME}
-=【告警】=-
告警组:{TRIGGER.HOSTGROUP.NAME}
告警主机:{HOSTNAME1}
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
主机描述:{HOST.DESCRIPTION}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
警报类别:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警平台:http://192.168.72.31/zabbix
说明:告警平台地址为zabbix-server地址。
配置恢复操作
自定义消息内容如下:
Resolved:{EVENT.NAME}
-=【告警取消啦】=-
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
在监测->最新数据中,选择web-server,查看监控数据图形:
可以在zabbix-server节点使用zabbix_get
命令测试监控项,这会返回匹配进程的数量
root@zabbix-server:~# apt install -y zabbix-get
root@zabbix-server:~# zabbix_get -s 192.168.72.33 -p 10050 -k "proc.num[nginx]"
3
在web-server上停止nginx服务
root@web-server:~# systemctl stop nginx
查看收到的钉钉告警消息
自定义配置文件
另一种进程监控方式为,通过在Zabbix客户端配置文件中添加自定义用户参数(UserParameter),可以实现对特定进程的监控。这是一种灵活的监控方法,可以根据需求定制化监控项。以下是具体步骤和示例:
打开Zabbix Agent配置文件,添加自定义用户参数。例如,监控Nginx进程:
root@web-server:~# nano /etc/zabbix/zabbix_agentd.conf
UserParameter=nginx.status,pgrep nginx | wc -l
这条指令的意思是通过pgrep nginx
命令查找Nginx进程,并返回匹配的进程数。
重启Zabbix Agent以应用新配置:
root@web-server:~# systemctl restart zabbix-agent
使用管理员权限登录到Zabbix的Web界面。导航到数据采集-> 主机,添加监控项,只需修改键值为nginx.status
即可。