I'm running Zabbix in docker, and it's been running just fine for months.
Today I did an update of the docker containers from 6.0.3 to 6.2.3, and Zabbix is complaining that:
```
Database error
The zabbix server docker logs:
```
Starting Zabbix Server. Zabbix 6.2.3 (revision 98ee88f).
Press Ctrl+C to exit.
7:20220930:152839.276 Starting Zabbix Server. Zabbix 6.2.3 (revision 98ee88f).
7:20220930:152839.276 ****** Enabled features ******
7:20220930:152839.276 SNMP monitoring: YES
7:20220930:152839.277 IPMI monitoring: YES
7:20220930:152839.277 Web monitoring: YES
7:20220930:152839.277 VMware monitoring: YES
7:20220930:152839.277 SMTP authentication: YES
7:20220930:152839.278 ODBC: YES
7:20220930:152839.278 SSH support: YES
7:20220930:152839.278 IPv6 support: YES
7:20220930:152839.278 TLS support: YES
7:20220930:152839.278 ******************************
7:20220930:152839.278 using configuration file: /etc/zabbix/zabbix_server.conf
7:20220930:152839.583 current database version (mandatory/optional): 06010031/06010031
7:20220930:152839.584 required mandatory version: 06020000
7:20220930:152839.584 optional patches were found
7:20220930:152839.584 starting automatic database upgrade
7:20220930:152839.591 [Z3008] query failed due to primary key constraint: [0] PGRES_FATAL_ERROR:ERROR: could not create unique index "hstgrp_1"
DETAIL: Key (type, name)=(0, dev_cluster_workers) is duplicated.
7:20220930:152839.592 database upgrade failed
```
The postgres docker logs show:
```
2022-09-30 13:26:28.367 UTC [1068] STATEMENT: create unique index hstgrp_1 on hstgrp (type,name)
2022-09-30 13:27:34.021 UTC [1090] ERROR: could not create unique index "hstgrp_1"
2022-09-30 13:27:34.021 UTC [1090] DETAIL: Key (type, name)=(0, dev_cluster_workers) is duplicated.
2022-09-30 13:27:34.021 UTC [1090] STATEMENT: create unique index hstgrp_1 on hstgrp (type,name)
```
From the docker-compose.yml:
```
version: '3.5'
services:
zabbix_server:
image: zabbix/zabbix-server-pgsql:alpine-latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
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
- ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-cert.pem:/run/secrets/client-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-key.pem:/run/secrets/client-key.pem:ro
env_file:
- ./env_vars/.env_db_pgsql
- ./env_vars/.env_srv
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- postgres_server
networks:
zbx_net_backend:
aliases:
- zabbix_server
- zabbix-server
- zabbix-server-pgsql
- zabbix-server-alpine-pgsql
- zabbix-server-pgsql-alpine
zbx_net_frontend:
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
zabbix_web_nginx_pgsql:
restart: always
image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
ports:
- "80:8080"
- "443:8443"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
- /etc/ssl/private/cert.pem:/etc/ssl/nginx/ssl.crt:ro
- /etc/ssl/private/privkey.pem:/etc/ssl/nginx/ssl.key:ro
- /etc/ssl/private/dhparam.pem:/etc/ssl/nginx/dhparam.pem:ro
- ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-cert.pem:/run/secrets/client-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-key.pem:/run/secrets/client-key.pem:ro
privileged: yes
env_file:
- ./env_vars/.env_db_pgsql
- ./env_vars/.env_web
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- postgres_server
- zabbix_server
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks:
zbx_net_backend:
aliases:
- zabbix_web_nginx_pgsql
- zabbix-web-nginx-pgsql
- zabbix-web-nginx-alpine-pgsql
- zabbix-web-nginx-pgsql-alpine
zbx_net_frontend:
stop_grace_period: 10s
sysctls:
- net.core.somaxconn=65535
postgres_server:
restart: always
image: postgres:latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
volumes:
- ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_SERVER/server-cert.pem:/run/secrets/server-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_SERVER/server-key.pem:/run/secrets/server-key.pem:ro
env_file:
- ./env_vars/.env_db_pgsql
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
stop_grace_period: 1m
networks:
zbx_net_backend:
aliases:
- postgres_server
- postgres-server
- pgsql-server
- pgsql-database
db_data_pgsql:
image: busybox
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
volumes:
- ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data: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:
POSTGRES_USER:
file: ./env_vars/.POSTGRES_USER
POSTGRES_PASSWORD:
file: ./env_vars/.POSTGRES_PASSWORD
```
Help? Please?
Today I did an update of the docker containers from 6.0.3 to 6.2.3, and Zabbix is complaining that:
```
Database error
- The Zabbix database version does not match current requirements. Your database version: 6010031. Required version: 6020000. Please contact your system administrator
The zabbix server docker logs:
```
Starting Zabbix Server. Zabbix 6.2.3 (revision 98ee88f).
Press Ctrl+C to exit.
7:20220930:152839.276 Starting Zabbix Server. Zabbix 6.2.3 (revision 98ee88f).
7:20220930:152839.276 ****** Enabled features ******
7:20220930:152839.276 SNMP monitoring: YES
7:20220930:152839.277 IPMI monitoring: YES
7:20220930:152839.277 Web monitoring: YES
7:20220930:152839.277 VMware monitoring: YES
7:20220930:152839.277 SMTP authentication: YES
7:20220930:152839.278 ODBC: YES
7:20220930:152839.278 SSH support: YES
7:20220930:152839.278 IPv6 support: YES
7:20220930:152839.278 TLS support: YES
7:20220930:152839.278 ******************************
7:20220930:152839.278 using configuration file: /etc/zabbix/zabbix_server.conf
7:20220930:152839.583 current database version (mandatory/optional): 06010031/06010031
7:20220930:152839.584 required mandatory version: 06020000
7:20220930:152839.584 optional patches were found
7:20220930:152839.584 starting automatic database upgrade
7:20220930:152839.591 [Z3008] query failed due to primary key constraint: [0] PGRES_FATAL_ERROR:ERROR: could not create unique index "hstgrp_1"
DETAIL: Key (type, name)=(0, dev_cluster_workers) is duplicated.
7:20220930:152839.592 database upgrade failed
```
The postgres docker logs show:
```
2022-09-30 13:26:28.367 UTC [1068] STATEMENT: create unique index hstgrp_1 on hstgrp (type,name)
2022-09-30 13:27:34.021 UTC [1090] ERROR: could not create unique index "hstgrp_1"
2022-09-30 13:27:34.021 UTC [1090] DETAIL: Key (type, name)=(0, dev_cluster_workers) is duplicated.
2022-09-30 13:27:34.021 UTC [1090] STATEMENT: create unique index hstgrp_1 on hstgrp (type,name)
```
From the docker-compose.yml:
```
version: '3.5'
services:
zabbix_server:
image: zabbix/zabbix-server-pgsql:alpine-latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
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
- ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-cert.pem:/run/secrets/client-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-key.pem:/run/secrets/client-key.pem:ro
env_file:
- ./env_vars/.env_db_pgsql
- ./env_vars/.env_srv
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- postgres_server
networks:
zbx_net_backend:
aliases:
- zabbix_server
- zabbix-server
- zabbix-server-pgsql
- zabbix-server-alpine-pgsql
- zabbix-server-pgsql-alpine
zbx_net_frontend:
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
zabbix_web_nginx_pgsql:
restart: always
image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
ports:
- "80:8080"
- "443:8443"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
- /etc/ssl/private/cert.pem:/etc/ssl/nginx/ssl.crt:ro
- /etc/ssl/private/privkey.pem:/etc/ssl/nginx/ssl.key:ro
- /etc/ssl/private/dhparam.pem:/etc/ssl/nginx/dhparam.pem:ro
- ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-cert.pem:/run/secrets/client-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_CLIENT/client-key.pem:/run/secrets/client-key.pem:ro
privileged: yes
env_file:
- ./env_vars/.env_db_pgsql
- ./env_vars/.env_web
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
depends_on:
- postgres_server
- zabbix_server
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks:
zbx_net_backend:
aliases:
- zabbix_web_nginx_pgsql
- zabbix-web-nginx-pgsql
- zabbix-web-nginx-alpine-pgsql
- zabbix-web-nginx-pgsql-alpine
zbx_net_frontend:
stop_grace_period: 10s
sysctls:
- net.core.somaxconn=65535
postgres_server:
restart: always
image: postgres:latest
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
volumes:
- ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw
- /opt/zabbix/env_vars/.ZBX_CA/root-ca.pem:/run/secrets/root-ca.pem:ro
- /opt/zabbix/env_vars/.ZBX_SERVER/server-cert.pem:/run/secrets/server-cert.pem:ro
- /opt/zabbix/env_vars/.ZBX_SERVER/server-key.pem:/run/secrets/server-key.pem:ro
env_file:
- ./env_vars/.env_db_pgsql
secrets:
- POSTGRES_USER
- POSTGRES_PASSWORD
stop_grace_period: 1m
networks:
zbx_net_backend:
aliases:
- postgres_server
- postgres-server
- pgsql-server
- pgsql-database
db_data_pgsql:
image: busybox
deploy:
labels:
com.centurylinklabs.watchtower.enable: true
volumes:
- ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data: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:
POSTGRES_USER:
file: ./env_vars/.POSTGRES_USER
POSTGRES_PASSWORD:
file: ./env_vars/.POSTGRES_PASSWORD
```
Help? Please?