Zabbix предоставляет Docker образы для каждого компонента Zabbix как переносимые и самодостаточные контейнеры для ускорения развертывания и процедуры обновления.
Zabbix компоненты поставляются с поддержкой MySQL и PostgreSQL баз данных, поддержкой Apache2 и Nginx веб-серверов. Эти образы разделены на несколько различных образом.
Zabbix компоненты поставляются на основе Ubuntu, Alpine Linux и CentOS образов:
Все образы сконфигурированы таким образом, что будут пересозданы в случае, если базовые образы обновятся.
Каждый может следить за изменениями Docker файлов в официальном репозитории Zabbix на github.com. Вы можете сделать ответвления от проекта или создавать свои собственные образы на основе официальных Docker файлов.
Все компоненты Zabbix доступны в следующих Docker репозиториях:
Дополнительно имеется поддержка SNMP трапов. Она поставляется как отдельный репозиторий (zabbix/zabbix-snmptraps) основанный только на Ubuntu Trusty. Его можно связать с Zabbix сервером или Zabbix прокси.
Каждый репозиторий Zabbix компонент содержит следующие тэги:
latest
- последняя стабильная версия Zabbix компоненты на основе образа Alpine Linuxalpine-latest
- последняя стабильная версия Zabbix компоненты на основе образа Alpine Linuxubuntu-latest
- последняя стабильная версия Zabbix компоненты на основе образа Ubuntualpine-4.2-latest
- последняя минорная версия Zabbix 4.2 компоненты на основе образа Alpine Linuxubuntu-4.2-latest
- последняя минорная версия Zabbix 4.2 компоненты на основе образа Ubuntualpine-4.2.*
- различные минорные версии Zabbix 4.2 компоненты на основе образа Alpine Linux, где *
- минорная версия Zabbix компонентыubuntu-4.2.*
- различные минорные версии Zabbix 4.2 компоненты на основе образа 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 прокси. |
PHPTZ |
Веб-интерфейс | Часовой пояс в 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 \
--restart unless-stopped \
-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 \
--restart unless-stopped \
--character-set-server=utf8 --collation-server=utf8_bin
2. Запустите экземпляр Zabbix Java gateway
# docker run --name zabbix-java-gateway -t \
--restart unless-stopped \
-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 \
--restart unless-stopped \
-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 \
--restart unless-stopped \
-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" \
--restart unless-stopped \
-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 \
--restart unless-stopped \
-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 \
--restart unless-stopped \
-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 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-pgsql:latest
Экземпляр Zabbix веб-интерфейса раскрывает 443/TCP порт (HTTPS) на хост машину.
Папка /etc/ssl/nginx должна содержать сертификат с требуемым именем.
Zabbix также поставляет файлы наборов для определения и запуска нескольких контейнеров Zabbix компонент в Docker. Такие файлов наборов доступны в официальном репозитории Zabbix docker на github.com: https://github.com/zabbix/zabbix-docker. Они добавлены как примеры, эти файлы перегружены. Например, они содержат прокси с поддержкой MySQL и SQLite3.
Имеется несколько различных версий файлов наборов:
Имя файла | Описание |
docker-compose_v3_alpine_mysql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на Alpine Linux с поддержкой MySQL базы данных. |
docker-compose_v3_alpine_mysql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на Alpine Linux с поддержкой MySQL базы данных. |
docker-compose_v3_alpine_pgsql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на Alpine Linux с поддержкой PostgreSQL базы данных. |
docker-compose_v3_alpine_pgsql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на Alpine Linux с поддержкой PostgreSQL базы данных. |
docker-compose_v3_centos_mysql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на CentOS 7 с поддержкой MySQL базы данных. |
docker-compose_v3_centos_mysql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на CentOS 7 с поддержкой MySQL базы данных. |
docker-compose_v3_centos_pgsql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на CentOS 7 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_centos_pgsql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на CentOS 7 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_ubuntu_mysql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на Ubuntu 14.04 с поддержкой MySQL базы данных. |
docker-compose_v3_ubuntu_mysql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой MySQL базы данных. |
docker-compose_v3_ubuntu_pgsql_latest.yaml |
Файл набора запускает последнюю версию компонент Zabbix 4.2 на Ubuntu 14.04 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_ubuntu_pgsql_local.yaml |
Файл набора собирает локально последнюю версию Zabbix 4.2 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой PostgreSQL базы данных. |
Доступные файлы наборов Docker поддерживают как версию 2, так и версию 3 Docker Compose.
Файлы наборов сконфигурированы для поддержки локального хранилища на хост машине. Docker Compose создаст директорию zbx_env
в папке с файлом набора, когда вы запустите компоненты Zabbix с использованием файла набора. Директория будет содержать ту же структуру, что и описано выше в разделе Тома и директорию для хранения базы данных.
Также в файлах наборов имеются тома в режиме только чтения для /etc/localtime
и /etc/timezone
файлов.
В той же директории с файлами наборов на github.com вы можете найти файы с переменными окружения по умолчанию для какждой компоненты из файла наборов. Эти файлы окружения называются примерно так .env_<тип компоненты>
.
** Пример 1 **
Эта команда загрузит последние образы Zabbix 4.2 для каждой Zabbix компоненты и затем запустит их в detach режиме.
Не забудьте загрузить .env_<тип компонента>
файлы с github.com официального репозитория Zabbix вместе с файлами наборов.
** Пример 2 **
Эта команда загрузит базовый образ Ubuntu 14.04, затем соберет Zabbix 4.2 компоненты локально и запустит их в detach режиме.