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

posted @ 2022-09-06 18:03  Zic师傅  阅读(116)  评论(0编辑  收藏  举报