前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >030.Zabbix分布式部署

030.Zabbix分布式部署

作者头像
木二
发布2019-07-26 09:37:38
7330
发布2019-07-26 09:37:38
举报
文章被收录于专栏:木二天空木二天空

一 分布式Zabbix介绍

zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix server 的压力。

此外,当所有agents和proxy报告给一个Zabbix server并且所有数据都集中收集时,使用proxy是实现集中式和分布式监控的最简单方法。

zabbix proxy 使用场景:

  • 监控远程区域设备
  • 监控本地网络不稳定区域
  • 当 zabbix 监控上千设备时,使用它来减轻 server 的压力
  • 简化分布式监控的维护

二 分布式Zabbix架构

2.1 架构示意图

121
121

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

代码语言:javascript
复制
  1 # systemctl stop firewalld
  2 # systemctl disable firewalld
  3 # setenforce 0
  4 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  5 # vi /etc/hosts			#添加在server和proxy节点添加以下主机名配置
  6 172.24.8.71     zabbixserver
  7 172.24.8.72     zabbixpoxy01
  8 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 模式配置

被动模式设置主要参数

代码语言:javascript
复制
  1 Server=172.24.8.71			#被动模式下的Zabbix服务端地址
  2 ListenPort=10050
  3 ServerActive=172.24.8.71		#主动模式下的Zabbix服务端地址,若纯被动模式可注释此行

主动模式设置主要参数

代码语言:javascript
复制
  1 Server=127.0.0.1,172.24.8.71	#被动模式下的Zabbix服务端地址,若纯主动模式可注释此行
  2 StartAgents=0
  3 ServerActive=172.24.8.71		#主动模式下的Zabbix服务端地址

三 部署Zabbix-Proxy

3.1 安装Zabbix官方源和epel源

