Zabbix监控进程/服务的方法(以NFS服务为例)

监控的层级我认为可分为四个层次:硬件层、操作系统层、应用程序层、业务层。

对于应用程序的监控,首先需要判断应用进程是否存在,端口是否可连接,以NFS服务为例,可监控如下项目:

监控项键值类型
nfsd TCP端口监控 net.tcp.listen[2049] Zabbix 客户端
nfsd UDP端口监控 net.udp.listen[2049] Zabbix 客户端
nfsd进程监控(NFS守护进程) proc.num[nfsd,root] Zabbix 客户端
portmap TCP端口监控 net.tcp.listen[111] Zabbix 客户端
portmap UDP端口监控 net.udp.listen[111] Zabbix 客户端
rpc.mountd进程监控(RPC安装守护进程) proc.num[rpc.mountd,root] Zabbix 客户端
rpcbind进程监控(端口映射) proc.num[rpcbind,root] Zabbix 客户端

配置相应的触发器如下:

名称表达式
nfsd TCP端口2049非监听状态 {NFS Service Monitor:net.tcp.listen[2049].max(#2)}=0
nfsd UDP端口2049非监听状态 {NFS Service Monitor:net.udp.listen[2049].max(#2)}=0
nfsd进程异常 {NFS Service Monitor:proc.num[nfsd,root].max(#2)}=0
portmap TCP端口111非监听状态
{NFS Service Monitor:net.tcp.listen[111].max(#2)}=0
portmap UDP端口111非监听状态 {NFS Service Monitor:net.udp.listen[111].max(#2)}=0
rpc.mountd进程异常 {NFS Service Monitor:proc.num[rpc.mountd,root].max(#2)}=0
rpcbind进程异常 {NFS Service Monitor:proc.num[rpcbind,root].max(#2)}=0

(对于web监控,我们可使用zabbix的”web监测“功能,判断http状态码或者直接测试登录流程。)

当然,进程存在并不真意味着服务正常,程序故障,通常从日志中先反映出来,可使用zabbix中的”zabbix客户端(主动式)”类型监控项

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

监控日志关键字,如“warning”、“error”等。

当然最直接的方法是直接通过测试业务流程来监控,这又是另一个层面的问题了。