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.0-latest
- последняя минорная версия Zabbix 4.0 компоненты на основе образа Alpine Linuxubuntu-4.0-latest
- последняя минорная версия Zabbix 4.0 компоненты на основе образа Ubuntualpine-4.0.*
- различные минорные версии Zabbix 4.0 компоненты на основе образа Alpine Linux, где *
- минорная версия Zabbix компонентыubuntu-4.0.*
- различные минорные версии Zabbix 4.0 компоненты на основе образа 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
Пример 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
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
Пример 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
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
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 также поставляет файлы наборов для определения и запуска нескольких контейнеров Zabbix компонент в Docker. Такие файлов наборов доступны в официальном репозитории Zabbix docker на github.com: https://github.com/zabbix/zabbix-docker. Они добавлены как примеры, эти файлы перегружены. Например, они содержат прокси с поддержкой MySQL и SQLite3.
Имеется несколько различных версий файлов наборов:
Имя файла | Описание |
docker-compose_v3_alpine_mysql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на Alpine Linux с поддержкой MySQL базы данных. |
docker-compose_v3_alpine_mysql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на Alpine Linux с поддержкой MySQL базы данных. |
docker-compose_v3_alpine_pgsql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на Alpine Linux с поддержкой PostgreSQL базы данных. |
docker-compose_v3_alpine_pgsql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на Alpine Linux с поддержкой PostgreSQL базы данных. |
docker-compose_v3_centos_mysql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на CentOS 7 с поддержкой MySQL базы данных. |
docker-compose_v3_centos_mysql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на CentOS 7 с поддержкой MySQL базы данных. |
docker-compose_v3_centos_pgsql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на CentOS 7 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_centos_pgsql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на CentOS 7 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_ubuntu_mysql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на Ubuntu 14.04 с поддержкой MySQL базы данных. |
docker-compose_v3_ubuntu_mysql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой MySQL базы данных. |
docker-compose_v3_ubuntu_pgsql_latest.yaml | Файл набора запускает последнюю версию компонент Zabbix 4.0 на Ubuntu 14.04 с поддержкой PostgreSQL базы данных. |
docker-compose_v3_ubuntu_pgsql_local.yaml | Файл набора собирает локально последнюю версию Zabbix 4.0 и запускает компоненты Zabbix на Ubuntu 14.04 с поддержкой PostgreSQL базы данных. |
Файлы наборов сконфигурированы для поддержки локального хранилища на хост машине. 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 4.0 для каждой Zabbix компоненты и затем запустит их в detach режиме.
.env_<тип компонента>
файлы с github.com официального репозитория Zabbix вместе с файлами наборов.
Пример 2
# docker-compose -f ./docker-compose_v3_ubuntu_mysql_local.yaml up -d
Эта команда загрузит базовый образ Ubuntu 14.04, затем соберет Zabbix 4.0 компоненты локально и запустит их в detach режиме.