zabbix自定义监控进程与日志
zabbix自定义监控进程与日志
zabbix自定义监控进程
现在我们需要监控客户端的某一个进程是否存在,来确定这个服务是否正常运行,所以需要在zabbix客户端进行操作并借助脚本(或Python)来实现
本实验在之前已经配置好了邮件告警,详情见《zabbix监控配置》
//例如我们现在想要检查httpd进程
[root@harbor ~]# dnf -y install httpd
[root@harbor ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
//创建一个脚本存放目录
[root@harbor ~]# mkdir -p /scripts/zabbix/
[root@harbor ~]# cd /scripts/zabbix/
//编写用于检查进程的脚本
[root@harbor zabbix]# vim 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 //否则打印“0”,代表没问题
echo "0"
fi
[root@harbor zabbix]# chmod +x check_process.sh
//执行脚本,测试一下
[root@harbor zabbix]# ./check_process.sh httpd
0
[root@harbor zabbix]# ./check_process.sh mysql
1
//编辑/usr/local/etc/zabbix_agentd.conf文件
[root@harbor zabbix]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /scripts/zabbix/check_process.sh $1
//重启zabbix_agentd
[root@harbor zabbix]# pkill zabbix_agentd
[root@harbor zabbix]# zabbix_agentd
//我们现在可以验证一下,在zabbix_server端进行操作
[root@localhost ~]# zabbix_get -s 192.168.169.140 -k check_process[httpd]
0
接下来就需要在zabbix web管理界面去定义监控项与触发器了
创建监控项
这里选择的主机与你的被监控主机对应
添加触发器
现在关掉被监控端(客户端)的httpd服务,验证效果
[root@harbor zabbix]# systemctl stop httpd
zabbix自定义监控日志
监控日志同样需要使用脚本(或Python),同样需要在被监控端做配置
以下需要用到的log.py文件可以去GitHub上面下载 log.py下载地址与使用说明
//例如我们想要监控/var/log/error_log日志有没有错误信息
//要确保这个目录谁都可以读取,文件也一样
[root@harbor httpd]# ll -d /var/log/httpd/
drwx------ 2 root root 41 Sep 6 15:47 /var/log/httpd/
[root@harbor httpd]# chmod 755 /var/log/httpd/
[root@harbor httpd]# ll -d /var/log/httpd/
drwxr-xr-x 2 root root 41 Sep 6 15:47 /var/log/httpd/
[root@harbor httpd]# ll /var/log/httpd/error_log
-rw-r--r-- 1 root root 1524 Sep 6 16:43 /var/log/httpd/error_log
//没有python需要安装
[root@harbor httpd]# cd /scripts/zabbix
[root@harbor zabbix]# dnf module -y install python38
[root@harbor zabbix]# ls
check_process.sh log.py
[root@harbor zabbix]# chmod +x log.py
//编辑/usr/local/etc/zabbix_agentd.conf文件
UserParameter=check_logs[*],/usr/bin/python3 /scripts/zabbix/log.py $1 $2 $3
//重启zabbix_agentd
[root@harbor zabbix]# pkill zabbix_agentd
[root@harbor zabbix]# zabbix_agentd
//在服务端测试是否可用
//这个Python文件可以传递3个参数,第一个为要检查的文件绝对路径,必须有,第二个个第三个分别为定位日志读取位置(默认值为/tmp/logseek)的文件和搜索关键字(默认值为Error),都有默认值,可以不写
[root@localhost ~]# zabbix_get -s 192.168.169.140 -k check_logs[/var/log/httpd/error_log,/tmp/logseek,error]
0
//“0”为没问题,“1”为有问题
配置监控项
配置触发器
在被监控端手动触发告警
[root@harbor zabbix]# echo "Error" >> /var/log/httpd/error_log