zabbix自定义监控

Posted 卑微小胡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix自定义监控相关的知识,希望对你有一定的参考价值。

zabbix自定义监控

zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求。有时候由于业务需求,需要自定义监控项。 下面以创建进程,日志文件,mysql主从,MySQL主从延迟自定义监控项为例,分享如何创建zabbix自定义监控项。

监控进程

先在客户端安装一个进程apache

[root@z1 ~]# dnf -y install httpd
# 安装过程省略
#启动apache
[root@z1 ~]# systemctl start httpd
[root@z1 ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port Process 
LISTEN  0       128            0.0.0.0:22           0.0.0.0:*            
LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*            
LISTEN  0       128               [::]:22              [::]:*            
LISTEN  0       80                   *:3306               *:*            
LISTEN  0       128                  *:80                 *:*

在这里插入图片描述
查看进程

[root@z1 ~]# ps -ef|grep httpd
root       15216       1  0 18:05 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     15217   15216  0 18:05 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     15218   15216  0 18:05 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     15219   15216  0 18:05 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     15220   15216  0 18:05 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     15440   15216  0 18:08 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       15507   14661  0 18:08 pts/2    00:00:00 grep --color=auto httpd
[root@z1 ~]# systemctl stop httpd
[root@z1 ~]# ps -ef|grep httpd
root       15516   14661  0 18:10 pts/2    00:00:00 grep --color=auto httpd

在客户端的配置文件打开自定义监控功能

[root@z1 ~]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1    //把这一行取消注释并修改为1

创建脚本存放目录

[root@z1 ~]# mkdir /scripts
[root@z1 ~]# ls /
bin   dev  home  lib64  mnt  proc  run   scripts  sys  usr
boot  etc  lib   media  opt  root  sbin  srv      tmp  var

写一个监控进程的脚本

[root@z1 ~]# cd /scripts/
[root@z1 scripts]# vim check_process.sh
[root@z1 scripts]# cat check_process.sh 
#!/bin/bash
process_status=$(ps -ef|grep -Ev "grep|$0"|grep -c $1)
if [ $process_status -eq 0 ];then
        echo '1'
else
        echo '0'
fi
[root@z1 scripts]# chmod +x check_process.sh	//给脚本执行权限
[root@z1 scripts]# ps -ef|grep -v grep|grep -c httpd
0
[root@z1 scripts]# ./check_process.sh httpd		//执行脚本
1
[root@z1 scripts]# systemctl start httpd
[root@z1 scripts]# ps -ef|grep -v grep|grep -c httpd
5
[root@z1 scripts]# ./check_process.sh
0
#切换到zabbix用户看能不能执行
[root@z1 scripts]# su - zabbix -s /bin/bash
[zabbix@z1 scripts]$ /scripts/check_process.sh httpd
0
[root@z1 ~]# systemctl stop httpd
[zabbix@z1 scripts]$ /scripts/check_process.sh httpd
1

修改配置文件

[root@z1 ~]# vim /usr/local/etc/zabbix_agentd.conf
#末行添加如下
UserParameter=check_process,/bin/bash /scripts/check_process.sh

然后重启zabbix_agentd

root@z1 scripts]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128            0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128               [::]:22               [::]:*              
LISTEN  0       80                   *:3306                *:*              
LISTEN  0       128                  *:80                  *:*              
[root@z1 scripts]# zabbix_agentd 
[root@z1 scripts]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128            0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128            0.0.0.0:10050         0.0.0.0:*              
LISTEN  0       128               [::]:22               [::]:*              
LISTEN  0       80                   *:3306                *:*              
LISTEN  0       128                  *:80                  *:*

去服务端测试脚本

[root@zabbix ~]# zabbix_get -s 192.168.96.133 -k check_process['httpd']
0
#客户端关闭httpd
[root@z1 scripts]# systemctl stop httpd
#服务端测试
[root@zabbix ~]# zabbix_get -s 192.168.96.133 -k check_process['httpd']
1

去web页面设置监控项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把httpd开启

[root@z1 scripts]# systemctl start httpd`

在这里插入图片描述
添加触发器
在这里插入图片描述

在这里插入图片描述
测试验证把httpd停止

[root@z1 scripts]# systemctl stop httpd`

在这里插入图片描述
测试验证把httpd开启

[root@z1 scripts]# systemctl start httpd`

在这里插入图片描述

监控日志文件

用xftb把python脚本传到客户机
在这里插入图片描述给脚本一个执行权限

[root@z1 scripts]# chmod +x log.py

测试zabbix用户是否能使用此脚本

