3. Обновление из контейнеров

Обзор

В этом разделе описываются шаги, необходимые для успешного обновления контейнеров до Zabbix 7.0.x.

Доступны отдельные наборы инструкций для:

Перед обновлением обязательно прочтите соответствующие заметки об обновлении!

Перед началом обновления убедитесь, что у пользователей есть необходимые для обновления права доступа к базе данных.

Для обновлений с Zabbix 6.0 или более ранних версий во время обновления необходимо будет создать детерминированные триггеры. Если для MySQL/MariaDB включено ведение бинарного журнала, для этого требуются права суперпользователя или настройка переменной / параметра конфигурации log_bin_trust_function_creators = 1. Инструкции по установке переменной см. в Скриптах создания базы данных.

Обратите внимание, что при запуске из консоли переменная будет установлена только временно и будет удалена при перезапуске Docker. В этом случае оставьте службу SQL запущенной, остановите только службу zabbix-server, выполнив docker compose down zabbix-server, а затем docker compose up -d zabbix-server.

В качестве альтернативы вы можете установить эту переменную в файле конфигурации.

В зависимости от размера базы данных её обновление до версии 7.0 может занять продолжительное время.

Обновление образов компонентов Zabbix

Эти инструкции обновляют ваши образы Docker, используемые в качестве основы для контейнеров компонентов Zabbix.

Шаги ниже используют в качестве примера Zabbix прокси. Замените zabbix-proxy-sqlite3 на имя контейнера вашего компонента.

1. Проверьте все контейнеры, чтобы идентифицировать их имена и текущие версии образов:

docker ps -a

# CONTAINER ID   IMAGE                                           (...) NAMES
# 5a0c2e3d02b4   zabbix/zabbix-proxy-sqlite3:alpine-6.4-latest   (...) zabbix-proxy-sqlite3

2. Получите новую версию образа:

docker pull zabbix/zabbix-proxy-sqlite3:alpine-7.0-latest

3. Остановите контейнер компонента Zabbix:

docker stop zabbix-proxy-sqlite3

4. Удалите контейнер компонента Zabbix:

Перед продолжением убедитесь, что вы записали все конфигурационные флаги и точки монтирования томов, использованные в исходной команде docker run, поскольку они понадобятся для пересоздания контейнера.

docker rm zabbix-proxy-sqlite3

5. Запустите обновлённый контейнер, используя обновлённый образ:

docker run --name zabbix-proxy-sqlite3 \
  -e ZBX_SERVER_HOST=192.0.2.1 \
  -e ZBX_PROXYMODE=0 \
  -e ZBX_HOSTNAME=zabbix-proxy-sqlite3 \
  -v zabbix-proxy-data:/var/lib/zabbix/db_data \
  --init \
  -d \
  zabbix/zabbix-proxy-sqlite3:alpine-7.0-latest

Для получения дополнительной информации о запуске контейнеров Zabbix смотрите Docker (ручное развёртывание).

6. Убедитесь в успешности обновления, проверив журналы контейнера:

docker logs -f zabbix-proxy-sqlite3

Обновление файла Docker Compose

Эти инструкции предназначены для обновления файлов Docker Compose, используемых для развертывания компонентов Zabbix. Следуйте этим инструкциям, если вы установили Zabbix с помощью Docker Compose.

1. Проверьте все контейнеры, чтобы определить их имена и текущие версии образов:

docker ps -a

# CONTAINER ID   IMAGE                                             (...) NAMES
# d095f486deef   zabbix/zabbix-server-mysql:alpine-6.4-latest      (...) zabbix-docker-zabbix-server-1
# 70627d833da0   zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest   (...) zabbix-docker-zabbix-web-nginx-mysql-1
# aaaa664cc185   zabbix/zabbix-server-mysql:alpine-6.4-latest      (...) zabbix-docker-server-db-init-1
# 9ab3e77492ff   mysql:8.0-oracle                                  (...) zabbix-docker-mysql-server-1

2. Перейдите в ранее клонированный репозиторий Zabbix Docker, получите последние обновления и переключитесь на ветку 7.0:

Если вы изменяли .env, compose.yaml или другие файлы в локальном репозитории, команда git pull может перезаписать их. Создайте резервную копию всех локальных изменений перед выполнением этого шага.

cd zabbix-docker
git pull
git checkout 7.0

3. Разверните компоненты Zabbix с использованием обновленного файла Docker Compose:

# С MySQL в качестве базы данных:
docker compose -f ./compose.yaml up -d

# С PostgreSQL в качестве базы данных:
docker compose -f ./compose_pgsql.yaml up -d

После того как все контейнеры будут пересозданы и запущены, возобновление сбора данных может занять 1–3 минуты. Дополнительную информацию о запуске контейнеров Zabbix см. в разделе Docker Compose.

4. Убедитесь, что обновление прошло успешно, проверив журналы контейнера (замените zabbix-docker-zabbix-server-1 на имя контейнера вашего компонента):

docker logs -f zabbix-docker-zabbix-server-1