一.自定义监控进程
1.以httpd服务为例,在agent1中安装httpd
132终端
[root@agent1 ~]# yum -y install httpd
Complete!
[root@agent1 ~]# systemctl restart httpd
[root@agent1 ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@agent1 ~]# ps -ef|grep httpd
root 2931 1 0 14:17 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2932 2931 0 14:17 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2933 2931 0 14:17 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2934 2931 0 14:17 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2935 2931 0 14:17 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 3665 1425 0 14:19 pts/0 00:00:00 grep --color=auto httpd
[root@agent1 ~]# ps -ef | grep httpd | grep -v grep | wc -l
5
[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 /etc/zabbix/script/
[root@agent1 script]# ll
total 4
-rwxr-xr-x 1 zabbix zabbix 117 Sep 6 14:30 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
[root@agent1 script]# systemctl restart httpd
[root@agent1 script]# ./check_httpd.sh
0
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.46.132 -k check_httpd
0
5.zabbix web平台配置
6.配置触发器
7.测试–关闭httpd服务,测试告警信息
此时关掉服务查看
[root@agent1 script]# systemctl stop httpd
到163邮箱查看是否接收到警告邮件
此时启动服务(修复问题)查看
修复好了之后也会在163邮箱里收到问题已修复的邮件
二.自定义监控日志
下载log.py来协助我们进行测试,以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 log.py
[root@agent1 script]# chown zabbix.zabbix log.py
[root@agent1 script]# chmod +x log.py
[root@agent1 script]# ll
total 8
-rwxr-xr-x 1 zabbix zabbix 117 Sep 6 14:30 check_httpd.sh
-rwxr-xr-x 1 zabbix zabbix 1854 Sep 6 15:23 log.py
2.httpd服务的日志文件在/var/log/httpd/目录下,首先我们需要给这个目录设置一个ACL权限,让zabbix用户有权限去访问该目录
[root@agent1 script]# setfacl -m u:zabbix:r-x /var/log/httpd/
3.下载python3来执行log.py脚本
[root@agent1 script]# yum -y install python3
Complete!
4.修改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
UserParameter=check_logs[*],/usr/bin/python3 /etc/zabbix/script/log.py $1 $2 $3
重启服务
[root@agent1 script]# systemctl restart zabbix-agent.service
5、测试脚本
0为没有Error日志信息,1为有Error日志信息
[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
[root@agent1 script]# vim /var/log/httpd/error_log
Error(最后一行删掉)
测试完成后将写入的Error内容删除,而且因文件/tmp/logseek属于root账户,在web端写入写不进去,所以删除。
[root@agent1 script]# cd /tmp
[root@agent1 tmp]# ls
ks-script-6beai4br
logseek
systemd-private-1df51c7a13fd4ddbbb04356a0976b812-httpd.service-JcIKKw
vmware-root_895-3979642976
vmware-root_917-4022308724
vmware-root_925-3988621690
vmware-root_931-3988621659
[root@agent1 tmp]# rm -rf logseek
6.配置监控项
7.创建触发器