代码语言:javascript
复制
  1 [root@proxy01 ~]# yum -y install epel-release.noarch
  2 [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等组件

代码语言:javascript
复制
  1 [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

代码语言:javascript
复制
  1 [root@proxy01 ~]# vi /etc/my.cnf
  2 [mysqld]
  3 datadir=/var/lib/mysql
  4 socket=/var/lib/mysql/mysql.sock
  5 symbolic-links=0
  6 character-set-server=utf8		#设置字符集为utf8
  7 innodb_file_per_table=1		#设置innodb的每个表文件单独存储
  8 [mysqld_safe]
  9 log-error=/var/log/mariadb/mariadb.log
 10 pid-file=/var/run/mariadb/mariadb.pid
 11 ……
 12 [root@proxy01 ~]# systemctl enable mariadb		#设为开机启动
 13 [root@proxy01 ~]# systemctl start mariadb		#开启MariaDB数据

3.4 设置数据库相关项

代码语言:javascript
复制
  1 [root@proxy01 ~]# mysql_secure_installation		#设置安全性,并设置数据库root密码
  2 [root@proxy01 ~]# mysql -u root -p
  3 MariaDB [(none)]> create database zabbixproxydb character set utf8 collate utf8_bin;

注意:1 若之后忘记该密码可使用以下命令修改密码——

UPDATE zabbixproxydb.user SET passwd=md5('proxy') WHERE alias='Admin'

3.5 导入数据库相关表

代码语言:javascript
复制
  1 [root@proxy01 ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.0/    #进入数据库模板所在目录
  2 [root@proxy01 zabbix-proxy-mysql-4.0.0]# ls
  3 AUTHORS  ChangeLog  COPYING  NEWS  README  schema.sql.gz
  4 [root@proxy01 zabbix-proxy-mysql-4.0.0]# zcat schema.sql.gz | mysql -uroot -p zabbixproxydb

注意:也可以gunzip create.sql.gz解压后使用mysql -uroot -p zabbixproxydb< create.sql恢复模板。

代码语言:javascript
复制
  1 MariaDB [(none)]> show databases;
  2 MariaDB [(none)]> use zabbixproxydb;
  3 MariaDB [zabbixproxydb]> show tables;			#查看数据表
  4 MariaDB [zabbixproxydb]> exit
122
122

3.6 配置zabbix_proxy.conf项

代码语言:javascript
复制
  1 [root@proxy01 ~]# vi /etc/zabbix/zabbix_proxy.conf
  2 ProxyMode=0        # 默认即为0,代表 Proxy 处于主动模式,即 Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式
  5 Server=127.0.0.1,172.24.8.71		#若为纯主动模式需要注释此行
  6 ServerActive=172.24.8.71			#主动模式,Proxy主动向Server传送数据
  7 ServerPort=10051                            # 默认即为10051,Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
  9 
 10 Hostname=zabbixpoxy01                       # Server端添加proxy的时候需要一致,建议采用主机名
 12 LogFile=/var/log/zabbix/zabbix_proxy.log	# Proxy 日志文件位置
 13 LogFileSize=0
 14 PidFile=/var/run/zabbix/zabbix_proxy.pid
 15 DBHost=localhost               		# 连接数据库的主机
 16 DBName=zabbixproxydb			# 数据库名
 17 DBUser=proxy				# 连接用户
 18 DBPassword=x120952576           		# 用户密码
 19 ConfigFrequency=60  # proxy主动从server端检索配置更新的频率,单位秒,主动proxy 参数, 被动 proxies忽略此项
 21 DataSenderFrequency=60                      # Proxy 向 Zabbix Server 发送监控数据间隔,单位为秒
 23 Timeout=4

提示:对于DBHost,强烈建议不要喝Server端相同,避免损毁Server端数据库;更多参数解释参考官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/appendix/config/zabbix_proxy

3.7 Proxy自身agent配置

代码语言:javascript
复制
  1 [root@imxhy02 ~]# vi /etc/zabbix/zabbix_agentd.conf
  2 PidFile=/var/run/zabbix/zabbix_agentd.pid
  3 LogFile=/var/log/zabbix/zabbix_agentd.log
  4 LogFileSize=0
  5 Server=127.0.0.1,172.24.8.71		#若为纯主动模式需要注释此行
  6 ServerActive=172.24.8.71			#主动模式,proxy自身主Server传送数据
  7 Hostname=zabbixserver			#zabbix server web上添加自身需要用到

提示:为防止proxy异常导致监控故障,Server端需要监控Proxy。

3.8 zabbix启动级开机启动

代码语言:javascript
复制
  1 [root@proxy01 ~]# systemctl start zabbix-proxy.service
  2 [root@proxy01 ~]# systemctl enable zabbix-proxy.service
  3 [root@proxy01 ~]# systemctl start zabbix-agent.service
  4 [root@proxy01 ~]# systemctl enable zabbix-agent.service

提示:Proxy02参考proxy01配置即可,hostname配置为Hostname=zabbixpoxy02。

四 部署Zabbix-Server

4.1 安装Zabbix官方源和epel源

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

4.2 安装Zabbix Server等组件

代码语言:javascript
复制
  1 [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

代码语言:javascript
复制
  1 [root@server ~]# vi /etc/my.cnf
  2 [mysqld]
  3 datadir=/var/lib/mysql
  4 socket=/var/lib/mysql/mysql.sock
  5 symbolic-links=0
  6 character-set-server=utf8		#设置字符集为utf8
  7 innodb_file_per_table=1		#设置innodb的每个表文件单独存储
  8 [mysqld_safe]
  9 log-error=/var/log/mariadb/mariadb.log
 10 pid-file=/var/run/mariadb/mariadb.pid
 11 ……
 12 [root@server ~]# systemctl enable mariadb		#设为开机启动
 13 [root@server ~]# systemctl start mariadb		#开启MariaDB数据

4.4 设置数据库相关项

代码语言:javascript
复制
  1 [root@server ~]# mysql_secure_installation		#设置安全性,并设置数据库root密码
  2 [root@server ~]# mysql -u root -p
  3 MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
  4 #创建数据库且字符集为utf8,使web界面显示中文不出现乱码
  5 MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'x120952576';
  6 #创建zabbix数据库和Zabbix用户,且赋予此用户拥有此数据库全部权限。
  7 MariaDB [(none)]> flush privileges;
  8 MariaDB [(none)]> exit;

注意:1 若之后忘记该密码可使用以下命令修改密码——

UPDATE zabbix.user SET passwd=md5('zabbix') WHERE alias='Admin'

4.5 导入数据库相关表

代码语言:javascript
复制
  1 [root@server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.0/	#进入数据库模板所在目录
  2 [root@server zabbix-server-mysql-4.0.0]# ls
  3 AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
  4 [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恢复模板。

代码语言:javascript
复制
  1 [root@server ~]# mysql -u zabbix -px120952576 zabbix -e "show tables"	#查看数据表项

4.6 配置Zabbix_server.conf项

代码语言:javascript
复制
  1 [root@server ~]# vi /etc/zabbix/zabbix_server.conf
  2 LogFile=/var/log/zabbix/zabbix_server.log
  3 LogFileSize=0
  4 PidFile=/var/run/zabbix/zabbix_server.pid
  5 DBHost=localhost					#修改主机
  6 DBName=zabbix
  7 DBUser=zabbix
  8 DBPassword=x120952576				#修改DB密码(之前所创建密码)
  9 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
 10 Timeout=4
 11 AlertScriptsPath=/usr/lib/zabbix/alertscripts
 12 ExternalScripts=/usr/lib/zabbix/externalscripts
 13 LogSlowQueries=3000

4.7 Server自身agent配置

代码语言:javascript
复制
  1 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
  2 PidFile=/var/run/zabbix/zabbix_agentd.pid
  3 LogFile=/var/log/zabbix/zabbix_agentd.log
  4 LogFileSize=0
  5 Server=127.0.0.1,172.24.8.71			#若为纯主动模式需要注释此行
  6 ServerActive=172.24.8.71			        #主动模式,Server自身主动向自己传送数据
  7 Hostname=zabbixserver				#zabbix server web上添加自身需要用到

提示:为防止Server异常导致监控故障,Server端也需要被监控。

4.8 启动Zabbix服务

代码语言:javascript
复制
  1 [root@server ~]# systemctl enable zabbix-server		#设为开机启动Zabbix服务
  2 [root@server ~]# systemctl start zabbix-server		#启动Zabbix服务
  3 [root@server ~]# systemctl start zabbix-agent		#需要监控自己,因此也开启agent
  4 [root@server ~]# systemctl enable zabbix-agent		#启动Zabbix服务

4.8 配置php

代码语言:javascript
复制
  1 [root@server ~]# vi /etc/php.ini
  2 date.timezone= Asia/Shanghai
  3 max_execution_time = 300
  4 post_max_size = 16M
  5 memory_limit = 128M
  6 [root@server ~]# vi /etc/httpd/conf.d/zabbix.conf
  7 Alias /zabbix /usr/share/zabbix
  8 <Directory "/usr/share/zabbix">
  9     Options FollowSymLinks
 10     AllowOverride None
 11     Require all granted
 12     <IfModule mod_php5.c>
 13         php_value max_execution_time 300
 14         php_value memory_limit 128M
 15         php_value post_max_size 16M
 16         php_value upload_max_filesize 2M
 17         php_value max_input_time 300
 18         php_value max_input_vars 10000
 19         php_value always_populate_raw_post_data -1
 20         php_value date.timezone Europe/Riga
 21     </IfModule>
 22 </Directory>

注意:1 若之后配置web时,提示任何参数不满足安装配置要求,修改对应的参数后重启httpd即可;

2 yum安装可能zabbix.conf中已包含相关配置。

4.9 启动Apache服务

代码语言:javascript
复制
  1 [root@server ~]# systemctl start httpd.service
  2 [root@server ~]# systemctl enable httpd.service

注意:此处建议为了防止不必要的问题,可关闭SELinux和防火墙。

4.10 Web界面配置

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

4.11 Server端添加Proxy

登录Zabbix Server的Web后,管理---->agent代理程序---->创建代理

123
123

Proxy name : 输入代理名称,它必须与代理配置文件中的Hostname参数中的名称相同。

Proxy mode : 选择代理模式。

Proxy address : 添加的代理主机IP地址。

Description: 输入代理描述。

124
124

提示:参考以上添加Proxy02节点。

五 部署Zabbix Agent节点

5.1 安装Zabbix官方源和epel源

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

5.2 安装Zabbix Agent等组件

代码语言:javascript
复制
  1 [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配置

代码语言:javascript
复制
  1 [root@server ~]# vi /etc/zabbix/zabbix_agentd.conf
  2 PidFile=/var/run/zabbix/zabbix_agentd.pid
  3 LogFile=/var/log/zabbix/zabbix_agentd.log
  4 LogFileSize=0
  5 Server=127.0.0.1,172.24.8.72			#若为纯主动模式需要注释此行
  6 ServerActive=172.24.8.72			        #主动模式,node01向proxy01主动传送数据
  7 Hostname=node01					#Zabbix server web上添加node需要用到

提示:为防止Server异常导致监控故障,Server端也需要被监控。

5.4 启动Zabbix服务

代码语言:javascript
复制
  1 [root@node01 ~]# systemctl start zabbix-agent
  2 [root@node01 ~]# systemctl enable zabbix-agent		#启动Zabbix agent服务

提示:node2参考node1部署,Server主动模式改为:ServerActive=172.24.8.73,Hostname=node02即可。

六 添加主机

6.1 修改模板监控模式

配置---->模板---->Template OS Linux---->全克隆

125
125

在新克隆的模板中,将采集方式修改为主动式。

126
126

Linux系统模板---->监控项---->全选---->批量更新---->类型---->zabbix客户端(主动式)---->更新

127
127

提示:Zabbix自带监控模板的采集方式为被动式,需要修改为主动式。

Linux系统模板---->自动发现规则,需要将两个发现规则均改为主动式。

128
128

Mounted filesystem discovery自动发现规则修改为主动式。

129
129

Network interface discovery参考即可。

6.2 添加Server自身

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

6.3 添加Proxy节点

为了方便管理,可新建代理节点监控主机组。

130
130

配置---->主机---->添加主机

配置项

描述

主机名(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后某个网站无法监控(对固定域名的网站)。

131
131

为主机选择相应的模板

132
132

提示:Proxy02参考proxy01添加即可,主机名及接口地址配置为proyx02节点信息即可。

6.3 添加node节点

为了方便管理,可新建代理节点监控应用主机组。

133
133

配置---->主机---->添加主机

134
134

为主机选择相应的模板

135
135

提示:参考node01添加node02,node02节点由agent代理程序监测选择proxy02即可。

七 确认验证

7.1 查看log

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

7.2 主机图形确认

登录Zabbix之后查看主机及图形

136
136

随机查看node01节点监控图形。

137
137
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 分布式Zabbix介绍
  • 二 分布式Zabbix架构
    • 2.1 架构示意图
      • 2.2 环境准备
        • 2.3 工作模式
          • 2.4 模式配置
          • 三 部署Zabbix-Proxy
            • 3.1 安装Zabbix官方源和epel源
              • 3.2 安装Zabbix-proxy等组件
                • 3.3 简单优化MariaDB
                  • 3.4 设置数据库相关项
                    • 3.5 导入数据库相关表
                      • 3.6 配置zabbix_proxy.conf项
                        • 3.7 Proxy自身agent配置
                          • 3.8 zabbix启动级开机启动
                          • 四 部署Zabbix-Server
                            • 4.1 安装Zabbix官方源和epel源
                              • 4.2 安装Zabbix Server等组件
                                • 4.3 简单优化MariaDB
                                  • 4.4 设置数据库相关项
                                    • 4.5 导入数据库相关表
                                      • 4.6 配置Zabbix_server.conf项
                                        • 4.7 Server自身agent配置
                                          • 4.8 启动Zabbix服务
                                            • 4.8 配置php
                                              • 4.9 启动Apache服务
                                                • 4.10 Web界面配置
                                                  • 4.11 Server端添加Proxy
                                                  • 五 部署Zabbix Agent节点
                                                    • 5.1 安装Zabbix官方源和epel源
                                                      • 5.2 安装Zabbix Agent等组件
                                                        • 5.3 node节点agent配置
                                                          • 5.4 启动Zabbix服务
                                                          • 六 添加主机
                                                            • 6.1 修改模板监控模式
                                                              • 6.2 添加Server自身
                                                                • 6.3 添加Proxy节点
                                                                  • 6.3 添加node节点
                                                                  • 七 确认验证
                                                                    • 7.1 查看log
                                                                      • 7.2 主机图形确认
                                                                      相关产品与服务
                                                                      云数据库 MariaDB
                                                                      腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
                                                                      领券
                                                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档