5 Установка из контейнеров

Docker

Zabbix предоставляет Docker образы для каждого компонента Zabbix как переносимые и самодостаточные контейнеры для ускорения развертывания и процедуры обновления.

Zabbix компоненты поставляются с поддержкой MySQL и PostgreSQL баз данных, поддержкой Apache2 и Nginx веб-серверов. Эти образы разделены на несколько различных образом.

Базовые образы Docker

Zabbix компоненты поставляются на основе Ubuntu, Alpine Linux и CentOS образов:

Образ Версия
alpine 3.9
ubuntu bionic
centos latest

Все образы сконфигурированы таким образом, что будут пересозданы в случае, если базовые образы обновятся.

Образы Zabbix готового решения основаны на Alpine Linux версии 3.4, все остальные образы основаны на Alpine Linux 3.9.

Исходные файлы Docker

Каждый может следить за изменениями Docker файлов в официальном репозитории Zabbix на github.com. Вы можете сделать ответвления от проекта или создавать свои собственные образы на основе официальных Docker файлов.

Структура

Все компоненты Zabbix доступны в следующих Docker репозиториях:

Дополнительно имеется поддержка SNMP трапов. Этот образ поставляется как отдельный репозиторий (zabbix/zabbix-snmptraps). Его можно связать с Zabbix сервером или Zabbix прокси.

Версии

Каждый репозиторий Zabbix компонент содержит следующие тэги:

  • latest - последняя стабильная версия Zabbix компоненты на основе образа Alpine Linux
  • alpine-latest - последняя стабильная версия Zabbix компоненты на основе образа Alpine Linux
  • ubuntu-latest - последняя стабильная версия Zabbix компоненты на основе образа Ubuntu
  • alpine-3.4-latest - последняя минорная версия Zabbix 3.4 компоненты на основе образа Alpine Linux
  • ubuntu-3.4-latest - последняя минорная версия Zabbix 3.4 компоненты на основе образа Ubuntu
  • alpine-3.4.* - различные минорные версии Zabbix 3.4 компоненты на основе образа Alpine Linux, где * - минорная версия Zabbix компоненты
  • ubuntu-3.4.* - различные минорные версии Zabbix 3.4 компоненты на основе образа Ubuntu, где * - минорная версия Zabbix компоненты

Использование

Переменные окружения

Все образы Zabbix компонент предусматривают наличие переменных окружения для управления конфигурацией. Эти переменные окружения перечислены в репозиториях каждого компонента. Переменные окружения являются опциями из файлов конфигурации Zabbix, но имеют немного другое наименование. Например, ZBX_LOGSLOWQUERIES идентичен LogSlowQueries из Zabbix сервера и Zabbix прокси файлов конфигурации.

Некоторые опции конфигурации не разрешены для изменения. Например, PIDFile и LogType.

Некоторые компоненты имеют специфичные переменные окружения, которые отсутствуют в официальных файлах конфигурации Zabbix:

Переменная Компоненты Описание
DB_SERVER_HOST Сервер
Прокси
Веб-интерфейс
Переменная является IP адресом или DNS именем MySQL или PostgreSQL сервера.
По умолчанию, значение mysql-server или postgres-server для MySQL или PostgreSQL соответственно
DB_SERVER_PORT Сервер
Прокси
Веб-интерфейс
Переменная является портом MySQL или PostgreSQL сервера.
По умолчанию, значение '3306' или '5432' соответственно.
MYSQL_USER Сервер
Proxy
Веб-интерфейс
Имя пользователя к базе данных MySQL.
По умолчанию, значение 'zabbix'.
MYSQL_PASSWORD Сервер
Прокси
Веб-интерфейс
Пароль к базе данных MySQL.
По умолчанию, значение 'zabbix'.
MYSQL_DATABASE Сервер
Прокси
Веб-интерфейс
Имя базы данных Zabbix.
По умолчанию, значение 'zabbix' для Zabbix сервера и 'zabbix_proxy' для Zabbix прокси.
POSTGRES_USER Сервер
Веб-интерфейс
Имя пользователя к базе данных PostgreSQL.
По умолчанию, значение 'zabbix'.
POSTGRES_PASSWORD Сервер
Веб-интерфейс
Пароль к базе данных PostgreSQL.
По умолчанию, значение 'zabbix'.
POSTGRES_DB Сервер
Веб-интерфейс
Имя базы данных Zabbix.
По умолчанию, значение 'zabbix' для Zabbix сервера и 'zabbix_proxy' для Zabbix прокси.
PHP_TZ Веб-интерфейс Часовой пояс в PHP формате. Полный список поддерживаемых часовых поясов доступен на php.net.
По умолчанию, значение 'Europe/Riga'.
ZBX_SERVER_NAME Веб-интерфейс Видимое имя Zabbix инсталляции в верхнем правом углу веб-интерфейса.
По умолчанию, значение 'Zabbix Docker'
ZBX_JAVAGATEWAY_ENABLE Сервер
Прокси
Включение взаимодействия с Zabbix Java gateway для сбора проверок связанных с Java.
По умолчанию, значение "false"
ZBX_ENABLE_SNMP_TRAPS Сервер
Прокси
Включение функции SNMP трапов. Эта переменная требует zabbix-snmptraps экземпляр и разделяемый том /var/lib/zabbix/snmptraps с Zabbix сервером или Zabbix прокси.
Тома

Образы позволяют использовать некоторые точки монтирования. Такие точки монтирования различны и зависят от типа Zabbix компонента:

Том Описание
Zabbix агент
/etc/zabbix/zabbix_agentd.d Том позволяет включать *.conf файлы и расширять Zabbix агент используя функционал UserParameter
/var/lib/zabbix/modules Том позволяет загружать дополнительные модули и расширять Zabbix агент используя функционал LoadModule
/var/lib/zabbix/enc Том используется для хранения файлов связанных с TLS функционалом. Эти имена файлов указываются при помощи переменных окружения ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE
Zabbix сервер
/usr/lib/zabbix/alertscripts Том используется для пользовательских скриптов оповещения. Том является параметром AlertScriptsPath в zabbix_server.conf
/usr/lib/zabbix/externalscripts Том используется для внешних проверок. Том является параметром ExternalScripts в zabbix_server.conf
/var/lib/zabbix/modules Том позволяет загружать дополнительные модули и расширять Zabbix сервер используя функционал LoadModule
/var/lib/zabbix/enc Том используется для хранения файлов связанных с TLS функционалом. Эти имена файлов указываются при помощи переменных окружения ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE
/var/lib/zabbix/ssl/certs Том используется для размещения файлов клиентских SSL сертификатов для аутентификации клиентов. Этот том является аналогом параметра SSLCertLocation в zabbix_server.conf
/var/lib/zabbix/ssl/keys Том используется для размещения файлов приватных SSL ключей для аутентификации клиентов. Этот том является аналогом параметра SSLKeyLocation в zabbix_server.conf
/var/lib/zabbix/ssl/ssl_ca Том используется для размещения файлов центра сертификации (CA) для верификации SSL сертификатов сервера. Этот том является аналогом параметра SSLCALocation в zabbix_server.conf
/var/lib/zabbix/snmptraps Том используется как размещение snmptraps.log файла. Этот том может быть использован совместо с zabbix-snmptraps контейнером и унаследован из volumes_from опции Docker при создании нового экземпляра Zabbix сервера. Функцию обработки SNMP трапов можно включить использовав совместный том и переключив ZBX_ENABLE_SNMP_TRAPS переменную окружения в 'true'
/var/lib/zabbix/mibs Том позволяет добавлять новые MIB файлы. Функция не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs
Zabbix прокси
/usr/lib/zabbix/externalscripts Том используется для внешних проверок. Том является параметром ExternalScripts в zabbix_proxy.conf
/var/lib/zabbix/modules Том позволяет загружать дополнительные модули и расширять Zabbix прокси используя функционал LoadModule
/var/lib/zabbix/enc Том используется для хранения файлов связанных с TLS функционалом. Эти имена файлов указываются при помощи переменных окружения ZBX_TLSCAFILE, ZBX_TLSCRLFILE, ZBX_TLSKEY_FILE и ZBX_TLSPSKFILE
/var/lib/zabbix/ssl/certs Том используется для размещения файлов клиентских SSL сертификатов для аутентификации клиентов. Этот том является аналогом параметра SSLCertLocation в zabbix_proxy.conf
/var/lib/zabbix/ssl/keys Том используется для размещения файлов клиентских SSL сертификатов для аутентификации клиентов. Этот том является аналогом параметра SSLCertLocation в zabbix_proxy.conf
/var/lib/zabbix/ssl/ssl_ca Том используется для размещения файлов центра сертификации (CA) для верификации SSL сертификатов сервера. Этот том является аналогом параметра SSLCALocation в zabbix_proxy.conf
/var/lib/zabbix/snmptraps Том используется как размещение snmptraps.log файла. Этот том может быть использован совместо с zabbix-snmptraps контейнером и унаследован из volumes_from опции Docker при создании нового экземпляра Zabbix прокси. Функцию обработки SNMP трапов можно включить использовав совместный том и переключив ZBX_ENABLE_SNMP_TRAPS переменную окружения в 'true'
/var/lib/zabbix/mibs Том позволяет добавлять новые MIB файлы. Функция не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs
Zabbix веб-интерфейс на основе Apache2 веб-сервера
/etc/ssl/apache2 Том позволяет активировать HTTPS для Zabbix веб-интерфейса. Этот том должен содержать два файла ssl.crt и ssl.key, подготовленные для Apache2 SSL соединений
Zabbix веб-интерфейс на основе Nginx веб-сервера
/etc/ssl/nginx Том позволяет активировать HTTPS для Zabbix веб-интерфейса. Этот том должен содержать три файла ssl.crt, ssl.key и dhparam.pem подготовленные для Nginx SSL соединений
Zabbix snmptraps
/var/lib/zabbix/snmptraps Том содержит файл журнала с именем snmptraps.log с полученными SNMP трапами
/var/lib/zabbix/mibs Том позволяет добавлять новые MIB файлы. Функция не поддерживает подпапки, все MIB файлы должны быть помещены в /var/lib/zabbix/mibs

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

