docker部署zabbix_server

版权声明:本文为博主原创文章,未经博主允许不得转载。 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


猜你喜欢

转载自blog.csdn.net/u014113686/article/details/84880860