一 分布式Zabbix介绍

zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力。
此外,当所有agents和proxy报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。
zabbix proxy 使用场景:
  • 监控远程区域设备
  • 监控本地网络不稳定区域
  • 当 zabbix 监控上千设备时,使用它来减轻 server 的压力
  • 简化分布式监控的维护

二 分布式Zabbix架构

2.1 架构示意图

2.2 环境准备

节点主机名
IP地址
备注
zabbixserver
172.24.8.71/24
Zabbix服务器
zabbixpoxy01
172.24.8.72/24
Zabbix poxy代理服务器1
zabbixpoxy02
172.24.8.73/24
Zabbix poxy代理服务器2
node01
172.24.8.74/24
模拟poxy1所监控的服务器node01
node02
172.24.8.75/24
模拟poxy2所监控的服务器node02
 # systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# vi /etc/hosts #添加在server和proxy节点添加以下主机名配置
172.24.8.71 zabbixserver
172.24.8.72 zabbixpoxy01
172.24.8.73 zabbixpoxy02
 
提示:可关闭防火墙和SELinux,若没有关闭可参考《004.Zabbix3.2-Server服务端安装》进行相应放通。

2.3 工作模式

  • 被动模式
Passive(被动模式),zabbix-server和zabbix-agent之间的通信是zabbix的专用协议,数据格式为JSON。默认情况下,zabbix-agent工作在被动模式下,工作的模式是由Key和zabbix_agentd.conf参数配置决定的。
  • 被动模式的流程
  1. Server打开一个TCP连接。
  2. Server发送一个key为agent.ping\n。
  3. Agent接收到这个请求,然后响应数据<HEADER><DATALEN>1.
  4. Server对接收到的数据进行处理。
  5. TCP连接关闭。
  • 主动模式
  Active(主动模式),主动模式由于是Agent将采集到的数据主动发送给Server,而不需要Server每次连接Agent等待采集,所以采用主动模式会使Zabbix-Server具有最好的性能。在大型环境下,一定要将工作模式设置为主动模式,并尽可能采用更多的proxy以降低Server的负担,一般多机房,每个机房肯定都要设置proxy的。
  • 主动模式的流程
  1. Agent向Server建立一个TCP的连接。
  2. Agent请求需要检测的数据列表。
  3. Server响应Agent,发送一个Items列表(item key、delay)。
  4. Agent响应请求。
  5. TCP连接完成本次会话后关闭。
  6. Agent开始周期性的收集数据。
提示:本环境采用主动模式,即Zabbix Agent---->Zabbix Proxy---->Zabbix Server。
无论是主动模式还是被动模式都是对zabbix客户端(zabbix_agentd)来说的,许多设备都是通过snmp协议进行监控的,是无法实行主动监控,因为监控类型不支持。

2.4 模式配置

被动模式设置主要参数

 Server=172.24.8.71			#被动模式下的Zabbix服务端地址
ListenPort=10050
ServerActive=172.24.8.71 #主动模式下的Zabbix服务端地址,若纯被动模式可注释此行
主动模式设置主要参数
 Server=127.0.0.1,172.24.8.71	#被动模式下的Zabbix服务端地址,若纯主动模式可注释此行
StartAgents=0
ServerActive=172.24.8.71 #主动模式下的Zabbix服务端地址
 

三 部署Zabbix-Proxy

3.1 安装Zabbix官方源和epel源

 [root@proxy01 ~]# yum -y install epel-release.noarch
