Zabbix Proxy 分布式监控安装和配置实践

by wsgzao

HelloDog / 2018-11-02 19:24

By wsgzao

发表于 2018-11-02

前言

Zabbix 最简单的监控模式莫过于 Zabbix Server -> Zabbix Agent, 默认的监控类型是 Zabbix agent(俗称被动模式)。但是在监控服务器数量越来越多,且地理位置分散在全球各个角落的时候,孤零零的 Zabbix Server 就显得力不从心了,这时候就轮到 Zabbix Proxy 闪亮登场。

Zabbix Proxy 分布式监控安装和配置实践

更新历史

2018 年 11 月 02 日 – 初稿

阅读原文 – https://wsgzao.github.io/post/zabbix-proxy/

扩展阅读

Zabbix – https://www.zabbix.com/


官方文档

https://www.zabbix.com/documentation/current/manual/concepts/proxy
https://www.zabbix.com/documentation/3.4/zh/manual/concepts/proxy
https://www.zabbix.com/download

Zabbix Proxy 介绍

Zabbix Proxy 可以代替 Zabbix Server 检索客户端的数据,然后把数据汇报给 Zabbix Server,
并且在一定程度上分担了 Zabbix Server 的压力。Zabbix Proxy 可以非常简便的实现了集中式、分布式监控。

Zabbix Proxy 使用场景:

  1. 监控远程区域设备
  2. 监控本地网络不稳定区域
  3. 当 Zabbix 监控上千设备时,使用它来减轻 Server 的压力
  4. 简化 Zabbix 的维护

Zabbix Proxy 仅仅需要一条 TCP 连接到 Zabbix Server,所以防火墙上仅仅需要加上一条规则即可。
Zabbix Proxy 数据库必须和 Zabbix Server 分开,否则数据会被破坏,毕竟这两个数据库的表大部分都相同。
总之记住,数据库分开即可。
Zabbix Proxy 收集到数据之后,首先将数据缓存在本地,然后在一定的时间之后传递给 Zabbix Server。
这个时间由 Zabbix Proxy 配置文件中参数 ProxyLocalBuffer and ProxyOfflineBuffer 决定。

Zabbix Proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警。

Zabbix Proxy 安装

Zabbix Proxy 架构变化其实很简单,通常在每个机房搭建一台,最终把数据汇总到 Zabbix Server

  1. Zabbix Server -> Zabbix Proxy -> Zabbix Agent
  2. Items 变为 Zabbix agent(active),俗称主动模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# zabbix proxy 的依赖就只有数据库了,用于存储配置信息 
yum install -y mariadb-server mariadb
# 启动 mariadb 服务
systemctl start mariadb.service
systemctl enable mariadb.service
# 初始化 mysql 数据库,并配置 root 用户密码
mysql_secure_installation

# 创建 zabbix_proxy 数据库
mysql -uroot -p

mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
mysql> quit;

# 部署 zabbix_proxy
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-proxy-mysql
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p zabbix_proxy

# 配置数据库用户及密码
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.56.103
Hostname=zabbix_proxy
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix

# 配置 Zabbix Server Proxy
Administration -> Proxies -> Create proxy
Proxy name: zabbix_proxy
Proxy mode: Active
Proxy address: 192.168.56.101

# 启动 zabbix_proxy
systemctl restart zabbix-proxy

# 修改 zabbix_agent 配置指向 zabbix_proxy
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.101,192.168.56.103
ServerActive=192.168.56.101
Hostname=192.168.56.101

# 设置 zabbix_proxy 服务
systemctl enable zabbix-proxy

# 在 zabbix_server 中添加代理主机
Configuration -> Hosts -> Create host
Monitored by proxy: zabbix_proxy