[root@z1 scripts]# dnf -y module install python38
[root@z1 scripts]# setfacl -m u:zabbix:rx /var/log/httpd/
[root@z1 scripts]# mkdir /zabbix_item_log
[root@z1 scripts]# chown -R zabbix.zabbix /zabbix_item_log/
[root@z1 scripts]# su - zabbix -s /bin/bash
[zabbix@z1 scripts]$ python3 /scripts/log.py /var/log/httpd/error_log /zabbix_item_log/logseek Failed
0

在zabbix客户端修改配置文件自定义监控并且在服务端测试是否可用

[root@z1 scripts]# vim /usr/local/etc/zabbix_agentd.conf
#添加如下
UserParameter=check_logs[*],/scripts/log.py $1 $2 $3
#重启服务
[root@z1 scripts]# pkill zabbix
[root@z1 scripts]# zabbix_agentd 
[root@z1 scripts]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128            0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128            0.0.0.0:10050         0.0.0.0:*              
LISTEN  0       128               [::]:22               [::]:*              
LISTEN  0       80                   *:3306                *:*              
LISTEN  0       128                  *:80                  *:*

服务器测试是否可以用脚本

[root@zabbix ~]# zabbix_get -s 192.168.96.133 -k check_logs['/var/log/httpd/error_log','zabbix_item_log/logseek','Failed']
0

客户端

[root@z1 scripts]# echo 'Failed' >> /var/log/httpd/error_log

服务端

[root@zabbix ~]# zabbix_get -s 192.168.96.133 -k check_logs['/var/log/httpd/error_log','zabbix_item_log/logseek','Failed']
1

在web页面上创建监控项
在这里插入图片描述
创建触发器
在这里插入图片描述
测试验证

[root@z1 scripts]# echo 'Failed' >> /var/log/httpd/error_log

在这里插入图片描述

监控MySQL主从状态

MySQL主从请参考MySQL多实例部署 MySQL主从配置
写脚本给脚本执行权限

[root@localhost ~]# vim /scripts/check_mysql_replistatus.sh 
[root@localhost ~]# cd /scripts/
[root@localhost scripts]# cat check_mysql_replistatus.sh 
#!/bin/bash
status=$(mysql -uroot -S /tmp/mysql3307.sock -e 'show slave status\\G' | grep "Running: Yes"|awk '{print $2}'|grep -c 'Yes')
if [ $status -nt 2 ];then
	echo '0'
else
	echo '1'
fi
[root@localhost scripts]# chmod +x check_mysql_replistatus.sh 

测试zabbix用户是否能使用此脚本

[root@localhost scripts]# su - zabbix -s /bin/bash
[zabbix@localhost scripts]$ ./check_mysql_replistatus.sh 
0

修改配置文件

[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
#末行添加如下
UserParameter=check_mysql_replication,/scripts/check_mysql_replistatus.sh
#重启服务
[root@localhost ~]# pkill zabbix
[root@localhost ~]# 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        80                     *:3306                 *:*                
LISTEN   0        80                     *:3307                 *:*                
LISTEN   0        128                 [::]:22                [::]:*

在服务器测试脚本

[root@zabbix etc]# zabbix_get -s 192.168.96.134 -k check_mysql_replication
0

在web页面上创建监控项
在这里插入图片描述
创建触发器
0
在这里插入图片描述
测试验证

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

在这里插入图片描述

监控MySQL主从延迟

编写查看延迟的脚本给脚本加执行权限

[root@localhost scripts]# vim check_mysql_delay.sh
[root@localhost scripts]# cat check_mysql_delay.sh 
#!/bin/bash
delay=$(mysql -uroot  -S /tmp/mysql3307.sock -e'show slave status\\G' | grep "Seconds_Behind_Master" |awk '{print $2}')
echo $delay
[root@localhost scripts]# chmod +x check_mysql_delay.sh

修改配置文件

[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
#末行添加如下
UserParameter=check_mysql_delay,/scripts/check_mysql_delay.sh
#重启服务
[root@localhost ~]# pkill zabbix
[root@localhost ~]# 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        80                     *:3306                 *:*                
LISTEN   0        80                     *:3307                 *:*                
LISTEN   0        128                 [::]:22                [::]:*

在服务器测试脚本

[root@zabbix etc]# zabbix_get -s 192.168.96.134 -k check_mysql_delay
0

在web页面上创建监控项
在这里插入图片描述
创建触发器
在这里插入图片描述
在这里插入图片描述

以上是关于zabbix自定义监控的主要内容,如果未能解决你的问题,请参考以下文章

zabbix自定义监控实现思路以及自定义监控某个端口的连接数

使用 Docker 安装 Zabbix,并配置自定义监控项

使用 Docker 安装 Zabbix,并配置自定义监控项

Zabbix监控——Zabbix自定义用户参数制作监控项

zabbix自定义监控

zabbix自定义监控