1. zabbix 分布式架构[服务器数量较大的场景下使用]
现有架构:
agent --> zabbix server
proxy架构:
agent --> zabbix proxy --> zabbix server
proxy架构是让agent数据上报给zabbix proxy然后由zabbix proxy统一发送给zabbix server
架构改造:
将一台zabbix_agent 转变为 zabbix proxy
新增一台 zabbix server让zabbix proxy数据发送给zabbix server
10.0.0.80 zabbix_server
10.0.0.66 zabbix_agent 转变为 zabbix_proxy
10.0.0.63 zabbix_agent
10.0.0.65 zabbix_agent
2. zabbix_proxy架构图
3. zabbix agent业务机器配置agent:
将zabbix agent的服务器地址指向 proxy服务器
下面配置的是 10.0.0.63 10.0.0.65 服务器修改 zabbix proxy 项指向了 10.0.0.66的proxy服务器
#agent客户端10.0.0.63配置:
#1. 修改agent配置文件的proxy服务器地址
[root@master zabbix]# egrep -v "^#|^$" /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
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#----------------------- 将server改为我们的zabbix proxy服务器地址 ----------------------------
如下:
[root@node2_proxy zabbix-proxy-mysql-3.4.10]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.66
ServerActive=10.0.0.66
Hostname=Zabbix_agent_66
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#-----------------
# 2. 重启 zabbix_agent服务
[root@master zabbix]# systemctl restart zabbix-agent.service
============================================
----------------分割线----------------------
============================================
#agent客户端10.0.0.65配置:
#agent客户端配置:
#1. 修改agent配置文件的proxy服务器地址
[root@master zabbix]# egrep -v "^#|^$" zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#----------------------- 将server改为我们的zabbix proxy 服务器地址 ----------------------------
如下:
[root@master zabbix]# egrep -v "^#|^$" zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.66
ServerActive=10.0.0.66
Hostname=Zabbix_agent_65
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#-----------------
# 2. 重启 zabbix_agent服务
[root@master zabbix]# systemctl restart zabbix-agent.service
4. zabbix_proxy 安装 [10.0.0.66]
-------------------------------------------------
一 . 安装zabbix-proxy:
#1. 安装zabbix-agent zabbix-proxy
yum localinstall -y https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10-1.el7.x86_64.rpm
yum localinstall -y http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-proxy-mysql-3.4.10-1.el7.x86_64.rpm
#2. 安装 mariadb
yum install -y mariadb-server
#2.1 启动mariadb和设置开机自启动
systemctl start mariadb.service
systemctl enable mariadb.service
#2.2 创建zabbix_proxy库
mysql
create database zabbix_proxy default charset utf8;
grant all privileges on zabbix_proxy.* to zabbix_proxy@'localhost' identified by '123456';
flush privileges;
exit
数据库账号密码: zabbix_proxy 123456
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zabbix_proxy |
+--------------------+
3 rows in set (0.00 sec)
#2.3 导入zabbix_proxy数据[默认就在zabbix-proxy中]:
cd /usr/share/doc/zabbix-proxy-mysql-3.4.10/
zcat schema.sql.gz |mysql -uzabbix_proxy -p123456 zabbix_proxy
如果你不知道文件在哪儿你可以使用 rpm -ql zabbix-proxy 来查看
schema.sql.gz 这个文件就是
进入数据库检查:
mysql
use zabbix_proxy;
show tables;
看到里面有表证明成功
-------------------------------------------------
二. 配置zabbix-proxy连接数据库:
配置文件: /etc/zabbix/zabbix_proxy.conf
1. 修改配置文件:
/etc/zabbix/zabbix_proxy.conf
修改为以下结果:
Server=10.0.0.80
Hostname=Zabbix_proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=123456
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
-------------------------------------------------
1.1 配置文件解释:
[root@node2_proxy zabbix-proxy-mysql-3.4.10]# cat /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.80 ##<--------改为zabbix server服务器地址
Hostname=80_zabbix_proxy ##<--------这个名字很重要,它关系到 zabbix server是否可以找到proxy服务器
LogFile=/var/log/zabbix/zabbix_proxy.log ##<-------- 日志文件
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid ##<-------- 进程pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy ##<-------- 改为zabbix_proxy 数据库名
DBUser=zabbix_proxy ##<-------- 改为zabbix_proxy 数据库连接账户
DBPassword=123456 ##<-------- 改为zabbix_proxy 数据库连接密码
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
#2. 重启zabbix-proxy服务
systemctl restart zabbix-proxy.service
#检查状态:
systemctl status zabbix-proxy.service
#开机启动:
systemctl enable zabbix-proxy.service
记得启动完成后检查一下服务状态: systemctl status zabbix-proxy.service,直接查看进程也可以:
[root@node2_proxy zabbix-proxy-mysql-3.4.10]# netstat -lntup |grep zabbix_proxy
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 37332/zabbix_proxy
tcp6 0 0 :::10051 :::* LISTEN 37332/zabbix_proxy
-------------------------------------------------
三. zabbix server配置获取zabbix proxy数据配置:
5. WEB页面配置 [http://10.0.0.80]
依次选择:
配置 - 主机 - 创建主机
配置好了添加:
这里的 zabbix图标没有亮,需要等待一会儿,如果等不及,就去重启一下 proxy服务器中的zabbix-proxy
systemctl restart zabbix-proxy
再次刷新就看到被监控上了:
检查告警是否正常:
微信告警推送正常: