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自定义监控的主要内容,如果未能解决你的问题,请参考以下文章