ZABBIX的分布式布署
分布式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 | xx.xx.xx.xx | Zabbix服务器 |
zabbixproxy01 | xx.xx.xx.xx | Zabbix poxy代理服务器1 |
zabbixproxy02 | xx.xx.xx.xx | Zabbix poxy代理服务器2 |
node01 | xx.xx.xx.xx | 模拟poxy1所监控的服务器node01 |
node02 | xx.xx.xx.xx | 模拟poxy2所监控的服务器node02 |
可关闭防火墙和SELinux,若不关闭可进行相应端口放通。
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# vi /etc/hosts #添加在server和proxy节点添加以下主机名配置
server主机 ip zabbixserver
Proxy1主机ip zabbixproxy01
Proxy2主机ip zabbixproxy02
部署Zabbix-Server
3.1 安装Zabbix官方源和epel源
[root@server~]#rpm-
ivhhttp://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/
存在epel.repo epel-testing.repo zabbix.repo这三个文件。
3.2 安装Zabbix Server等组件
[root@server ~]#
yum -y install zabbix-get zabbix-
server-mysql zabbix-web-mysql zabbix-web zabbix-agent mariadb mariadb-server
3.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数据
3.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 'zxc26134';
#创建zabbix数据库和Zabbix用户,且赋予此用户拥有此数据库全部权限。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
3.5 导入数据库相关表
[root@server ~]#cd /usr/share/doc/zabbix-server-mysql-4.x.x/ #
进入数据库模板所在目录
[root@server zabbix-server-mysql-4.0.45]#ls
[root@server zabbix-server-mysql-4.0.45]#
zcat create.sql.gz | mysql -uroot -p zabbix #将模板数据恢复至Zabbix数据库
[root@server ~]#
mysql -u zabbix -pzxc26134 zabbix -e "show tables" #查看数据表项
3.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=zxc26134 #修改DB密码(之前所创建密码)
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
3.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=本机ip
ServerActive=本机ip #主动模式,Server自身主动向自己传送数据
Hostname=zabbixserver #zabbix server web上添加自身需要用到
3.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服务
3.9 配置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>
3.10 启动Apache服务
[root@server ~]#systemctl start httpd.service
[root@server ~]#systemctl enable httpd.service
3.11 Web界面配置
1)访问http://ip/zabbix,界面如下
2)点击“Next step”检查组件是否OK
3)点击“Next step”,配置连接数据库
4)输入zabbix帐户的密码,然后“Next step”。Host为server的主机ip
5)预览配置概要后下一步
6)完成初始化配置
初始口令Admin/zabbix:
设置界面语言为汉语简体:
创建主机群组:
创建三个主机群组,一个为server群组,一个为proxy群组,一个为agent主机群组:
部署Zabbix-Proxy
4.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
4.2 安装Zabbix-proxy等组件
[root@proxy01 ~]#
yum install -y zabbix-proxy zabbix-
proxy-mysql mariadb mariadb-server zabbix-agent
4.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数据
4.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 'zxc26134';
#创建zabbixproxydb数据库和proxy用户,且赋予此用户拥有此数据库全部权限。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
4.5 导入数据库相关表
[root@proxy01 ~]#
cd /usr/share/doc/zabbix-proxy-mysql-4.x.x/ #进入数据库模板所在目录
[root@proxy01 zabbix-proxy-mysql-4.x.x]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@proxy01 zabbix-proxy-mysql-4.x.x]# zcat
schema.sql.gz | mysql -uroot -p zabbixproxydb
#将模板数据恢复至Zabbix数据库,此处为需要输入MariaDB的root用户密码。
Enter password:
[root@proxy01 ~]#mysql -u proxy -p #用proxy用户登录
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbixproxydb;
MariaDB [zabbixproxydb]> show tables; #查看数据表
MariaDB [zabbixproxydb]> exit
4.6 配置zabbix_proxy.conf项
[root@proxy01 ~]# vi /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 # 默认即为0,代表 Proxy 处于主动模式,即 Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式
Server=server主机的ip
ServerPort=10051 # 默认即为10051,Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
Hostname=zabbixproxy01 # 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=zxc26134 # 用户密码
ConfigFrequency=60 # proxy主动从server端检索配置更新的频率,单位秒,主动proxy 参数, 被动 proxies忽略此项
DataSenderFrequency=60 # Proxy 向 Zabbix Server 发送监控数据间隔,单位为秒
Timeout=4
4.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=server主机的ip #若为纯主动模式需要注释此行
ServerActive=server主机的ip #主动模式,proxy自身主Server传送数据
Hostname=zabbixproxy01 #zabbix server web上添加自身需要用到
4.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
4.9 Server端添加Proxy登录Zabbix Server的Web后,管理---->agent代理程序---->创建代理:
agent代理程序名称需要和proxy主机的Hostname一致,代理地址也需与proxy的ip地址一致。
部署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/
5.2 安装Zabbix Agent等组件
[root@node01 ~]#yum -y install zabbix-agent
5.3 主机节点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=proxy的ip #若为纯主动模式需要注释此行
ServerActive=proxy的ip #主动模式,主机1向proxy01主动传送数据
Hostname=自身主机名 #Zabbix server web上添加主机需要用到
5.4 启动Zabbix服务
[root@node01 ~]#systemctl start zabbix-agent
[root@node01 ~]#systemctl enable zabbix-agent
添加主机
6.1 点击创建主机需创建proxy主机以及agent主机:
主机名称要与conf里Hostname一致,群组选择对应群组,ip填写对应ip,选择对应代理(如果是proxy主机则不需要选择代理)。
6.2 然后选择模板界面,添加对应模板,然后选择最下面添加
确认验证
登录Zabbix之后查看主机及图形:
随机查看主机节点监控图形:
添加zabbixproxy2和主机2监控则重复上面的相关操作。