Zabbix镜像准备
部署zabbix需要五个基础镜像,分别是:
- zabbix/zabbix-server-mysql 主要用来处理收集到的数据如何存储,报警等相关配置。
- zabbix/zabbix-web-nginx-mysql zxbbix前台
- zabbix/zabbix-java-gateway 主要用来代理zabbix-server的身份,从zabbix-agent处收集数据,并统一汇总给zabbix-server
- zabbix/zabbix-agent 主要安装在服务器上进行收集数据,然后发送给zabbix-proxy或者zabbix-server
- mysql 主要用来存放数据
启动mysql 服务
docker run -it -d -p 3306:3306 \
--network self_network --network-alias mysql --name zabbix-mysql \
-e MYSQL_ROOT_PASSWORD=root123 \
-v $pwd/conf:/etc/mysql \
-v $pwd/logs:/var/log/mysql \
-v $pwd/data:/var/lib/mysql \
-v $pwd/mysql-files:/var/lib/mysql-files \
mysql \
--character-set-server=utf8 --collation-server=utf8_unicode_ci
Mysql参数解释:
- character-set-server 设置character-set-server字符集
- collation-server 设置collation-server字符集
- MYSQL_ROOT_PASSWORD 设置mysql root用户默认密码
启动zabbix-java-gateway
docker run -dit \
-v /etc/localtime:/etc/localtime \
--restart=always \
--name=zabbix-java-gateway \
zabbix/zabbix-java-gateway
启动zabbix-server-mysql
docker run -dit \
-p 10051:10051 \
-v /etc/localtime:/etc/localtime \
-v /app/zibbax/server/alertscripts:/usr/lib/zabbix/alertscripts \
--name=zabbix-server-mysql \
--restart=always \
-e DB_SERVER_HOST="mysql_ip" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
zabbix/zabbix-server-mysql
zabbix-server参数解释:
- DB_SERVER_HOST #mysql 数据库地址
- MYSQL_DATABASE #Zabbix数据库,名字随便取,但是前后要关联
- MYSQL_USER #Zabbix用户,名字随便取,但是前后要关联
- MYSQL_PASSWORD #Zabbix密码,名字随便取,但是前后要关联
- MYSQL_ROOT_PASSWORD #root密码,名字随便取,但是前后要关联
启动zabbix-web-nginx-mysql
docker run -dit \
-p 8080:8080 \
-v /etc/localtime:/etc/localtime \
--name zabbix-web-nginx-mysql \
--restart=always \
-e DB_SERVER_HOST="mysql_ip" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
zabbix/zabbix-web-nginx-mysql
访问
启动成功后访问地址: http://ip:8080/zabbix
登录帐户密码在mysql zabbix库中users表中。 Admin/Zabbix
设置字符集
登录仪表盘后在左下角——>User settings ——> Languagr ——> Chinese(zh_CN) ——> update
监控端配置
在监控节点启动zabbix/zabbix-agent,收集节点信息发送给server
docker run --rm -d \
--name zabbix_agent \
-e ZBX_HOSTNAME="mythird" \
-e ZBX_SERVER_PORT="10051" \
-e ZBX_SERVER_HOST="10.1.19.170" \
-p 3998:10050 \
zabbix/zabbix-agent
- ZBX_HOSTNAME #节点名称
- ZBX_SERVER_PORT #zabbix 服务节点端口,参考zabbix-server-mysql -p参数,要一致
- ZBX_SERVER_HOST #zabbix 服务节点IP
附录
注意事项
很多帖子在创建mysql容器时直接携带参数:
- MYSQL_DATABASE=“zabbix”
- MYSQL_USER=“zabbix”
- MYSQL_PASSWORD=“zabbix123”
这导致在启动zabbix-server-mysql时,报 cannot use database “zabbix”: its “users” table is empty (is this the Zabbix proxy database?) 异常。
原因:
在zabbix-server-mysql 启动初期,已经准备好了创建数据库及用户表等相关配置文件,当在启动mysql携带那三个参数时,mysql会自己创建,导致与zabbix-server-mysql配置文件相关地字符集相关参数不一致报错。