Zabbix监控服务四、配置自定义监控

文章目录

  • Zabbix自定义监控
    • 一、自定义监控的概念
    • 前言
    • 二、配置自定义监控
      • 1.配置监控服务的进程
        • 环境
        • 1.1 开启客户端的自定义监控功能
        • 1.2 编写脚本
        • 1.3 给自定义监控的脚本绑定一个key
        • 1.4 在服务端web仪表盘上去配置监控项、触发器。
        • 1.5 测试监控服务进程的功能是否正常
      • 2.配置监控日志
        • 环境
        • 2.1 编写脚本
        • 2.2 给自定义监控的脚本绑定一个key
        • 2.3 在仪表盘配置监控项、触发器
        • 2.4 测试监控日志文件的功能是否正常
      • 3.配置监控mysql主从状态
        • 环境
        • 3.1 部署mysql主从环境
        • 3.2编写脚本
        • 3.3 给自定义监控的脚本绑定一个key
        • 3.4 配置监控项、触发器
        • 3.5 测试监控主从状态功能是否正常
      • 4.配置监控mysql主从延迟
        • 环境
        • 4.1 配置mysql主从环境
        • 4.2 编写脚本
        • 4.3 给自定义监控的脚本绑定一个key
        • 4.4 配置监控项、触发器
        • 4.5 测试监控mysql主从延迟功能

Zabbix自定义监控

一、自定义监控的概念

自定义监控的概念是通过使用Zabbix的自定义功能来监控非标准设备、服务或指标。用户可以根据自己的需求,创建和配置监控项来采集特定设备或服务的指标数据,然后利用触发器来定义告警条件,当条件满足时,系统将发送警报通知用户。

自定义监控的优点如下:

  1. 灵活性:Zabbix提供了丰富的自定义功能,用户可以根据需要监控任何设备、服务或指标,而不仅限于标准设备。
  2. 可扩展性:Zabbix的自定义监控功能使得用户能够轻松地集成和监控新的设备或服务,满足不断变化的监控需求。
  3. 定制化:用户可以通过自定义监控来满足特定的业务需求,根据自己的需要创建和配置监控项、触发器和报警。
  4. 统一管理:Zabbix提供了集中化的监控管理平台,用户可以通过自定义监控功能来统一管理和监控整个网络环境,从而便于管理和维护。
  5. 实时监控:Zabbix的自定义监控功能提供了实时的监控和告警功能,用户可以及时了解并应对系统或服务的异常情况,提高系统的可用性和性能。

总之,Zabbix的自定义监控功能使用户能够根据自己的需求来监控非标准设备、服务或指标,提供了更灵活、可扩展和定制化的监控解决方案。

前言

安装与配置zabbix服务端请阅读Zabbix监控服务一、服务端的安装与配置
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
zabbix用户、用户组、权限管理和模板、模板组管理请阅读Zabbix监控服务五、用户管理与模板管理
部署mysql主从具体过程请阅读MySQL传统主从和GTID主从


二、配置自定义监控

1.配置监控服务的进程

配置监控服务进程可以监控各服务是否正常运行,并在发现服务运行异常的时候报警

环境
系统 主机名 IP地址 服务类型
centos-8 zabbix.server.com 192.168.179.100 服务端
centos-8 node001 192.168.179.11 客户端
1.1 开启客户端的自定义监控功能

修改客户端的配置文件zabbix_agentd.conf

