zabbix 6.0 docker-compose 部署
zabbix6.0 已是新LTS版本。根据zabbix-docker上的trunk版本来搭建zabbix6.0。
根据踩坑,记录docker-compose 执行后遇到的一些问题。
zabbix 6.0 LTS已发布
本文中的镜像为当时为zabbix6.0预发布版本(trunk)。目前zabbix6.0LTS版本已发布。
请结合 官方镜像
部署
主机安装好docker、docker-compose。
文件包含:env_vars ,
密码6387
下载完成后解压到同一目录, 并执行docker-compose up -d
这时候可以看到各服务拉取镜像并启动。
docker-compose 文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
version: '3.5' services: m-server: container_name: m-server image: zabbix/zabbix-server-mysql:alpine-trunk restart: always ports: - "10051:10051" volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro env_file: - ./env_vars/.env_db_mysql - ./env_vars/.env_srv secrets: - MYSQL_USER - MYSQL_PASSWORD - MYSQL_ROOT_PASSWORD # - client-key.pem # - client-cert.pem # - root-ca.pem depends_on: - mysql-server networks: zbx_net_backend: aliases: - m-erver - m-server-mysql - m-server-alpine-mysql - m-server-mysql-alpine zbx_net_frontend: null # devices: # - "/dev/ttyUSB0:/dev/ttyUSB0" stop_grace_period: 30s sysctls: - net.ipv4.ip_local_port_range=1024 65000 - net.ipv4.conf.all.accept_redirects=0 - net.ipv4.conf.all.secure_redirects=0 - net.ipv4.conf.all.send_redirects=0 labels: com.zabbix.description: "Zabbix server with MySQL database support" com.zabbix.company: "Zabbix LLC" com.zabbix.component: "m-server" com.zabbix.dbtype: "mysql" com.zabbix.os: "alpine" m-web-nginx-mysql: container_name: m-web-nginx-mysql # image: zabbix/zabbix-web-nginx-mysql:alpine-trunk image: chenwl2016/m-web-nginx-mysql:v1-alpine-trunk ports: - "8082:8080" - "8443:8443" volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro env_file: - ./env_vars/.env_db_mysql - ./env_vars/.env_web secrets: - MYSQL_USER - MYSQL_PASSWORD # - client-key.pem # - client-cert.pem # - root-ca.pem depends_on: - mysql-server - m-server healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8080/" ] interval: 10s timeout: 5s retries: 3 start_period: 30s networks: zbx_net_backend: aliases: - m-web-nginx-mysql - m-web-nginx-alpine-mysql - m-web-nginx-mysql-alpine zbx_net_frontend: null stop_grace_period: 10s sysctls: - net.core.somaxconn=65535 labels: com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" com.zabbix.company: "Zabbix LLC" com.zabbix.component: "m-frontend" com.zabbix.webserver: "nginx" com.zabbix.dbtype: "mysql" com.zabbix.os: "alpine" m-agent: container_name: m-agent image: zabbix/zabbix-agent:alpine-trunk restart: always ports: - "10050:10050" volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro env_file: - ./env_vars/.env_agent privileged: true pid: "host" networks: zbx_net_backend: aliases: - zabbix-agent - zabbix-agent-passive - zabbix-agent-alpine stop_grace_period: 5s labels: com.zabbix.description: "Zabbix agent" com.zabbix.company: "Zabbix LLC" com.zabbix.component: "zabbix-agentd" com.zabbix.os: "alpine" mysql-server: container_name: mysql-server image: mysql:8.0 restart: always security_opt: - seccomp:unconfined ports: - "3316:3306" command: - mysqld - --character-set-client=utf8mb4 - --character-set-connection=utf8mb4 - --character-set-results=utf8mb4 - --character-set-server=utf8mb4 - --collation-server=utf8mb4_bin - --default-authentication-plugin=mysql_native_password # - --require-secure-transport # - --ssl-ca=/run/secrets/root-ca.pem # - --ssl-cert=/run/secrets/server-cert.pem # - --ssl-key=/run/secrets/server-key.pem volumes: - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw env_file: - ./env_vars/.env_db_mysql secrets: - MYSQL_USER - MYSQL_PASSWORD - MYSQL_ROOT_PASSWORD # - server-key.pem # - server-cert.pem # - root-ca.pem stop_grace_period: 1m networks: zbx_net_backend: aliases: - mysql-server - m-database - mysql-database db_data_mysql: image: busybox volumes: - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw networks: zbx_net_frontend: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.16.238.0/24 zbx_net_backend: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" internal: true ipam: driver: default config: - subnet: 172.16.239.0/24 secrets: MYSQL_USER: file: ./env_vars/.MYSQL_USER MYSQL_PASSWORD: file: ./env_vars/.MYSQL_PASSWORD MYSQL_ROOT_PASSWORD: file: ./env_vars/.MYSQL_ROOT_PASSWORD # client-key.pem: # file: ./env_vars/.ZBX_DB_KEY_FILE # client-cert.pem: # file: ./env_vars/.ZBX_DB_CERT_FILE # root-ca.pem: # file: ./env_vars/.ZBX_DB_CA_FILE # server-cert.pem: # file: ./env_vars/.DB_CERT_FILE # server-key.pem: # file: ./env_vars/.DB_KEY_FILE |
其中有基础更改,主要是使用的镜像非zabbix镜像。数据库考虑暴露3316端口(但是这里没有成功)
使用非官方容器的目的是遇到一些情况。
zabbix 图字体口口口
这个问题之前有写过,可以查看之前那篇《解决zabbix5字体中文口口乱码》。主要就是zabbix提供的字体DejaVuSans.ttf 不支持中文。通过无版权字体替换此字体。生成自己的镜像。
数据库字符集问题
在测试中,我发现我有一些item显示的中文是???,开始以为字体问题,经过多方查询,发现这个问题是字符集问题。 也就是数据库这块的配置。具体大家自行科普,我这里主要就是设置了mysql8中字符集的配置,默认改成utf8mb4。
在官方的mysql镜像中,可以配置两处字符集,但无法设置全面。导致中文出现???。
结束~
祝好。