Skip to content

Latest commit

 

History

History
136 lines (132 loc) · 9.18 KB

12.Zabbix4.0分布式监控.md

File metadata and controls

136 lines (132 loc) · 9.18 KB

@[toc]

1. Zabbix分布式监控系统概述

Zabbix有三种监控架构,分别是Server-Agent、Server-Node-Agent和Server-Proxy-Agent。在大型环境中Zabbix有两种解决方案,使用节点(Node)和使用代理(Proxy)。使用节点和代理是有区别的:

① Proxy用于 本区域数据收集并将数据发送给Zabbix Server,它不做分析监控以及数据展示。Proxy只有一个proxy的daemon进程,Proxy也有自己的数据库(不完整的),但是它的数据库只会保存一定时间的数据,它与Master通信是将一批信息打包后发送到Master。Master将这些数据merger到Master数据库。

② Node提供完整的Zabbix Server用于 建立分布式监控的层级。Node本身是一台Zabbix Server,它有 完整的Web页面和完整的数据库,它会将数据源源不断地传给Master

节点是重量级应用,而代理是轻量级的应用。Master-Proxy相比Master-Node的优点有:Proxy压力小,数据库只存储一定时间的数据;Master压力变小,数据不是源源不断获取,减小IO压力(Node是收集数据就发数据,Proxy是保存一定时间然后一次性发送);架构更清晰,容易维护(在Master的Zabbix Server集中统一配置)。

2. Server-Node-Agent架构特性

在这里插入图片描述 Server-Node-Agent架构是用来 解决主机过多时单台Server面临性能瓶颈 的问题。方案有使用多个实例,没有实例是独立的一套Zabbix,有数据库和前台(可选)。该架构支持热插拔,Node和Server的连接可以随时断开,但不会影响Node的正常运行。Node定时向Server发送Configuration,History,Event等。Server定时给Node发送Configuration。所有的配置变更只能在Node节点操作,不能在Server操作。支持树状结构,Node又可以是个Server。

3. Server-Proxy-Agent架构特性

在这里插入图片描述 在这里插入图片描述 Proxy不会向Server同步Configuration,只会接收。Proxy的数据库会 定时将数据传送给Server,本地数据库只保存最近没有发送的数据。 其实,Proxy仅仅是 数据收集器,它不具有触发器、生成事件或发送警报等功能。Zabbix Server的功能有:监控远程区域;监控不可靠通信的位置;减轻Zabbix Server的压力;简化分布式监控的维护;与Zabbix Server是单TCP连接的,这种方式很容易绕过防火墙,只需要配置一条防火墙规则。

注意:Zabbix Proxy必须使用一个单独的数据库,不可以于Server使用同一个数据库。也不建议放到同一个物理服务器上

Zabbix的特性:

特性项 是否支持
Zabbix agent checks Yes
Zabbix agent checks(active) Yes
Simple checks Yes
Trapper items Yes
SNMP checks Yes
SNMP traps Yes
IPMI checks Yes
JMX checks Yes
Log file monitoring Yes
Internal checks No
SSH checks Yes
Telnet checks Yes
External checks Yes
Buit-in web monitering Yes
Network discovery Yes
Low-level discovery Yes
Calculating triggers No
Processing events No
Sending alerts No
Remote commands No
4. 分布式监控的实现

准备3台服务器,一台做=作Zabbix Server,另外一台作Zabbix Proxy,剩下一台作Zabbix Proxy的Agent。这三台服务器分别对应10.0.0.2、10.0.0.5和10.0.0.6。Zabbix Server和Zabbix Agent已经在前面介绍过,这里不赘述。为了测试方便,这里把MySQL和Zabbix Proxy放在统一台服务器上,首先安装与配置数据库:

# 安装MySQL数据库
[root@zabbix-proxy ~]# yum install mariadb-server
# 初始化数据库
[root@zabbix-proxy ~]# mysql_secure_installation 
# 设置开机自启
[root@zabbix-proxy ~]# chkconfig mariadb on
# 创建zabbix_proxy数据库
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
# 创建新用户并且授予权限
MariaDB [(none)]> grant all on zabbix_proxy.* to zbxuser@'%' identified by '123456';
# 刷新权限
MariaDB [(none)]> flush privileges;

安装完成之后开始安装Zabbix Proxy:

