之前有写过docker-compose部署zabbix的博客
这里再总结下分布式部署zabbix的笔记,这里重点是部署zabbix-proxy
同样需要准备数据库配置文件
数据库配置文件差不多
这里是docker-compose资源清单
---
version: '3'
services:
mysql:
image: mysql:5.7.41
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 4pxstdzc8943
#MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
volumes:
- ./zabbix/db:/var/lib/mysql
- ./zabbix/etc/my.cnf:/etc/my.cnf
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
ports:
- 3306:3306
networks:
- zabbix-net
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
zabbix-snmptraps:
#image: zabbix/zabbix-snmptraps:centos-6.2.4
image: zabbix/zabbix-snmptraps:centos-5.0.30
container_name: zabbix-snmptraps
restart: always
ports:
- 162:162/udp
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- snmptraps:/var/lib/zabbix/snmptraps:rw
- mibs:/var/lib/zabbix/mibs
zabbix-java-gateway:
#image: zabbix/zabbix-java-gateway:centos-6.2.4
image: zabbix/zabbix-java-gateway:centos-5.0.30
container_name: zabbix-java-gateway
restart: always
networks:
- zabbix-net
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
ports:
- 10052:10052
zabbix-proxy-mysql:
image: zabbix/zabbix-proxy-mysql:ubuntu-5.0.30
container_name: zabbix-proxy-mysql
restart: always
networks:
- zabbix-net
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- snmptraps:/var/lib/zabbix/snmptraps
- zabbix-proxy-conf:/etc/zabbix
- mibs:/var/lib/zabbix/mibs
ports:
- 10051:10051
environment:
#数据库地址
DB_SERVER_HOST: mysql
#数据库端口
DB_SERVER_PORT: 3306
#数据库用户
MYSQL_USER: zabbix
#数据库密码
MYSQL_PASSWORD: zabbix
#数据库中的库名
MYSQL_DATABASE: zabbix_proxy
#数据库root用户密码
MYSQL_ROOT_PASSWORD: 4pxstdzc8943
#5版本
#server端映射出来的IP
ZBX_SERVER_HOST: 112.xxx.xxx.xx
#server端映射出来的端口
ZBX_SERVER_PORT: 10051
#6版本
ZBX_SERVER_HOST: 112.xxx.xxx.xx:10051
#开启SNMP
ZBX_ENABLE_SNMP_TRAPS: true
#起始主动收集数据的进程
ZBX_STARTPOLLERS: 10
#起始负责处理Agentd推送过来的数据的进程
ZBX_STARTTRAPPERS: 100
#允许连接的ip地址,这里是允许所有的
ZBX_STATSALLOWEDIP: ::/0
#代理模式 0表示主动由proxy发送数据
ZBX_PROXYMODE: 0
#主机名,不用必须是主机名,可以是任何有效字符串,只是需要注意,多台发往同一server的不能相同,对应的是server端web界面创建proxy的proxy的名称
ZBX_HOSTNAME: testproxy
ZBX_STARTDISCOVERERS: 3
ZBX_STARTPINGERS: 10
ZBX_CACHESIZE: 1024M
ZBX_VALUECACHESIZE: 1024M
ZBX_VMWARECACHESIZE: 256M
#同步配置的时间,单位秒
ZBX_CONFIGFREQUENCY: 120
#发送数据的时间间隔 秒
ZBX_DATASENDERFREQUENCY: 3
#如果未与 Zabbix 服务器连接,Proxy 将保留数据 N 小时。
ZBX_PROXYOFFLINEBUFFER: 12
#Proxy 会在本地保留数据 6 小时,即使数据已经与服务器同步。
ZBX_PROXYLOCALBUFFER: 6
#历史缓存的大小,以字节为单位。
ZBX_HISTORYCACHESIZE: 1024M
#历史索引缓存的大小,以字节为单位。
ZBX_HISTORYINDEXCACHESIZE: 1024M
depends_on:
- mysql
networks:
zabbix-net:
volumes:
snmptraps:
zabbix-conf:
mibs:
zabbix-proxy-conf:
注意事项:
- 5版本和6版本略有不同,主要是
ZBX_SERVER_HOST
不通,6版本的要把端口和ip写起,5版本必须分开写 ZBX_HOSTNAME
非常重要,是server端创建proxy的依据,不一定要server端能解析,可以是任何有效的字符串,但是必须保证同一个server下的唯一性
比如与下图中标识的位置保持一直
- 配置web端时要注意,在创建proxy的时候,代理地址可以不填,填了就相当去设置了白名单,只允许设置的ip通过这个proxy上传数据
如果时容器部署的话,强烈建议不填,很容易认为设置了这个,导致proxy被拒绝
- 操作顺序应该是 先在server的web端创建proxy,再起proxy的服务
都操作完了,然后等待出现上传的行为或者下发配置的行为