以docker-compose 启动zabbix 4.0

从zabbix 官方gitlab仓库下载的 zabbix-docker-4.0.38.ziphttp://zabbix-docker-4.0.38.zip/

按照官方的文档 5 Installation from containers 使用docker-compose 启动时,不能成功.

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d
amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml ps
                   Name                                  Command                   State                                   Ports                           
-----------------------------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker-4038_db_data_pgsql_1            sh                               Exit 0                                                                      
zabbix-docker-4038_postgres-server_1          docker-entrypoint.sh postgres    Up                                                                          
zabbix-docker-4038_zabbix-server_1            /sbin/tini -- /usr/bin/doc ...   Up               0.0.0.0:10051->10051/tcp,:::10051->10051/tcp               
zabbix-docker-4038_zabbix-web-nginx-pgsql_1   docker-entrypoint.sh             Up (unhealthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp,                      
                                                                                                0.0.0.0:443->8443/tcp,:::443->8443/tcp    

查询zabbix-docker-4038_postgres-server_1的日志得到

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker logs -f zabbix-docker-4038_postgres-server_1

PostgreSQL Database directory appears to contain a database; Skipping initialization

2022-03-08 11:49:04.018 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-03-08 11:49:04.018 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-03-08 11:49:04.035 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-03-08 11:49:04.136 UTC [24] LOG:  database system was shut down at 2022-03-08 11:48:57 UTC
2022-03-08 11:49:04.156 UTC [1] LOG:  database system is ready to accept connections
2022-03-08 11:49:05.678 UTC [65] FATAL:  role "--dbname" does not exist
2022-03-08 11:49:10.687 UTC [70] FATAL:  role "--dbname" does not exist

角色 --dbname 不存在 ,其实这个是 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 发送请求时 缺少 参数 造成的

进入 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 容器,找到入口脚本.

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker exec -it zabbix-docker-4038_zabbix-web-nginx-pgsql_1 bash
bash-5.0$ find / -name docker-en*
find: /var/log/apache2: Permission denied
/usr/bin/docker-entrypoint.sh
find: /root: Permission denied
find: /proc/tty/driver: Permission denied
bash-5.0$

在 脚本/usr/bin/docker-entrypoint.sh 的 101行左右 找到 --dbname,由此得知,是因为没有配置环境变量 ${DB_SERVER_ROOT_USER} 造成的

    while [ ! "$(psql --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} --username ${DB_SERVER_ROOT_USER} --dbname ${DB_SERVER_DBNAME} --list --quiet 2>/de
        echo "**** PostgreSQL server is not available. Waiting $WAIT_TIMEOUT seconds..."
        sleep $WAIT_TIMEOUT 
    done

所以只需要给 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 添加 上 环境变量 DB_SERVER_ROOT_USER 即可解决

给 env_vars/.env_db_pgsql 添加一行

DB_SERVER_ROOT_USER=zabbix

最终该文件内容如下:

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ cat env_vars/.env_db_pgsql 
# DB_SERVER_HOST=postgres-server
# DB_SERVER_PORT=5432
DB_SERVER_ROOT_USER=zabbix
# POSTGRES_USER=zabbix
POSTGRES_USER_FILE=/run/secrets/POSTGRES_USER
# POSTGRES_PASSWORD=zabbix
POSTGRES_PASSWORD_FILE=/run/secrets/POSTGRES_PASSWORD
# POSTGRES_DB=zabbix
POSTGRES_DB=zabbix
# DB_SERVER_SCHEMA=public
# POSTGRES_USE_IMPLICIT_SEARCH_PATH=false
amax@ubuntu18-dev:~/zabbix-docker-4.0.38$

再次执行 以下命令

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d

发现可以正常启动zabbix

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml ps
                   Name                                  Command                  State                                   Ports                            
-----------------------------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker-4038_db_data_pgsql_1            sh                               Exit 0                                                                      
zabbix-docker-4038_postgres-server_1          docker-entrypoint.sh postgres    Up                                                                          
zabbix-docker-4038_zabbix-server_1            /sbin/tini -- /usr/bin/doc ...   Up             0.0.0.0:10051->10051/tcp,:::10051->10051/tcp                 
zabbix-docker-4038_zabbix-web-nginx-pgsql_1   docker-entrypoint.sh             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp,                        
                                                                                              0.0.0.0:443->8443/tcp,:::443->8443/tcp

但是默认的zabbix图表中无法显示中文,需要挂载中文字体到容器中

我用的是微软雅黑字体 

msyh.ttficon-default.png?t=M276https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf下载后重命名为 DejaVuSans.ttf ,存放在 env_vars 目录下

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ ls env_vars/
DejaVuSans.ttf

接着修改docker-compose_v3_alpine_pgsql_latest.yaml 30行左右, 在volumes 添加一行:

   - ./env_vars/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro

添加后的部分结果如下:

 zabbix-web-nginx-pgsql:
  image: zabbix/zabbix-web-nginx-pgsql:alpine-4.0-latest
  ports:
   - "2080:8080"
   - "20443:8443"
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - /etc/timezone:/etc/timezone:ro
   - ./env_vars/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro
   - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro

然后重新运行

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d

即可实现中文显示图表

### Windows 上通过 Docker Compose 部署 Zabbix 监控系统的指南 #### 准备工作 为了在 Windows 上成功部署 Zabbix,需先完成以下准备工作: 确保已安装适用于 Windows 的 Docker Desktop 并开启 WSL 2 支持。这一步骤对于后续操作至关重要[^1]。 #### 安装 Docker Compose 尽管 Docker Desktop 已集成 Docker Compose 功能,在某些情况下仍可能需要单独更新至最新版本。可以通过 PowerShell 执行如下命令来获取并配置 `docker-compose` 文件: ```powershell Invoke-WebRequest "https://github.com/docker/compose/releases/latest/download/docker-compose-Windows-x86_64.exe" -OutFile $Env:ProgramFiles\Docker\docker-compose.exe ``` 赋予执行权限给新下载的可执行文件,并验证其是否可以正常运行: ```powershell Set-Alias docker-compose "$Env:ProgramFiles\Docker\docker-compose.exe" docker-compose --version ``` #### 下载与准备 Zabbix 资源 创建一个新的工作目录用于存放所有必要的配置文件和数据卷。进入该路径后克隆官方 GitHub 仓库中的 Zabbix Docker 映像资源: ```bash mkdir C:\zabbix && cd $_ git clone https://github.com/zabbix/zabbix-docker.git . cd .\zabbix-docker\ ``` #### 编辑 docker-compose.yml 文件 根据实际需求编辑或新建一个名为 `docker-compose.override.yml` 的 YAML 文件以覆盖默认设置。这里给出一个简单的例子作为参考: ```yaml version: '3' services: db: image: postgres:14-alpine restart: always environment: POSTGRES_DB: zabbix POSTGRES_USER: zabbix POSTGRES_PASSWORD: secret_password volumes: - pgdata:/var/lib/postgresql/data web: depends_on: - db image: zabbix/zabbix-web-nginx-pgsql:alpine-ubuntu-latest restart: always environment: DB_SERVER_HOST: "db" POSTGRESQL_DATABASE: "zabbix" POSTGRESQL_USER: "zabbix" POSTGRESQL_PASSWORD: "secret_password" PHP_TZ: UTC ports: - "8080:8080" volumes: pgdata: ``` 上述配置指定了 PostgreSQL 数据库服务及其连接参数,同时设置了 Web 前端监听本地主机上的特定端口[^2]。 #### 启动容器集群 保存更改后的配置文件并通过下面这条指令启动整个环境: ```powershell docker-compose up -d ``` 等待片刻直到所有指定的服务都处于健康状态即可访问浏览器输入 http://localhost:8080 来初始化 Zabbix 应用程序[^3]。 #### 测试与验证 打开网页浏览器导航到刚才设定好的 URL 地址 (http://localhost:8080),按照提示完成初始向导流程,包括数据库连接测试、管理员账户创建等步骤。完成后即表示已经成功搭建起一套完整的 Zabbix 监测平台实例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值