zabbix自定义监控

本文介绍如何使用Zabbix实现自定义监控,包括进程状态、日志错误和MySQL主从状态及延迟监控的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义监控

监控进程

  • 打开自定义(客户端)
[root@zabbix ~]# cd /usr/local/etc/
[root@zabbix etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@zabbix etc]# vim zabbix_agentd.conf
......
# Mandatory: no
# Range: 0-1
# Default:
 UnsafeUserParameters=1     取消注释并改为1
 ......
  • 编写脚本
[root@zabbix ~]# mkdir /scripts  (创建一个存放脚本的目录)
[root@zabbix ~]# cd /scripts/
[root@zabbix scripts]# vim check_process.sh
[root@zabbix 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'          输出的值为0就打印1
else
    echo '0'          输出的值不为0就打印0
fi    
[root@zabbix scripts]# chmod +x check_process.sh 
[root@zabbix scripts]# ll
总用量 4
-rwxr-xr-x. 1 root root 141 5月  19 07:55 check_process.sh

测试
(现在是没有httpd开启的)
[root@zabbix scripts]# ./check_process.sh httpd
1
[root@zabbix scripts]# ps -ef|grep -v grep|grep -c httpd
0
(开启httpd)
[root@zabbix scripts]# apachectl start
[root@zabbix scripts]# ps -ef|grep -v grep|grep -c httpd
5
[root@zabbix scripts]# ./check_process.sh httpd
0

进入自定义配置文件
[root@zabbix etc]# vim zabbix_agentd.conf
在最后写入脚本:
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1

重启zabbix
[root@zabbix etc]# pkill zabbix
[root@zabbix etc]# ss -antl
State        Recv-Q       Send-Q              Local Address:Port               Peer Address:Port       Process       
LISTEN       0            128                       0.0.0.0:9000                    0.0.0.0:*                        
LISTEN       0            128                       0.0.0.0:111                     0.0.0.0:*                        
LISTEN       0            32                  192.168.122.1:53                      0.0.0.0:*                        
LISTEN       0            128                       0.0.0.0:22                      0.0.0.0:*                        
LISTEN       0            5                       127.0.0.1:631                     0.0.0.0:*                        
LISTEN       0            100                     127.0.0.1:25                      0.0.0.0:*                        
LISTEN       0            128                          [::]:111                        [::]:*                        
LISTEN       0            128                          [::]:22                         [::]:*                        
LISTEN       0            5                           [::1]:631                        [::]:*                        
LISTEN       0            100                         [::1]:25                         [::]:*                        
[root@zabbix etc]# zabbix_agentd 
[root@zabbix etc]# ss -antl
State        Recv-Q       Send-Q             Local Address:Port                Peer Address:Port       Process       
LISTEN       0            128                      0.0.0.0:9000                     0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:111                      0.0.0.0:*                        
LISTEN       0            32                 192.168.122.1:53                       0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:22                       0.0.0.0:*                        
LISTEN       0            5                      127.0.0.1:631                      0.0.0.0:*                        
LISTEN       0            100                    127.0.0.1:25                       0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:10050                    0.0.0.0:*                        
LISTEN       0            128                         [::]:111                         [::]:*                        
LISTEN       0            128                         [::]:22                          [::]:*                        
LISTEN       0            5                          [::1]:631                         [::]:*                        
LISTEN       0            100                        [::1]:25                          [::]:*  
  • 在服务端上测试
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_process['httpd']   (客户端的httpd是开启的)
0
  • 在ui界面上进行配置
    选择一个没有监控项的主机进行配置
    在这里插入图片描述
    在这里插入图片描述
  • 去Latest data 添加主机xialuo
    在这里插入图片描述
  • 查看Latest data值(之前关闭了输出值为1,开启了输出值为0)
    在这里插入图片描述
  • 添加触发器
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 打开报警声音
    在这里插入图片描述
  • 手动触发
客户端
[root@zabbix scripts]# apachectl stop

在这里插入图片描述

监控日志
去https://github.com/chendao2015/pyscripts下载
需要用到 log.py

[root@zabbix /]# ls
bin   dev  home  lib64   media  opt  proc  run   scripts  sys  usr  xialuo
boot  etc  lib   log.py  mnt    php  root  sbin  srv      tmp  var
[root@zabbix /]# mv log.py  /scripts/
[root@zabbix /]# cd /scripts/
[root@zabbix scripts]# chmod +x log.py 
[root@zabbix scripts]# ll
总用量 8
-rwxr-xr-x. 1 root root  141 5月  19 07:55 check_process.sh
-rwxr-xr-x. 1 root root 1854 5月  19 08:50 log.py

安装一个python38(cetnos8里面好像有自带的python3)
[root@zabbix scripts]# head  -1 log.py 
#!/usr/bin/env python3
查找
[root@zabbix scripts]# dnf list all|grep python3
[root@zabbix scripts]# dnf -y module install python38
  • 监控httpd日志
[root@zabbix ~]# ls /var/log/httpd
access_log  error_log
[root@zabbix scripts]# ./log.py /var/log/httpd/error_log
0
在日志里面追加输入'Failed'
[root@zabbix scripts]# vim log.py
def getKey():
    try:
        tagKey = str(sys.argv[3])
    except IndexError:
        tagKey = 'Failed'
    return tagKey

def getResult(filename,seekfile,tagkey):
    destPos = prePos(seekfile)
    curPos = lastPos(filename) 
    
[root@zabbix scripts]# echo 'Failed' >> /var/log/httpd/error_log 
[root@zabbix scripts]# ./log.py /var/log/httpd/error_log 
1                                      
  • 给予zabbix用户权限
[root@zabbix ~]# setfacl -m u:zabbix:rx /var/log/httpd/
[root@zabbix ~]# mkdir /zabbix_log
[root@zabbix ~]# chown -R zabbix.zabbix /zabbix_log/
[root@zabbix ~]# vim /etc/passwd
zabbix:x:973:972::/home/zabbix:/bin/bash(将zabbix改为bin/bash)
bash-4.4$ python3 /scripts/log.py /var/log/httpd/error_log /zabbix_log/logseek Failed
1
  • 添加脚本
[root@zabbix scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_log[*],/scripts/log.py $1 $2 $3
[root@zabbix ~]# pkill zabbix
[root@zabbix ~]# zabbix_agentd 
  • 测试
客户端
[root@zabbix ~]# echo 'Failed' >> /var/log/httpd/error_log 
服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_log['/var/log/httpd/error_log','zabbix_log/logseek','Failed']
1
  • 在ui界面创建监控项
    在这里插入图片描述
  • 创建触发器
    在这里插入图片描述
    在这里插入图片描述
  • 测试
[root@zabbix ~]# echo 'Failed' >> /var/log/httpd/error_log 

在这里插入图片描述

MySQL主从状态和延迟监控

配置主从
主:192.168.149.140
[root@zabbix ~]# mysql -uroot -p
Enter password: 

mysql>  create user 'root'@'192.168.149.139' identified by 'xialuo1231';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to 'root'@'192.168.149.139';
Query OK, 0 rows affected (0.00 sec)

[root@localhost ~]# vim /etc/my.cnf 
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/mysql_data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/mysql_data/mysql.pid
user = mysql
skip-name-resolve
server-id = 10
log-bin = mysql_bin

从192.168.149.139:

[root@zabbix ~]# vim /etc/my.cnf
[mysqld]
datadir = /opt/mysql-data
basedir = /usr/local/mysql
datadir = /opt/mysql-data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/mysql-data/mysql.pid
user = mysql
skip-name-resolve
server-id = 20
relay-log = slave_bin

[client]
user=root
password=xialuo123!

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.149.140
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql_bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: slave_bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql_bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
  • 客户端
[root@zabbix scripts]# chmod +x check_mysql_replistatus.sh
[root@zabbix scripts]# vim /scripts/check_mysql_replistatus.sh
#!/bin/bash
status=$(mysql -e 'show slave status\G' | grep "Running: Yes" |awk '{print $2}' | grep -c 'Yes')
if  [ $status == 2 ];then
         echo '0'
else
         echo '1'
fi
[root@zabbix scripts]# ./check_mysql_replistatus.sh
0
[root@zabbix scripts]# su - zabbix -s /bin/bash
[zabbix@zabbix scripts]$  ./check_mysql_replistatus.sh
0

自定义中写入脚本
[root@zabbix scripts]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysql_replication,/scripts/check_mysql_replistatus.sh
[root@zabbix scripts]# pkill zabbix
[root@zabbix scripts]# zabbix_agentd 
  • 服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_mysql_replication
0
  • 去ui界面配置监控项
    在这里插入图片描述

  • 创建触发器
    在这里插入图片描述

  • 测试

客户端:
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G;
              Slave_IO_Running: No
            Slave_SQL_Running: No

在这里插入图片描述
mysql主从延迟的监控
客户端

[root@zabbix ~]# vim /scripts/check_mysql_delay.sh
#!/bin/bash
delay=$(mysql -e 'show slave status\G' | grep "Seconds_Behind_Master" |awk '{print $2}')
echo $delay
  • 更改权限
[root@zabbix ~]# chmod +x /scripts/check_mysql_delay.sh 

[root@zabbix ~]# su - zabbix -s /bin/bash
[zabbix@zabbix root]$ /scripts/check_mysql_delay.sh 
NULL
将脚本写入自定义
[root@zabbix ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysql_delay,/scripts/check_mysql_delay.sh
[root@zabbix ~]# pkill zabbix_agentd 
[root@zabbix ~]# zabbix_agentd 
  • 服务端
[root@zabbix ~]# zabbix_get -s 192.168.149.139 -k check_mysql_delay
NULL
  • 去ui界面添加监控项
    在这里插入图片描述
  • 创建触发器
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值