# 下载包含数据库插件的Zabbix Proxy包
[root@zabbix-proxy ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-proxy-mysql-4.0.21-2.el7.x86_64.rpm
# 下载epel源
[root@zabbix-proxy ~]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
# 安装epel源(也可以使用rpm)
[root@zabbix-proxy ~]# yum install epel-release-7-12.noarch.rpm
# 安装Zabbix Proxy。使用yum安装会自动解决依赖问题,自动安装依赖的fping等
[root@zabbix-proxy ~]# yum localinstall -y zabbix-proxy-mysql-4.0.21-2.el7.x86_64.rpm
# 设置Zabbix Proxy开机自启
[root@zabbix-proxy ~]# chkconfig zabbix-proxy on
# 查看Zabbix Proxy是否启动,以及占用的端口
[root@zabbix-proxy ~]# netstat -tunlp|grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1543/zabbix_proxy   
tcp6       0      0 :::10051                :::*                    LISTEN      1543/zabbix_proxy

配置Zabbix Proxy连接Zabbix Server和MySQL:

# 查询Zabbix Proxy初始数据
[root@zabbix-proxy ~]# rpm -ql zabbix-proxy-mysql
...
/usr/share/doc/zabbix-proxy-mysql-4.0.21/schema.sql.gz
...
# 解压sql文件
[root@zabbix-proxy zabbix-proxy-mysql-4.0.21]# gunzip schema.sql.gz 
# 把sql文件导入到数据库
[root@zabbix-proxy zabbix-proxy-mysql-4.0.21]# mysql -uzbxuser -p zabbix_proxy<schema.sql
# 编辑Zabbix Proxy配置文件
[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf 
# 查看需要已经修改过的记录
[root@zabbix-proxy ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_proxy.conf 
Server=10.0.0.2			# Zabbix Server的地址
Hostname=Zabbix proxy	# 主机名,Web页面上添加代理的时候代理程序名要和这里一致
...
DBHost=localhost		# 数据库的地址(我这里在本地)
DBName=zabbix_proxy		# 数据库名
DBUser=zbxuser			# 数据库用户名
DBPassword=123456		# 数据库的密码
...
# 修改完成后重启Proxy
[root@zabbix-proxy ~]# systemctl restart zabbix-proxy
# 如果出问题了可以检查日志
[root@zabbix-proxy ~]# tailf /var/log/zabbix/zabbix_proxy.log 

在这里插入图片描述 配置Zabbix Proxy的Agent:

# 编辑配置文件
[root@proxy-agent ~]# vim /etc/zabbix/zabbix_agentd.conf 
# 查看需要已经修改过的记录
[root@proxy-agent ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_agentd.conf 
...
Server=10.0.0.5
ServerActive=10.0.0.5	# 这里不建议配置,否则日志会报:failed to accept an incoming connection: connection from "10.0.0.2" rejected, allowed hosts: "10.0.0.5",实际上是没有问题的
Hostname=Zabbix agent	# 主机名。Web界面添加监控主机时,主机名称一定与这里完全一致
...
# 如果出问题了可以检查日志
[root@proxy-agent ~]# tailf /var/log/zabbix/zabbix_agentd.log

在这里插入图片描述

5. 分布式监控性能调优

提高Zabbix Server和Zabbix Proxy同步数据的效率,可以减小Proxy向Server请求同步配置文件的时间,配置参数是ConfigFrequency,默认3600s同步一次配置。Zabbix Proxy向主服务器打包发一次数据的时间间隔减小,配置参数是DataSenderFrequency,当然系统默认就是1s:

[root@zabbix-proxy zabbix]# grep -Ev '^$|#' zabbix_proxy.conf 
...
ConfigFrequency=3600
DataSenderFrequency=1
...

ProxyLocalBuffer是本地数据保存多久,Proxy收集来自各个Agent的数据要先保存在本地,然后打包发给主服务器,打包发给服务器后还要再保存多久,如果设置了0就表示不保存。如果 Proxy联系不到主服务器,也就是Zabbix Server,那么 数据在本地保存的时间 由ProxyOfflineBuffer来配置,默认是1,表示1h:

[root@zabbix-proxy zabbix]# grep -Ev '^$|#' zabbix_proxy.conf 
...
ProxyLocalBuffer=0
ProxyOfflineBuffer=1
...

Github:https://github.com/ThanlonSmith/Zabbix-Tutorial