版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014113686/article/details/84880860
最近尝试了使用docker部署zabbix_server, zabbix_proxy, zabbix_web, zabbix_agent。发现网上相关信息不多,因此记录一下实验心得。
zabbix_server和zabbix_web部署
[root@container1 zabbix_server]# cat docker-compose.yml
version: "3"
services:
#zabbix web nginx
zabbix_web:
image: zabbix/zabbix-web-nginx-mysql:alpine-3.0-latest
container_name: zabbix_web
environment:
DB_SERVER_HOST: zabbix_mysql
PHP_TZ: Asia/Shanghai
env_file:
- ./etc/env_mysql
links:
- mysql:mysql
- zabbix_server:zabbix-server
volumes:
- /etc/localtime:/etc/localtime:ro
- ./etc/fonts:/usr/share/zabbix/fonts
ports:
- 9090:80
restart: always
networks:
- zabbix
#zabbix server
zabbix_server:
#image: zabbix/zabbix-server-mysql:alpine-3.0-latest
image: zabbix_server-mysql:20181204
container_name: zabbix_server
environment:
DB_SERVER_HOST: zabbix_mysql
env_file:
- ./etc/env_mysql
volumes:
- /etc/localtime:/etc/localtime:ro
- ./etc/script:/data/zabbix/script
- ./logs/zabbix_server.log:/tmp/zabbix_server.log
links:
- mysql:mysql
ports:
- 3051:10051
restart: always
networks:
- zabbix
#数据库
mysql:
image: mysql:5.7
container_name: zabbix_mysql
environment:
LANG: C.UTF-8
TZ: Asia/Shanghai
env_file:
- ./etc/env_mysql
volumes:
- ./data:/var/lib/mysql
restart: always
networks:
- zabbix
networks:
zabbix:
external: true
docker-compose.yml中各个定义的含义:
docker-compose里面各个含义
zabbix_web:
#设置web时区
PHP_TZ: Asia/Shanghai
设置web容器时区和本机相同
- /etc/localtime:/etc/localtime:ro
#因为在zabbix_server部署时,zabbix_web, zabbix_server和mysql多次使用到相同的mysql环境变量,
#因此将这些环境变量写到一个文件中,通过加载文件的方式读取,注意不能有空格
env_file:
- ./etc/env_mysql
[root@container1 zabbix_server]# cat etc/env_mysql
MYSQL_DATABASE=zabbix
MYSQL_USER=zabbix
MYSQL_PASSWORD=123456
MYSQL_ROOT_PASSWORD=123456
#zabbix中link时格式为:servicename:name of zabbix
links:
- mysql:mysql
- zabbix_server:zabbix-server
volumes:
#解决web的中文显示乱码问题
- ./etc/fonts:/usr/share/zabbix/fonts
#从电脑中拷贝一份中文字体,然后重命名为graphfont.ttf,因为
#zabbix_web中默认加载字体为graphfont.ttf,注意就不用特意设置环境变量了
[root@container1 zabbix_server]# ll etc/fonts/
总用量 22000
-rw-r--r-- 1 498 498 756072 7月 22 2016 DejaVuSans.ttf
-rw-r--r-- 1 root root 21767952 8月 8 2016 graphfont.ttf
注意:实验过程中,发现centos镜像的zabbix_web无法支持中文界面
zabbix_server:
image: zabbix_server-mysql:20181204
#因为使用的是自定义的python脚本进行报警,zabbix/zabbix-server-mysql:alpine-3.0-latest默认不安装python,因此在此镜像的基础上安装了python
[root@container1 zabbix_server]# cat Dockerfile
FROM zabbix/zabbix-server-mysql:alpine-3.0-latest
RUN apk add --clean-protected --no-cache python && \
ln -s /usr/bin/python /usr/local/bin/python
镜像自制:docker build -t zabbix_server-mysql:20181204 .
#注意:尽量找一个空目录进行镜像的制作,因为镜像制作过程中,是先将当前目录的所有内容加载到docker进程里面
#目的:挂载自定义的python报警脚本
- ./etc/script:/data/zabbix/script
#一定要先定义logs目录下的zabbix_server.log文件,因为如果本地不存在该名称的文件/目录时,容器默认创建该名称的目录。同时设置权限为666,否则容器无法将日志写入
- ./logs/zabbix_server.log:/tmp/zabbix_server.log