Примеры использования

** Пример 1 **

Этот пример демонстрирует как запустить готовое решение Zabbix со встроенными MySQL базой данных, Zabbix сервером, Zabbix веб-интерфейсов на основе Nginx веб-сервера и Zabbix Java gateway.

# docker run --name zabbix-appliance -t \
             -p 10051:10051 \
             -p 80:80 \
             -d zabbix/zabbix-appliance:latest

Экземпляр готового решения Zabbix раскрывает 10051/TCP порт (Zabbix траппера) и 80/TCP порт (HTTP) на хост машину.

** Пример 2 **

Этот пример демонстрирует как запустить Zabbix сервер с поддержкой MySQL базы данных, Zabbix веб-интерфейсом на основе Nginx веб-сервера и Zabbix Java gateway.

1. Запустите пустой экземпляр MySQL сервера

# docker run --name mysql-server -t \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             -d mysql:5.7 \
             --character-set-server=utf8 --collation-server=utf8_bin

2. Запустите экземпляр Zabbix Java gateway

# docker run --name zabbix-java-gateway -t \
             -d zabbix/zabbix-java-gateway:latest

3. Запустите экземпляр Zabbix сервера и соедините этот экземпляр с недавно созданным экземпляром MySQL сервера

# docker run --name zabbix-server-mysql -t \
             -e DB_SERVER_HOST="mysql-server" \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
             --link mysql-server:mysql \
             --link zabbix-java-gateway:zabbix-java-gateway \
             -p 10051:10051 \
             -d zabbix/zabbix-server-mysql:latest

Экземпляр Zabbix сервера раскрывает 10051/TCP порт (Zabbix траппера) на хост машину.

4. Запустите Zabbix веб-интерфейс и соедините этот экземпляр с недавно созданными экземплярами MySQL сервера и Zabbix сервера

# docker run --name zabbix-web-nginx-mysql -t \
             -e DB_SERVER_HOST="mysql-server" \
             -e MYSQL_DATABASE="zabbix" \
             -e MYSQL_USER="zabbix" \
             -e MYSQL_PASSWORD="zabbix_pwd" \
             -e MYSQL_ROOT_PASSWORD="root_pwd" \
             --link mysql-server:mysql \
             --link zabbix-server-mysql:zabbix-server \
             -p 80:80 \
             -d zabbix/zabbix-web-nginx-mysql:latest

Экземпляр Zabbix веб-интерфейс раскрывает 80/TCP порт (HTTP) на хост машину.

** Пример 3 **

Этот пример демонстрирует как запустить Zabbix сервер с поддержкой PostgreSQL базы данных, Zabbix веб-интерфейсом на основе Nginx веб-сервера и с функцией приёма SNMP трапов.

1. Запустите пустой экземпляр PostgreSQL сервера

# docker run --name postgres-server -t \
             -e POSTGRES_USER="zabbix" \
             -e POSTGRES_PASSWORD="zabbix" \
             -e POSTGRES_DB="zabbix_pwd" \
             -d postgres:latest

2. Запустите экземпляр Zabbix snmptraps

# docker run --name zabbix-snmptraps -t \
             -v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
             -v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
             -p 162:162/udp \
             -d zabbix/zabbix-snmptraps:latest

Экземпляр Zabbix snmptraps раскрывает 162/UDP порт (SNMP трапы) на хост машину.

3. Запустите экземпляр Zabbix сервера и соедините этот экземпляр с недавно созданным экземпляром PostgreSQL сервера

# docker run --name zabbix-server-pgsql -t \
             -e DB_SERVER_HOST="postgres-server" \
             -e POSTGRES_USER="zabbix" \
             -e POSTGRES_PASSWORD="zabbix" \
             -e POSTGRES_DB="zabbix_pwd" \
             -e ZBX_ENABLE_SNMP_TRAPS="true" \
             --link postgres-server:postgres \
             -p 10051:10051 \
             --volumes-from zabbix-snmptraps \
             -d zabbix/zabbix-server-pgsql:latest

Экземпляр Zabbix сервера раскрывает 10051/TCP порт (Zabbix траппера) на хост машину.

4. Запустите Zabbix веб-интерфейс и соедините этот экземпляр с недавно созданными экземплярами PostgreSQL сервера и Zabbix сервера

# docker run --name zabbix-web-nginx-pgsql -t \
             -e DB_SERVER_HOST="postgres-server" \
             -e POSTGRES_USER="zabbix" \
             -e POSTGRES_PASSWORD="zabbix" \
             -e POSTGRES_DB="zabbix_pwd" \
             --link postgres-server:postgres \
             --link zabbix-server-pgsql:zabbix-server \
             -p 443:443 \
             -v /etc/ssl/nginx:/etc/ssl/nginx:ro \
             -d zabbix/zabbix-web-nginx-pgsql:latest

Экземпляр Zabbix веб-интерфейса раскрывает 443/TCP порт (HTTPS) на хост машину.
Папка /etc/ssl/nginx должна содержать сертификат с требуемым именем.

Docker Compose

Zabbix также поставляет файлы наборов для определения и запуска нескольких контейнеров Zabbix компонент в Docker. Такие файлов наборов доступны в официальном репозитории Zabbix docker на github.com: https://github.com/zabbix/zabbix-docker. Они добавлены как примеры, эти файлы перегружены. Например, они содержат прокси с поддержкой MySQL и SQLite3.

Имеется несколько различных версий файлов наборов:

Имя файла Описание
docker-compose_v3_alpine_mysql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на Alpine Linux с поддержкой MySQL базы данных.
docker-compose_v3_alpine_mysql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на Alpine Linux с поддержкой MySQL базы данных.
docker-compose_v3_alpine_pgsql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на Alpine Linux с поддержкой PostgreSQL базы данных.
docker-compose_v3_alpine_pgsql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на Alpine Linux с поддержкой PostgreSQL базы данных.
docker-compose_v3_centos_mysql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на CentOS 7 с поддержкой MySQL базы данных.
docker-compose_v3_centos_mysql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на CentOS 7 с поддержкой MySQL базы данных.
docker-compose_v3_centos_pgsql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на CentOS 7 с поддержкой PostgreSQL базы данных.
docker-compose_v3_centos_pgsql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на CentOS 7 с поддержкой PostgreSQL базы данных.
docker-compose_v3_ubuntu_mysql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на Ubuntu 14.04 с поддержкой MySQL базы данных.
docker-compose_v3_ubuntu_mysql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой MySQL базы данных.
docker-compose_v3_ubuntu_pgsql_latest.yaml Файл набора запускает последнюю версию компонент Zabbix 3.4 на Ubuntu 14.04 с поддержкой PostgreSQL базы данных.
docker-compose_v3_ubuntu_pgsql_local.yaml Файл набора собирает локально последнюю версию Zabbix 3.4 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой PostgreSQL базы данных.

Доступные файлы наборов Docker поддерживают как версию 2, так и версию 3 Docker Compose.

Хранилище

Файлы наборов сконфигурированы для поддержки локального хранилища на хост машине. Docker Compose создаст директорию zbx_env в папке с файлом набора, когда вы запустите компоненты Zabbix с использованием файла набора. Директория будет содержать ту же структуру, что и описано выше в разделе Тома и директорию для хранения базы данных.

Также в файлах наборов имеются тома в режиме только чтения для /etc/localtime и /etc/timezone файлов.

Файлы окружения

В той же директории с файлами наборов на github.com вы можете найти файы с переменными окружения по умолчанию для какждой компоненты из файла наборов. Эти файлы окружения называются примерно так .env_<тип компоненты>.

Примеры

** Пример 1 **

# docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Эта команда загрузит последние образы Zabbix 3.4 для каждой Zabbix компоненты и затем запустит их в detach режиме.

Не забудьте загрузить .env_<тип компонента> файлы с github.com официального репозитория Zabbix вместе с файлами наборов.

** Пример 2 **

# docker-compose -f ./docker-compose_v3_ubuntu_mysql_local.yaml up -d

Эта команда загрузит базовый образ Ubuntu 14.04, затем соберет Zabbix 3.4 компоненты локально и запустит их в detach режиме.