[root@proxy01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
 

3.2 安装Zabbix-proxy等组件

 [root@proxy01 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mariadb mariadb-server zabbix-agent
注意:1 Zabbix官方的yum源为:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 服务器端也需要监控,因此也安装Zabbix-Agent。

3.3 简单优化MariaDB

 [root@proxy01 ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
character-set-server=utf8 #设置字符集为utf8
innodb_file_per_table=1 #设置innodb的每个表文件单独存储
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
……
[root@proxy01 ~]# systemctl enable mariadb #设为开机启动
[root@proxy01 ~]# systemctl start mariadb #开启MariaDB数据
 

3.4 设置数据库相关项

 [root@proxy01 ~]# mysql_secure_installation		#设置安全性,并设置数据库root密码
[root@proxy01 ~]# mysql -u root -p
MariaDB [(none)]> create database zabbixproxydb character set utf8 collate utf8_bin;
#创建数据库且字符集为utf8,使web界面显示中文不出现乱码
MariaDB [(none)]> grant all privileges on zabbixproxydb.* to proxy@'localhost' identified by 'x120952576';
#创建zabbixproxydb数据库和proxy用户,且赋予此用户拥有此数据库全部权限。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
 
注意:1 若之后忘记该密码可使用以下命令修改密码——
UPDATE zabbixproxydb.user SET passwd=md5('proxy') WHERE alias='Admin'

3.5 导入数据库相关表

 [root@proxy01 ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.0/    #进入数据库模板所在目录
[root@proxy01 zabbix-proxy-mysql-4.0.0]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@proxy01 zabbix-proxy-mysql-4.0.0]# zcat schema.sql.gz | mysql -uroot -p zabbixproxydb
#将模板数据恢复至Zabbix数据库,此处为需要输入MariaDB的root用户密码。
Enter password:
[root@proxy01 ~]# mysql -u proxy -p #用proxy用户登录
 
注意:也可以gunzip create.sql.gz解压后使用mysql -uroot -p zabbixproxydb< create.sql恢复模板。
 MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbixproxydb;
MariaDB [zabbixproxydb]> show tables; #查看数据表
MariaDB [zabbixproxydb]> exit
 

3.6 配置zabbix_proxy.conf项

 [root@proxy01 ~]# vi /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 # 默认即为0,代表 Proxy 处于主动模式,即 Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式
Server=127.0.0.1,172.24.8.71 #若为纯主动模式需要注释此行
ServerActive=172.24.8.71 #主动模式,Proxy主动向Server传送数据
ServerPort=10051 # 默认即为10051,Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效 Hostname=zabbixpoxy01 # Server端添加proxy的时候需要一致,建议采用主机名
LogFile=/var/log/zabbix/zabbix_proxy.log # Proxy 日志文件位置
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=localhost # 连接数据库的主机
DBName=zabbixproxydb # 数据库名
DBUser=proxy # 连接用户
DBPassword=x120952576 # 用户密码
ConfigFrequency=60 # proxy主动从server端检索配置更新的频率,单位秒,主动proxy 参数, 被动 proxies忽略此项
DataSenderFrequency=60 # Proxy 向 Zabbix Server 发送监控数据间隔,单位为秒
Timeout=4
 
提示:对于DBHost,强烈建议不要喝Server端相同,避免损毁Server端数据库;更多参数解释参考官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/appendix/config/zabbix_proxy        

3.7 Proxy自身agent配置

 [root@imxhy02 ~]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1,172.24.8.71 #若为纯主动模式需要注释此行
ServerActive=172.24.8.71 #主动模式,proxy自身主Server传送数据
Hostname=zabbixserver #zabbix server web上添加自身需要用到
 
提示:为防止proxy异常导致监控故障,Server端需要监控Proxy。

3.8 zabbix启动级开机启动

 [root@proxy01 ~]# systemctl start zabbix-proxy.service
[root@proxy01 ~]# systemctl enable zabbix-proxy.service
[root@proxy01 ~]# systemctl start zabbix-agent.service
[root@proxy01 ~]# systemctl enable zabbix-agent.service
 
提示:Proxy02参考proxy01配置即可,hostname配置为Hostname=zabbixpoxy02。

四 部署Zabbix-Server

4.1 安装Zabbix官方源和epel源

 [root@server ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@server ~]# ls /etc/yum.repos.d/ #查看Zabbix源是否安装成功
epel.repo epel-testing.repo zabbix.repo
 

4.2 安装Zabbix Server等组件

 [root@server ~]# yum -y install zabbix-get zabbix-server-mysql zabbix-web-mysql zabbix-web zabbix-agent mariadb mariadb-server
注意:1 Zabbix官方的yum源为:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 服务器端也需要监控,因此也安装Zabbix-Agent。

4.3 简单优化MariaDB

 [root@server ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
character-set-server=utf8 #设置字符集为utf8
innodb_file_per_table=1 #设置innodb的每个表文件单独存储
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
……
[root@server ~]# systemctl enable mariadb #设为开机启动
[root@server ~]# systemctl start mariadb #开启MariaDB数据
 

4.4 设置数据库相关项

 [root@server ~]# mysql_secure_installation		#设置安全性,并设置数据库root密码
[root@server ~]# mysql -u root -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#创建数据库且字符集为utf8,使web界面显示中文不出现乱码
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'x120952576';
#创建zabbix数据库和Zabbix用户,且赋予此用户拥有此数据库全部权限。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
 
注意:1 若之后忘记该密码可使用以下命令修改密码——
UPDATE zabbix.user SET passwd=md5('zabbix') WHERE alias='Admin'

4.5 导入数据库相关表

 
 [root@server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.0/	#进入数据库模板所在目录
[root@server zabbix-server-mysql-4.0.0]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@server zabbix-server-mysql-4.0.0]# zcat create.sql.gz | mysql -uroot -p zabbix #将模板数据恢复至Zabbix数据库
注意:也可以gunzip create.sql.gz解压后使用mysql -uroot -p  zabbix < create.sql恢复模板。
 [root@server ~]# mysql -u zabbix -px120952576 zabbix -e "show tables"	#查看数据表项

4.6 配置Zabbix_server.conf项

 [root@server ~]# vi /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost #修改主机
DBName=zabbix
DBUser=zabbix
DBPassword=x120952576 #修改DB密码(之前所创建密码)
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
 

4.7 Server自身agent配置

 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1,172.24.8.71 #若为纯主动模式需要注释此行
ServerActive=172.24.8.71 #主动模式,Server自身主动向自己传送数据
Hostname=zabbixserver #zabbix server web上添加自身需要用到
 
提示:为防止Server异常导致监控故障,Server端也需要被监控。

4.8 启动Zabbix服务

 [root@server ~]# systemctl enable zabbix-server		#设为开机启动Zabbix服务
[root@server ~]# systemctl start zabbix-server #启动Zabbix服务
[root@server ~]# systemctl start zabbix-agent #需要监控自己,因此也开启agent
[root@server ~]# systemctl enable zabbix-agent #启动Zabbix服务
 

4.8 配置php

 [root@server ~]# vi /etc/php.ini
date.timezone= Asia/Shanghai
max_execution_time = 300
post_max_size = 16M
memory_limit = 128M
[root@server ~]# vi /etc/httpd/conf.d/zabbix.conf
Alias /zabbix /usr/share/zabbix
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Riga
</IfModule>
</Directory>
 
注意:1 若之后配置web时,提示任何参数不满足安装配置要求,修改对应的参数后重启httpd即可;
2 yum安装可能zabbix.conf中已包含相关配置。

4.9 启动Apache服务

 [root@server ~]# systemctl start httpd.service
[root@server ~]# systemctl enable httpd.service
 
注意:此处建议为了防止不必要的问题,可关闭SELinux和防火墙。

4.10 Web界面配置

略,可参考《004.Zabbix3.2-Server服务端安装》。

4.11 Server端添加Proxy

登录Zabbix Server的Web后,管理---->agent代理程序---->创建代理
Proxy name : 输入代理名称,它必须与代理配置文件中的Hostname参数中的名称相同。
Proxy mode : 选择代理模式。
Proxy address : 添加的代理主机IP地址。
Description: 输入代理描述。
提示:参考以上添加Proxy02节点。

五 部署Zabbix Agent节点

5.1 安装Zabbix官方源和epel源

 [root@node01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@node01 ~]# ls /etc/yum.repos.d/ #查看Zabbix源是否安装成功
epel.repo epel-testing.repo zabbix.repo
 

5.2 安装Zabbix Agent等组件

 [root@node01 ~]# yum -y install zabbix-agent
注意:1 Zabbix官方的yum源为:http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/。
2 node2参考node1部署即可。

5.3 node节点agent配置

 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1,172.24.8.72 #若为纯主动模式需要注释此行
ServerActive=172.24.8.72 #主动模式,node01向proxy01主动传送数据
Hostname=node01 #Zabbix server web上添加node需要用到
 
提示:为防止Server异常导致监控故障,Server端也需要被监控。

5.4 启动Zabbix服务

 [root@node01 ~]# systemctl start zabbix-agent
[root@node01 ~]# systemctl enable zabbix-agent #启动Zabbix agent服务
 
提示:node2参考node1部署,Server主动模式改为:ServerActive=172.24.8.73,Hostname=node02即可。

六 添加主机

6.1 修改模板监控模式

配置---->模板---->Template OS Linux---->全克隆
在新克隆的模板中,将采集方式修改为主动式。
Linux系统模板---->监控项---->全选---->批量更新---->类型---->zabbix客户端(主动式)---->更新
提示:Zabbix自带监控模板的采集方式为被动式,需要修改为主动式。
Linux系统模板---->自动发现规则,需要将两个发现规则均改为主动式。
Mounted filesystem discovery自动发现规则修改为主动式。
Network interface discovery参考即可。

6.2 添加Server自身

略,Zabbix Server默认会添加自身节点。

6.3 添加Proxy节点

为了方便管理,可新建代理节点监控主机组。
配置---->主机---->添加主机
配置项
描述
主机名(Host name)
输入在agent配置文件中配置的主机名,
必须唯一且不重复且和host定义的Host name名称一致。
访问名(Visible name)
在主机列表、图表等地方显示的名字,需要utf-8支持。
群组(Groups in groups)
选择主机所属的群组,一个主机必须属于至少一个主机组。
新主机组(New group)
自动创建一个新的群组,并加入此群组。
接口协议
Zabbix支持的协议有:Agent、SNMP、JMX和IPMI,选择对应的即可。
IP地址(IP address)
需要监控的主机的IP地址
DNS名称(DNS name)
需要监控主机的DNS能够解析的名称
与agent的通信方式(Connect to)
连接要监控主机的IP地址/要监控主机能解析的DNS名称
端口(Port)
TCP协议的端口,Zabbix客户端使用的默认为10050
代理监控(Monitored by proxy)
可以通过Zabbix服务器或者Zabbix的一个代理去监控客户端
注意:推荐采用DNS监控,防止更换IP后某个网站无法监控(对固定域名的网站)。
为主机选择相应的模板
提示:Proxy02参考proxy01添加即可,主机名及接口地址配置为proyx02节点信息即可。

6.3 添加node节点

为了方便管理,可新建代理节点监控应用主机组。
配置---->主机---->添加主机
为主机选择相应的模板
提示:参考node01添加node02,node02节点由agent代理程序监测选择proxy02即可。

七 确认验证

7.1 查看log

进入相关节点的/var/log/zabbix/zabbix*.log可查看相关日志。

7.2 主机图形确认

登录Zabbix之后查看主机及图形
随机查看node01节点监控图形。
 
 
 
 

030.Zabbix分布式部署的更多相关文章

  1. zabbix分布式部署和主机自动发现

    1.分布式部署原理 1.1Zabbix分布式部署的原理 传统的部署架构,是server直接监控所有的主机,全部主机的数据都是有server自己来采集和处理,server端的压力比较大,当监控主机数量很 ...

  2. Zabbix监控和分布式部署实施方案

    最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每 个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到 ...

  3. zabbix分布式监控部署--技术流ken

    前言 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  4. 企业级监控软件zabbix搭建部署之zabbix server的安装

    企业级监控软件zabbix搭建部署之zabbix server的安装 zabbix线上已经应用半年多了,关于zabbix在生产环境中的使用心得,以及一些经验写下来,希望让大家少走弯路,共同学习! 环境 ...

  5. 企业级监控软件Zabbix搭建部署之zabbix在WEB页面中的配置

    企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 关于安装请看 http://www.linuxidc.com ...

  6. Zabbix分布式监控系统实践

    https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...

  7. Hadoop1 Centos伪分布式部署

    前言:       毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了.对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环 ...

  8. ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署

    本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的       ...

  9. Memcache分布式部署方案

    基础环境 其实基于PHP扩展的Memcache客户端实际上早已经实现,而且非常稳定.先解释一些名词,Memcache是danga.com的一个开源项目,可以类比于MySQL这样的服务,而PHP扩展的M ...

随机推荐

  1. SpringBoot2.x个性化启动banner设置和debug日志

    3.SpringBoot2.x个性化启动banner设置和debug日志 简介:自定义应用启动的趣味性日志图标和查看调试日志 1.启动获取更多信息 java -jar xxx.jar --debug ...

  2. Shiro缓存(十三)

    使用缓存,可以解决每次访问请求都查数据库的问题.第一次授权后存入缓存. 缓存流程 shiro中提供了对认证信息和授权信息的缓存.shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启 ...

  3. java 多线程二

    java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...

  4. driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL) 【转】

    转自:http://blog.chinaunix.net/uid-23381466-id-3837650.html 内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数, ...

  5. springboot系列十、springboot整合redis、多redis数据源配置

    一.简介 Redis 的数据库的整合在 java 里面提供的官方工具包:jedis,所以即便你现在使用的是 SpringBoot,那么也继续使用此开发包. 二.redidTemplate操作 在 Sp ...

  6. Redis消息通知(任务队列和发布订阅模式)

    Redis学习笔记(十)消息通知(任务队列和发布订阅模式) 1. 任务队列 1.1 任务队列的特点 任务队列:顾名思义,就是“传递消息的队列”.与任务队列进行交互的实体有两类,一类是生产者(produ ...

  7. 006_nginx动态upstream和安全检查模块

    一.参考Tengine   http://tengine.taobao.org/document_cn/http_dyups_cn.html ngx_http_dyups_module Descrip ...

  8. aliyun服务器ecs被ddos后无法被zabbix-server监控的处理

    ecs绑定的域名被ddos攻击后,阿里云黑洞ecs服务器一个月,此时zabbix服务端无法联系到zabbix-agent会一直报错 解决办法: 1.在ecs前添加slb并把之前指向ecs的域名a.ch ...

  9. rt3070无线网卡移植到开发板

    Rt3070无线网卡AP功能移植到GEC210一.平台开发板:GEC210 无线网卡:RT3070主机:VMWare--Ubuntu 10.04 LTS内核版本:linux-2.6.35.7编译器:a ...

  10. Appium+Java(一) Windows环境搭建篇

    准备: Android版本 :4.2.2 nodejs版本:5.6.0 appium版本:v1.4.16 1. 安卓SDK及配置环境变量 1.1.先下载sdk安装包:installer_r24.4.1 ...