一、自定义监控进程
1、以httpd服务为例,在agent1中安装httpd
[root@agent1 ~]# dnf -y install httpd
[root@agent1 ~]# systemctl restart httpd
[root@agent1 ~]# systemctl enable httpd
[root@agent1 ~]# ps -ef |grep -v grep |grep -c httpd
5
2、新建脚本存放目录
[root@agent1 ~]# cd /etc/zabbix/
[root@agent1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@agent1 zabbix]# mkdir script
[root@agent1 zabbix]# cd script/
[root@agent1 script]# vim check_httpd.sh
#!/bin/bash
count=$(ps -ef | grep -Ev "grep|$0" | grep -c httpd)
if [ $count -eq 0 ];then
echo '1'
else
echo '0'
fi
[root@agent1 script]# chmod +x check_httpd.sh
[root@agent1 script]# chown -R zabbix.zabbix check_httpd.sh
测试脚本--0是httpd服务开启,1为关闭
[root@agent1 script]# ./check_httpd.sh
0
[root@agent1 script]# systemctl stop httpd
[root@agent1 script]# ./check_httpd.sh
1
3、修改zabbix_agentd.conf文件
[root@agent1 script]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=loginusers,who | wc -l
UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh
[root@agent1 script]# systemctl restart zabbix-agent.service
4、zabbix server端进行测试脚本
[root@server ~]# zabbix_get -s 192.168.244.141 -k check_httpd
0
5、zabbix web平台部署
6、配置触发器
7、测试–关闭httpd服务,测试告警信息
二、自定义监控日志
1、将log.py上传到/etc/zabbix/script/目录下,然后给执行权限,修改所有者和所属组为zabbix
# log.py
### 作用:检查日志文件中是否有指定的关键字
#### 第一个参数为日志文件名(必须有,相对路径、绝对路径均可)
#### 第二个参数为seek position文件的路径(可选项,若不设置则默认为/tmp/logseek文件。相对路径、绝对路径均可)
#### 第三个参数为搜索关键字,默认为 Error
[root@agent1 ~]# cd /etc/zabbix/script/
[root@agent1 script]# ls
check_httpd.sh
[root@agent1 script]# rz -E
rz waiting to receive.
[root@agent1 script]# ls
check_httpd.sh log.py
[root@agent1 script]# chown zabbix.zabbix log.py
[root@agent1 script]# chmod +x log.py
2、httpd服务的日志文件在/var/log/httpd/目录下,首先我们需要给这个目录设置一个ACL权限,让zabbix用户有权限去访问该目录
[root@agent1 ~]# setfacl -m u:zabbix:r-x /var/log/httpd/
3、下载python3来执行log.py脚本
[root@agent1 ~]# dnf -y install python3
4、修改zabbix_agentd.conf文件,并重启服务
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=loginusers,who | wc -l
UserParameter=check_httpd,/bin/bash /etc/zabbix/script/check_httpd.sh
UserParameter=check_logs[*],/usr/bin/python3 /etc/zabbix/script/log.py $1 $2 $3
[root@agent1 ~]# systemctl restart zabbix-agent.service
5、测试脚本
[root@agent1 script]# python3 log.py /var/log/httpd/error_log
0
[root@agent1 script]# echo "Error" >> /var/log/httpd/error_log
[root@agent1 script]# python3 log.py /var/log/httpd/error_log
1
0为没有Error日志信息,1为有Error日志信息
测试完成后将写入的Error内容删除,而且因文件/tmp/logseek属于root账户,在web端写入写不进去,所以删除。
[root@agent1 script]# cd /tmp
[root@agent1 tmp]# ls
containers-user-1000
hsperfdata_root
logseek
systemd-private-4b067ca01cc04af2b848e0a22f395b58-bluetooth.service-G337tj
systemd-private-4b067ca01cc04af2b848e0a22f395b58-chronyd.service-ey7Cbi
systemd-private-4b067ca01cc04af2b848e0a22f395b58-colord.service-JYDa9i
systemd-private-4b067ca01cc04af2b848e0a22f395b58-httpd.service-VEFzjf
systemd-private-4b067ca01cc04af2b848e0a22f395b58-ModemManager.service-N9b7ri
systemd-private-4b067ca01cc04af2b848e0a22f395b58-rtkit-daemon.service-OVykPh
vmware-root_944-2697139479
[root@agent1 tmp]# rm -rf logseek
6、配置监控项
7、创建触发器
8、测试,echo Error >> /var/log/httpd/error_log
|