//进入配置文件目录
[root@node001 ~]# cd /usr/local/etc/
[root@node001 etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d

//开启不安全的用户功能,在第345行后面添加如下
[root@node001 etc]# vim zabbix_agentd.conf
[root@node001 etc]# cat zabbix_agentd.conf
(省略)
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
UnsafeUserParameters=1        //添加此行

### Option: UserParameter
(省略)
1.2 编写脚本

需要写一个脚本来取到想要监控的内容的值,用这个值去做对比,判断是否有问题,从而触发报警。

此脚本可以判断出,服务正常就反馈0,异常就反馈1

//在客户端创建一个放脚本的目录
[root@node001 ~]# cd
[root@node001 ~]# mkdir /script

//在客户端写脚本
[root@node001 ~]# cd /script/
[root@node001 script]# vim service.sh
[root@node001 script]# chmod +x service.sh 
[root@node001 script]# cat service.sh 
#!/bin/bash

process=$(ps -ef | grep "$1" | grep -Ev "grep|$0" | wc -l)

if [ $process -eq 0 ];then
    echo "1"
else
    echo "0"
fi
[root@node001 script]# 
1.3 给自定义监控的脚本绑定一个key

在客户端修改配置文件

//在配置文件zabbix_agentd.conf的末端添加
[root@node001 ~]# cd /usr/local/etc/
[root@node001 etc]# vim zabbix_agentd.conf
(省略)
UserParameter=show_service_process[*],/bin/bash /script/service.sh $1  //添加此行

//show_service_process就是key的名字,在后面配置监控项的时候会用到

//重启服务
[root@node001 etc]# systemctl restart zabbix_agentd.service 

在服务端测试key

[root@zabbix ~]# zabbix_get -s 192.168.179.11 -k show_service_process['sshd']
0         //客户端的sshd服务是启动的,反馈值为0
[root@zabbix ~]# zabbix_get -s 192.168.179.11 -k show_service_process['httpd']
1         //客户端没有安装httpd服务,反馈值为1
1.4 在服务端web仪表盘上去配置监控项、触发器。

安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程

创建监控项
Zabbix监控服务四、配置自定义监控_第1张图片

Zabbix监控服务四、配置自定义监控_第2张图片

Zabbix监控服务四、配置自定义监控_第3张图片

这个key可以创建很多监控项,用同一个key,中括号里面把服务名改一下就行了,然后也创建一个对应的触发器就可以了

监控项创建完毕

创建触发器

Zabbix监控服务四、配置自定义监控_第4张图片

Zabbix监控服务四、配置自定义监控_第5张图片

Zabbix监控服务四、配置自定义监控_第6张图片

Zabbix监控服务四、配置自定义监控_第7张图片

触发器添加完毕

1.5 测试监控服务进程的功能是否正常

手动把客户端的postfix服务关闭掉

//关闭客户端的postfix服务
[root@node001 ~]# systemctl stop postfix

仪表盘出现报警信息

Zabbix监控服务四、配置自定义监控_第8张图片

收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
Zabbix监控服务四、配置自定义监控_第9张图片

自定义监控服务进程配置成功

2.配置监控日志

配置监控某个日志文件,当这个日志文件里面出现error或failed的时候报警

环境
系统 主机名 IP地址 服务类型
centos-8 zabbix.server.com 192.168.179.100 服务端
centos-8 node001 192.168.179.11 客户端
2.1 编写脚本
//在客户端写一个Python脚本
[root@node001 ~]# cd /script/
[root@node001 script]# vim log.py
[root@node001 script]# chmod +x log.py
[root@node001 script]# cat log.py 
#!/usr/bin/env python3
import sys
import re

def prePos(seekfile):
    global curpos
    try:
        cf = open(seekfile)
    except IOError:
        curpos = 0
        return curpos
    except FileNotFoundError:
        curpos = 0
        return curpos
    else:
        try:
            curpos = int(cf.readline().strip())
        except ValueError:
            curpos = 0
            cf.close()
            return curpos
        cf.close()
    return curpos

def lastPos(filename):
    with open(filename) as lfile:
        if lfile.readline():
            lfile.seek(0,2)
        else:
            return 0
        lastPos = lfile.tell()
    return lastPos

def getSeekFile():
    try:
        seekfile = sys.argv[2]
    except IndexError:
        seekfile = '/tmp/logseek'
    return seekfile

def getKey():
    try:
        tagKey = str(sys.argv[3])
    except IndexError:
        tagKey = 'Error'
    return tagKey

def getResult(filename,seekfile,tagkey):
    destPos = prePos(seekfile)
    curPos = lastPos(filename)

    if curPos < destPos:
        curpos = 0

    try:
        f = open(filename)
    except IOError:
        print('Could not open file: %s' % filename)
    except FileNotFoundError:
        print('Could not open file: %s' % filename)
    else:
        f.seek(destPos)

        while curPos != 0 and f.tell() < curPos:
            rresult = f.readline().strip()
            global result
            if re.search(tagkey, rresult):
                result = 1
                break
            else:
                result = 0

        with open(seekfile,'w') as sf:
            sf.write(str(curPos))
    finally:
        f.close()
    return result

if __name__ == "__main__":
    result = 0
    curpos = 0
    tagkey = getKey()
    seekfile = getSeekFile()
    result = getResult(sys.argv[1],seekfile,tagkey)
    print(result)
[root@node001 script]# 

//安装一个Python
[root@node001 ~]# yum -y install python3
2.2 给自定义监控的脚本绑定一个key

修改配置文件

//在末端添加
[root@node001 ~]# cd /usr/local/etc/
[root@node001 etc]# vim zabbix_agentd.conf
[root@node001 etc]# cat zabbix_agentd.conf
(省略)
UserParameter=check_log[*],/script/log.py $1 $2 $3   //添加此行

//check_log[*]就是key的名字,在后面配置监控项的时候会用到

//重启服务
[root@node001 etc]# systemctl restart zabbix_agentd.service 

在服务端测试key

//在客户端准备一个用于测试的日志文件
[root@node001 ~]# vim /tmp/test.log
[root@node001 ~]# cat /tmp/test.log
Error
test
[root@node001 ~]# 


//在服务端测试
[root@zabbix ~]# zabbix_get -s 192.168.179.11 -k check_log['/tmp/test.log']
1            //测试文件里面有Error,所以反馈值为1,代表有问题
2.3 在仪表盘配置监控项、触发器

安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程

创建监控项

Zabbix监控服务四、配置自定义监控_第10张图片

创建触发器

Zabbix监控服务四、配置自定义监控_第11张图片

2.4 测试监控日志文件的功能是否正常

手动在测试文件里面加一个Error

[root@node001 ~]# echo "Error" >> /tmp/test.log 

仪表盘出现报警信息

Zabbix监控服务四、配置自定义监控_第12张图片

收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
Zabbix监控服务四、配置自定义监控_第13张图片

监控日志文件的功能正常


3.配置监控mysql主从状态

监控mysql主从服务是否正常运行

环境
主机名 系统 IP地址 zabbix服务类型 mysql主从角色
zabbix.server.com centos-8 192.168.179.100 服务端 ----------
node001 centos-8 192.168.179.11 客户端 从数据库(slave)
node002 centos-8 192.168.179.13 --------- 主数据库(master)
3.1 部署mysql主从环境

部署mysql主从具体过程请阅读MySQL传统主从和GTID主从

3.2编写脚本

写一个脚本,可以取出来mysql主从状态的值,是否为两个yes。如果不是,就代表mysql主从状态有问题

//在客户端(也是从数据库服务器)写一个脚本
[root@node001 ~]# cd /script/
[root@node001 script]# vim mysql_master-slave.sh
[root@node001 script]# chmod +x mysql_master-slave.sh 
[root@node001 script]# cat mysql_master-slave.sh 
#!/bin/bash

count=$(mysql -uroot -p'12345678' -e 'show slave status\G' | grep -i 'running:' | grep -c 'Yes')

if [ $count -ne 2 ];then
    echo "1"
else
    echo "0"
fi
[root@node001 script]# 
3.3 给自定义监控的脚本绑定一个key

在zabbix客户端修改配置文件

//在末端添加
[root@node001 ~]# cd /usr/local/etc/
[root@node001 etc]# vim zabbix_agentd.conf
UserParameter=check_mysql_master-slave,/script/mysql_master-slave.sh  //添加此行

//check_mysql_master-slave就是key的名字,在后面配置监控项的时候会用到

//重启服务
[root@node001 etc]# systemctl restart zabbix_agentd.service 

在服务端测试

[root@zabbix ~]# zabbix_get -s 192.168.179.11 -k check_mysql_master-slave
0         //现在mysql主从状态是正常的所以反馈值是0
3.4 配置监控项、触发器

安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程

配置监控项

Zabbix监控服务四、配置自定义监控_第14张图片

配置触发器

Zabbix监控服务四、配置自定义监控_第15张图片

3.5 测试监控主从状态功能是否正常

开启主数据库服务器的防火墙

[root@node002 ~]# systemctl start firewalld.service 

重启从数据库服务器的主从功能

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

仪表盘显示报警信息

Zabbix监控服务四、配置自定义监控_第16张图片

收到报警邮件

Zabbix监控服务四、配置自定义监控_第17张图片

监控mysql主从状态配置成功


4.配置监控mysql主从延迟

配置监控mysql主从的延迟,如果延迟到达一定的值,就会报警,由管理员判断是否是主从服务出现问题

环境
主机名 系统 IP地址 zabbix服务类型 mysql主从角色
zabbix.server.com centos-8 192.168.179.100 服务端 ----------
node001 centos-8 192.168.179.11 客户端 从数据库(slave)
node002 centos-8 192.168.179.13 --------- 主数据库(master)
4.1 配置mysql主从环境

部署mysql主从具体过程请阅读MySQL传统主从和GTID主从

上面已经配置过了

4.2 编写脚本

此脚本可以取出来mysql主从的延迟的值

//写一个脚本
[root@node001 etc]# cd /script/
[root@node001 script]# vim mysql_delay.sh
[root@node001 script]# chmod +x mysql_delay.sh 
[root@node001 script]# cat mysql_delay.sh 
#!/bin/bash

mysql -uroot -p'12345678' -e 'show slave status\G' | grep 'Seconds_Behind_Master' | awk '{print $NF}'
[root@node001 script]# 
4.3 给自定义监控的脚本绑定一个key

修改客户端配置文件

//在配置文件末端添加如下
[root@node001 ~]# vim /usr/local/etc/zabbix_agentd.conf
[root@node001 ~]# cat /usr/local/etc/zabbix_agentd.conf
(省略)
UserParameter=check_mysql_delay,/script/mysql_delay.sh  //添加此行

//check_mysql_delay就是key的名字,在后面配置监控项的时候会用到

//重启服务
[root@node001 ~]# systemctl restart zabbix_agentd.service 

在服务端测试

[root@zabbix ~]# zabbix_get -s 192.168.179.11 -k check_mysql_delay
0       //现在的mysql主从延迟为0
4.4 配置监控项、触发器

安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程

创建监控项

Zabbix监控服务四、配置自定义监控_第18张图片

创建触发器

Zabbix监控服务四、配置自定义监控_第19张图片

4.5 测试监控mysql主从延迟功能

无法手动去增加延迟,这里直接展示报警信息

仪表盘显示报警信息

Zabbix监控服务四、配置自定义监控_第20张图片

收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
Zabbix监控服务四、配置自定义监控_第21张图片

mysql主从延迟监控配置成功


你可能感兴趣的:(zabbix,linux,运维)