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

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

Эти инструкции обновляют файлы Compose для Docker, используемые для развёртывания компонентов 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. Перейдите в ранее клонированный репозиторий Docker Zabbix, загрузите последние обновления и переключитесь на ветку 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