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

Внимание! Материал устарел и не рекомендуется к использованию.

Пост описывает процедуру установки 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"

Полезные ресурсы

  1. https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/
  2. https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded
  3. https://www.zabbix.com/documentation/4.0/ru/manual/installation/install_from_packages/debian_ubuntu
  4. https://nyukers.blogspot.com/2018/04/docker-zabbix-jenkins.html

5 Replies to “Установка Zabbix из контейнеров Docker”

  1. И какой «http://ip_address» если докер на одной машине, а мониторить и пользоваться веб-интерфейсом нужно с другой?

    1. Для этой разницы/возможности использования разных приложений на одном адресе, существуют порты публикаций сервисов.
      То есть адрес один, а порты разные.
      А если нужно пользоваться публичным адресом из другой сущности 1 к сущности 2 (на которой установлен zabbix-server), используйте перенаправление с адреса сущности 1 на адрес сущности 2, силами сервиса к примеру nginx.

  2. В статье ошибка после «Запускаем контейнер Zabbix-Web (фронтенд Zabbix):»
    в коде docker run —name zabbix-web -t -p 80:80 \ порт не 80, а 8080. Например -p 8080:8080

  3. После перезапуска ВМ, статусы всех 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…

    Как быть?

Добавить комментарий для Giflop Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *