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