1.需要安装zabbix-agent服务,使用的zabbix版本为5.0版本
参考:zabbix监控linux主机_Apex Predator的博客-CSDN博客
2.创建存放脚本目录并编辑监控服务的脚本(此处监控一下服务是否存活)
mkdir /opt/zabbix_jb
vi /opt/zabbix_jb/service_status.sh
#!/bin/bash
b=`ps -ef |grep "$2"|grep -v grep|wc -l` #统计服务存活的进程数量
a=`netstat -tlpn |grep "$1"|wc -l` #统计存活服务端口的数量
if [ $b == 0 ]; then #判断服务是否存活
echo '0' #不存活输出值为0,后面的zabbix server监控会用到此值
else
if [ $a == 0 ]; then #判断服务的端口是否存活,一般通过服务名称判断服务是否存活会不太准确,还需要和服务端口一起判断才能确定
echo '0'
else
echo '1'
fi
fi
3.给脚本赋予执行权限,并更改所属用户
chmod +x /opt/zabbix_jb/service_status.sh
chown zabbix.zabbix /opt/zabbix_jb/service_status.sh
4.编辑一个新的zabbix_agent子配置文件
vi /etc/zabbix/zabbix_agentd.d/check_service_status.conf
#check_service_status[*]参数为zabbix server调用的参数,*的内容为,在zabbix server上填入的所有内容,此内容作为队列被赋予到service_status.sh脚本内容变量的$1和$2中,一定要在命令后加上$1 $2两个参数,不然传参不成功,传不到脚本里
UserParameter=check_service_status[*],/bin/sh /opt/zabbix_jb/service_status.sh $1 $2
5.编辑zabbix_agent服务的配置文件
vi /etc/zabbix/zabbix_agentd.conf
Server=10.1.60.118 #配置为zabbix server的ip地址
ListenPort=10050 #保持默认配置
ListenIP=0.0.0.0 #保持默认配置
StartAgents=3 #保持默认配置
ServerActive=10.1.60.118 #配置为zabbix server的ip地址
Include=/etc/zabbix/zabbix_agentd.d/*.conf #保持默认配置,调用zabbix_agentd.d目录下所有以conf结尾的配置文件
6.重启zabbix-agent服务
systemctl restart zabbix-agent
7.使用 zabbix_get测试此项监控是否可用
需要先在zabbix server主机上安装zabbix_get服务
yum -y install zabbix-get
测试监控项
zabbix_get -s '10.1.60.112' -k 'check_service_status[:10050,zabbix-agent]'
符合上面脚本的设定,脚本设定中服务挂掉输出值为0,存活输出值为1,-k指定的是zabbix_agent子配置文件中调用的参数
执行的时候会报错,原因是zabbix用户不能使用netstat的-p参数
报错输出为
Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all
配置一下netstat的权限(+s为用户使用此命令的时候,临时具有root权限)
chmod u+s /usr/bin/netstat
8.在zabbix server web中配置监控项
9.配置触发器
10.测试
停掉112主机的kafka服务