自定义监控的概念是通过使用Zabbix的自定义功能来监控非标准设备、服务或指标。用户可以根据自己的需求,创建和配置监控项来采集特定设备或服务的指标数据,然后利用触发器来定义告警条件,当条件满足时,系统将发送警报通知用户。
自定义监控的优点如下:
- 灵活性:Zabbix提供了丰富的自定义功能,用户可以根据需要监控任何设备、服务或指标,而不仅限于标准设备。
- 可扩展性:Zabbix的自定义监控功能使得用户能够轻松地集成和监控新的设备或服务,满足不断变化的监控需求。
- 定制化:用户可以通过自定义监控来满足特定的业务需求,根据自己的需要创建和配置监控项、触发器和报警。
- 统一管理:Zabbix提供了集中化的监控管理平台,用户可以通过自定义监控功能来统一管理和监控整个网络环境,从而便于管理和维护。
- 实时监控:Zabbix的自定义监控功能提供了实时的监控和告警功能,用户可以及时了解并应对系统或服务的异常情况,提高系统的可用性和性能。
总之,Zabbix的自定义监控功能使用户能够根据自己的需求来监控非标准设备、服务或指标,提供了更灵活、可扩展和定制化的监控解决方案。
安装与配置zabbix服务端请阅读Zabbix监控服务一、服务端的安装与配置
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
zabbix用户、用户组、权限管理和模板、模板组管理请阅读Zabbix监控服务五、用户管理与模板管理
部署mysql主从具体过程请阅读MySQL传统主从和GTID主从
配置监控服务进程可以监控各服务是否正常运行,并在发现服务运行异常的时候报警
系统 | 主机名 | IP地址 | 服务类型 |
---|---|---|---|
centos-8 | zabbix.server.com | 192.168.179.100 | 服务端 |
centos-8 | node001 | 192.168.179.11 | 客户端 |
修改客户端的配置文件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
(省略)
需要写一个脚本来取到想要监控的内容的值,用这个值去做对比,判断是否有问题,从而触发报警。
此脚本可以判断出,服务正常就反馈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]#
在客户端修改配置文件
//在配置文件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
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
这个key可以创建很多监控项,用同一个key,中括号里面把服务名改一下就行了,然后也创建一个对应的触发器就可以了
监控项创建完毕
创建触发器
触发器添加完毕
手动把客户端的postfix服务关闭掉
//关闭客户端的postfix服务
[root@node001 ~]# systemctl stop postfix
仪表盘出现报警信息
收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
自定义监控服务进程配置成功
配置监控某个日志文件,当这个日志文件里面出现error或failed的时候报警
系统 | 主机名 | IP地址 | 服务类型 |
---|---|---|---|
centos-8 | zabbix.server.com | 192.168.179.100 | 服务端 |
centos-8 | node001 | 192.168.179.11 | 客户端 |
//在客户端写一个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
修改配置文件
//在末端添加
[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,代表有问题
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
创建监控项
创建触发器
手动在测试文件里面加一个Error
[root@node001 ~]# echo "Error" >> /tmp/test.log
仪表盘出现报警信息
收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
监控日志文件的功能正常
监控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) |
部署mysql主从具体过程请阅读MySQL传统主从和GTID主从
写一个脚本,可以取出来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]#
在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
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
配置监控项
配置触发器
开启主数据库服务器的防火墙
[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)
仪表盘显示报警信息
收到报警邮件
监控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) |
部署mysql主从具体过程请阅读MySQL传统主从和GTID主从
上面已经配置过了
此脚本可以取出来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]#
修改客户端配置文件
//在配置文件末端添加如下
[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
安装与配置zabbix客户端、以及监控的配置流程请阅读Zabbix监控服务二、安装zabbix客户端与监控的配置流程
创建监控项
创建触发器
无法手动去增加延迟,这里直接展示报警信息
仪表盘显示报警信息
收到报警邮件
配置邮箱报警功能请阅读Zabbix监控服务三、配置邮件报警
mysql主从延迟监控配置成功