04 zabbix proxy


zabbix-proxy 分布式监控

  1. Zabbix Proxy是一个类似于代理的服务,可以代替Zabbix-server获取 zabbix-agent信息。

  2. 其中数据存到本地(Proxy有自己的数据库)然后在发送给Server,这样可以保证数据不丢失

使用场景

  1. 常用于多机房情况或者监控主机特别多,几千台左右。这时候使用Zabbix Proxy 可以减轻服务器server的压力,还可以减轻Zabbix的维护。
  2. 最常用的特点是适用于多机房、网络不稳定的时候,因为如果直接由Zabbix-server发送信息可能agent没有收到,但是直接使用Zabbix-Proxy就不会遇到这个问题。

特点

  1. 没有Web界面
  2. 本身不做任何告警通知(告警通知都是Server做)

  3. 小结:

    • Zabbix Proxy 可以有多个,用来代理Zabbix server来运行。Proxy会将所有数据暂存于本地,然后同一转发到Zabbix Server上
    • Proxy只需要一条TCP链接,可以连接到Zabbix-server上即可。所以防火墙只需要添加一条Zabbix Proxy即可 我们可以参考上面的Zabbix Proxy图
    • Proxy是需要使用单独的数据库,所以不能将Server和Agent放在一起

安装部署

yum安装

1
2
yum install -y zabbix-proxy zabbix-proxy-mysql mariadb-server mariadb
rpm -qa|grep zabbix-proxy

修改配置文件

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
proxy是连接server的
vim /etc/zabbix/zabbix_proxy.conf
# ProxyMode=0 ### 默认是主动模式 proxy会主动连接server
Server=10.0.0.160
Hostname=linux-node2.example.com
DBHost=10.0.0.161
DBUser=zabbix_proxy
DBPassword=zabbix_prox

# 配置文件中没有配置的内容如下:(有需要可以配置)
# ProxyLocalBuffer=0
# 数据保留的时间(小时为单位)
# ProxyOfflineBuffer=1
# 连不上Server,数据要保留多久(小时为单位,默认1小时)
# DataSenderFrequency=1
# 数据的发送时间间隔(默认是1秒)
# StartPollers=5
# 启动的线程数
# StartIPMIPollers=0
# 启动IPMI的线程数

grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf

Server=10.0.0.160
Hostname=linux-node2.example.com
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=10.0.0.161
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=300

启动数据库

1
2
3
4
5
6
7
8
9
10
11
12
# 启动
systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation
mysql -uroot -p123456

# 创建数据库
create database zabbix_proxy character set utf8 collate utf8_bin;

# 用户授权
grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy'; 
grant all on zabbix_proxy.* to zabbix_proxy@'linux-node2.example.com' identified by 'zabbix_proxy'

初始化数据

1
2
3
4
5
6
7
8
9
rpm -ql|grep zabbix-proxy-mysql

cd /usr/share/doc/zabbix-proxy-mysql-3.0.28/
zcat schema.sql.gz | mysql -h 10.0.0.161 -uzabbix_proxy -pzabbix_proxy zabbix_proxy

# 检查
mysql -h 10.0.0.161 -uzabbix_proxy -pzabbix_proxy
use zabbix_proxy
show tables;

启动

1
2
3
# Zabbix-proxy 监控10051端口,因为是代理就必须跟Server的端口相同,对于Agent Proxy就是Server
systemctl start zabbix-proxy
netstat -tnlp|grep 10051

Zabbix Web 配置proxy

管理-agent代理程序-创建代理

修改node2上的agent配置

1
2
3
4
5
6
7
8
9
# 主动和被动都是 proxy的IP
Server=10.0.0.161
ServerActive=10.0.0.161
Hostname=linux-node2.example.com

# 重启服务

[root@linux-node2 zabbix-proxy-mysql-3.0.28]# systemctl restart zabbix-agent
[root@linux-node2 ~]# tailf /var/log/zabbix/zabbix_proxy.log