Внимание! Материал устарел и не рекомендуется к использованию.
Пост описывает процедуру установки Zabbix из контейнеров Docker. В качестве базы данных используется MySQL 8.0. Представленную конфигурацию можно развернуть практически на любом сервере, что позволит без труда выполнить тестирование или отладку какого-либо функционала.
1. Установка Zabbix в Docker
Хост-машина: Ubuntu 18.04
Особенности: установка с чистого листа
1.1 Установка Docker на чистой VM с Ubuntu 18.04
// Выполняем обновление системы до актуальной версии
# apt update
# apt upgrade
// Устанавливаем пакеты, чтобы apt имела возможность использовать репозитории через HTTPS:
# apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
// Получаем и устанавливаем официальный GPG-ключ Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
// Проверяем, что отпечаток ключа имеет вид:
«9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88»
root@ubuntu-2gb-nbg1-1:~# sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
// Подключаем stable-репозиторий Docker:
# add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
// Выполняем обновление пакетного индекса APT:
# apt update
// Устанавливаем последнюю версию Docker CE и containerd:
# apt install docker-ce docker-ce-cli containerd.io
// Выполним проверку корректности установки Docker, запустив образ «hello-world»:
# docker run hello-world
1.2 Установка Zabbix и MySQL
// Выполняем установку контейнера MySQL:
# docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
-d mysql:latest
// Проверяем журналы MySQL-сервера:
# docker logs mysql-server
...
[Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.16' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL.
[Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
...
// Включаем режим native passwords для MySQL 8.0 (обходим ошибку Authentication plugin ‘caching_sha2_password’ cannot be loaded):
# docker exec -it mysql-server /bin/bash
# mysql -u root -p
# ALTER USER 'zabbix' IDENTIFIED WITH mysql_native_password BY 'zabbix';
# exit
# exit
// Выполняем установку контейнера Zabbix-Server:
# docker run --name zabbix-server -t -p 10051:10051 \
-e DB_SERVER_HOST="172.17.0.2" -e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
--link mysql-server:mysql \
-d zabbix/zabbix-server-mysql:latest
// Проверяем журналы MySQL со стороны Zabbix-Server:
# docker logs zabbix-server
Альтернативный вариант — выполнение проверки непосредственно из контейнера Zabbix-Server:
# docker exec -it zabbix-server bash
# mysql -u zabbix -p zabbix -h 172.17.0.2
// Запускаем контейнер Zabbix-Web (фронтенд Zabbix):
# docker run --name zabbix-web -t -p 8080:8080 \
-e DB_SERVER_HOST="172.17.0.2" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_SERVER_HOST="172.17.0.3" \
-e ZBX_SERVER_NAME="MyZabbix" \
-e PHP_TZ="Europe/Moscow" \
-d zabbix/zabbix-web-apache-mysql:latest
// Проверяем журналы Zabbix-Web:
# docker logs zabbix-web
——————
Выполняем первый вход в веб-интерфейс сервера Zabbix:
http://ip_address
УЗ по умолчанию: admin / zabbix
——————
1.3 Настройка хост-системы на мониторинг с помощью Zabbix-Agent
В нашем случае хост-система следующая:
root@ubuntu-2gb-nbg1-1:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
Для Ubuntu 18.04 (bionic) выполним следующие команды:
// Установка репозитория
# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb
# dpkg -i zabbix-release_4.0-2+bionic_all.deb
# apt update
// Установка последней версии Zabbix-Agent
# apt install zabbix-agent
После установки Zabbix-Agent, задаем параметры для подключения к серверу путем правки конфигурационного файла:
# vim /etc/zabbix/zabbix_agentd.conf
Server=172.17.0.3
ServerActive=172.17.0.3
Hostname=Zabbix server
// Запускаем Zabbix-Agent и добавляем его в автозагрузку хост-машины:
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
// Проверяем журналы Zabbix-Agent:
# less +G /var/log/zabbix/zabbix_agentd.log
# netstat -napl | grep zabbix
Переходим в веб-интерфейс Zabbix, далее меню Configuration > Hosts. Выбираем Zabbix server, в поле Agent interfaces вписываем адрес хост-машины, нажимаем кнопку Update. Дожидаемся обновления статуса сервера.
Проверить доступность Zabbix-Agent можно также из контейнера zabbix-server:
# docker exec -it zabbix-server /bin/bash
# zabbix_get -s zabbix_agent_ip -k "system.uptime"
—
Полезные ресурсы
- https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/
- https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded
- https://www.zabbix.com/documentation/4.0/ru/manual/installation/install_from_packages/debian_ubuntu
- https://nyukers.blogspot.com/2018/04/docker-zabbix-jenkins.html
И какой «http://ip_address» если докер на одной машине, а мониторить и пользоваться веб-интерфейсом нужно с другой?
Для этой разницы/возможности использования разных приложений на одном адресе, существуют порты публикаций сервисов.
То есть адрес один, а порты разные.
А если нужно пользоваться публичным адресом из другой сущности 1 к сущности 2 (на которой установлен zabbix-server), используйте перенаправление с адреса сущности 1 на адрес сущности 2, силами сервиса к примеру nginx.
В статье ошибка после «Запускаем контейнер Zabbix-Web (фронтенд Zabbix):»
в коде docker run —name zabbix-web -t -p 80:80 \ порт не 80, а 8080. Например -p 8080:8080
devilridingshotgun, спасибо, поправил.
После перезапуска ВМ, статусы всех 3х образов — existed, соответственно веб морда заббикса не работает, после включения всех 3 образов с помощью docker start, статусы всех 3х образов UP, однако веб-морда так и не работает
При этом в логах docker logs zabbix-server:
20220726:091218.669 [Z3001] connection to database ‘zabbix’ failed: [2002] Can’t connect to MySQL server on ‘172.17.0.2’ (115)
6:20220726:091218.669 Cannot connect to the database. Exiting…
**** MySQL server is not available. Waiting 5 seconds…
**** MySQL server is not available. Waiting 5 seconds…
**** MySQL server is not available. Waiting 5 seconds…
**** MySQL server is not available. Waiting 5 seconds…
Как быть?