zabbix自定义监控进程与日志
目录
- zabbix自定义监控进程与日志
- zabbix自定义监控进程
- zabbix自定义监控日志
zabbix自定义监控进程
基于之前的邮箱告警,部署完成后,我们在zabbix客户端进行编译脚本用来监控进程,
下面是通过httpd进程来进行测试
在客户端
[root@localhost ~]# dnf -y install httpd //下载httpd[root@localhost ~]# systemctl enable --now httpdCreated symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.设置开机自启[root@localhost ~]# mkdir -p /scripts/zabbix/ //创建脚本存放目录[root@localhost ~]# cd /scripts/zabbix/[root@localhost zabbix]# vim check_process.sh //编辑脚本[root@localhost zabbix]# cat check_process.sh #!/bin/bash count=$(ps -elf | grep -vE "$0|grep" | grep $1 | wc -l) //定义一个变量统计服务进程的行数 if [ $count -eq 0 ];then //使用if语句,当count等于0的时候就说明有问题,打印“1”,代表有问题 echo "1" else echo "0" //否则打印“0”,代表没问题 fi[root@localhost zabbix]# chmod +x check_process.sh //赋予执行权限[root@localhost zabbix]# ./check_process.sh httpd0 //没问题[root@localhost zabbix]# ./check_process.sh mysql1 //有问题[root@localhost zabbix]# vim /usr/local/etc/zabbix_agentd.conf//编辑/usr/local/etc/zabbix_agentd.conf文件UnsafeUserParameters=1UserParameter=check_process[*],/bin/bash /scripts/zabbix/check_process.sh $1[root@localhost zabbix]# pkill zabbix_agentd [root@localhost zabbix]# zabbix_agentd //先杀死再重启[root@localhost ~]# ss -antl //查看端口State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:10050 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 *:80 *:* LISTEN 0 128 [::]:22 [::]:*
在服务端测试
[root@localhost ~]# ss -antl //查看端口State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:80 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 100 127.0.0.1:25 0.0.0.0:* LISTEN 0 128 0.0.0.0:10050 0.0.0.0:* LISTEN 0 128 0.0.0.0:10051 0.0.0.0:* LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 100 [::1]:25 [::]:* LISTEN 0 70 *:33060 *:* LISTEN 0 128 *:3306 *:* [root@localhost ~]# zabbix_get -s 192.168.222.251 -k check_process[httpd]0//在服务端进行测试,输入的是客户端的ip
接下来就需要在zabbix web管理界面去定义监控项与触发器了
创建监控项
这里选择的主机与你的被监控主机(客户端)对应
点击add(添加)
添加触发器
现在关掉被监控端(客户端)的httpd服务,验证效果
[root@localhost ~]# systemctl stop httpd
zabbix自定义监控日志
监控日志同样需要使用脚本(或Python),也需要在被监控端做配置
以下需要用到的log.py文件可以去GitHub面查看下载log.py
在客户端
我们想要监控/var/log/error_log日志有没有错误信息,要确保这个目录谁都可以读取,文件也一样
[root@localhost ~]# cd /var/log/httpd/[root@localhost httpd]# chmod 775 /var/log/httpd/[root@localhost httpd]# ll -d /var/log/httpd/drwxrwxr-x. 2 root root 41 Sep 7 03:05 /var/log/httpd/[root@localhost httpd]# ll /var/log/httpd/error_log -rw-r--r--. 1 root root 2348 Sep 7 03:50 /var/log/httpd/error_log[root@localhost ~]# cd /scripts/zabbix/[root@localhost zabbix]# dnf module -y install python38 //没有python安装[root@localhost zabbix]# lscheck_process.sh[root@localhost zabbix]# vim log.py[root@localhost zabbix]# lscheck_process.sh log.py[root@localhost zabbix]# chmod +x log.py //赋予执行权限[root@localhost zabbix]# vim /usr/local/etc/zabbix_agentd.confUserParameter=check_logs[*],/usr/bin/python3 /scripts/zabbix/log.py $1 $2 $3//编辑/usr/local/etc/zabbix_agentd.conf文件[root@localhost zabbix]# pkill zabbix_agentd [root@localhost zabbix]# zabbix_agentd //杀死重启zabbix_agentd
//在服务端测试是否可用
[root@localhost ~]# zabbix_get -s 192.168.222.251 -k check_logs[/var/log/httpd/error_log,/tmp/logseek,error]
配置监控项
配置触发器
在被监控端手动触发告警
[root@localhost zabbix]# echo "Error" >> /var/log/httpd/error_log