Найти тему
AnyKey.blog

Docker: разворачиваем Zabbix

Оглавление

Привет, Мир! Пора нам закрепить материал по Docker из первой и второй статьи. Теперь мы познакомимся с возможностью установки системы мониторинга Zabbix в Docker. А так же я покажу как настроить уведомления и поставить клиента на свои сервера.

Нам не важно каким из описанных выше способов мы воспользуемся для разворачивания приложения, но в каждом из них нам необходимо создать места хранения наших данных. Я приведу пример классического развертывания через командную строку, Вы же можете воспользоваться Portainer или Dockge из предыдущих статей. Начнем!

Подготовка к установке

Выполним необходимые действия, мы будем хранить данные приложения в каталоге /apps/zabbix. Создаем его командой:

sudo mkdir -p /apps/zabbix

Перейдем в него:

cd /apps/zabbix

Создаем docker-compose.yml нашего приложения:

sudo nano docker-compose.yaml

И заполним его конфигурацией:

version: "3.9"

services:

zabbix-mariadb:
image: mariadb
container_name: zabbix-mariadb
hostname: zabbix-mariadb
restart: unless-stopped
environment:
TZ: "Europe/Astrakhan"
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: '
Ваш. секретный пароль root'
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: '
Ваш секретный пароль БД'
networks:
- default
volumes:
-
/apps/zabbix/mariadb/data:/var/lib/mysql

zabbix-server:
image: zabbix/zabbix-server-mysql
container_name: zabbix-server
hostname: zabbix-server
restart: unless-stopped
environment:
TZ: "
Europe/Moscow"
DB_SERVER_HOST: zabbix-mariadb
MYSQL_USER: zabbix
MYSQL_PASSWORD: '
Ваш секретный пароль БД'
networks:
default:
ipv4_address: 172.28.0.254
depends_on:
- zabbix-mariadb

zabbix-web:
image: zabbix/zabbix-web-nginx-mysql
container_name: zabbix-web
hostname: zabbix-web
restart: unless-stopped
environment:
TZ: "
Europe/Moscow"
DB_SERVER_HOST: zabbix-mariadb
MYSQL_USER: zabbix
MYSQL_PASSWORD: '
Ваш секретный пароль БД'
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: "
Europe/Moscow"
ports:
-
8080:8080
-
8443:8443
networks:
- default
depends_on:
- zabbix-mariadb
- zabbix-server

networks:
default:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16

*я выделил жирным пункты, на которые Вам необходим обратить внимание.

Немного подробностей. Ранее я рассказывал в статьях о полезности compose для разворачивания нескольких приложений с общими параметрами. На данном примере мы запускаем 3 приложения с одной сетью и обращающимися к одной БД. Первая часть конфигурации создает контейнер с БД zabbix, второй разворачивает бэкэнд, третий - фронтэнд, WEB-интерфейс управления Zabbix.

Чтобы запустить данную конфигурацию выполним команду:

sudo docker-compose up -d

В моем примере WEB-интерфейс доступен по порту 8080, проверим его доступность по адресу: http://IP-сервера:8080.

На этом все. Видите, даже такие сравнительно сложные и объёмные инсталляции можно сделать в пару кликов с помощью Docker! Теперь, как и обещал, расскажу как подключить уведомления, для этого я лично использую Pushover.

Настройка уведомлений на Pushover

Я. выбрал этот способ для разграничения сообщений. Многие делают уведомления в Telegram-ботов, мне такой способ чужд. Согласно официальной инструкции это делается довольно просто.

Зарегистрируйте аккаунт в приложении или на веб-сайте Pushover. После входа в него нам необходимо создать приложение при помощи кнопки снизу Create a New Application/API Token. Заполняется форма как на примере ниже.

-2

В итоге Вы получите выдачу, в которой нам интересен API token/key:

-3

А так же User Key с главной страницы Pushover. Введите полученный API token/key в настройки Pushover по пути Оповещения > Службы оповещения:

-4

А User Key в настройках пользователя, вкладка Оповещения:

-5

Последнее необходимое действие - имеется ли настроенное действие в Zabbix, которое отправляет оповещения, по умолчанию оно выключено. Этот пункт находится по пути Оповещения > Действия > Действия триггеров, триггер - Report problems to Zabbix administrators:

-6

На этом действия завершены. Теперь Вы можете настроить под себя необходимую степень значимости уведомлений для этого способа и время, когда они будут Вам приходить. А чтобы было что мониторить, установим клиента на наш сервер. Я предпочитаю zabbix-agent2. Ниже опишу как его установить.

Установка Zabbix-agent2

Для установки zabbix-agent2 необходимо добавить репозиторий в нашу систему. Для этого переходим по ссылке, выбираем последнюю версию, далее в нужную нам ОС из списка:

-7

Далее по пути типа /zabbix/6.5/centos/9/x86_64/ в моём случае и скопируйте ссылку на последнюю версию релиза:

  • для ОС Ubuntu ссылку на пакет zabbix-release_x.x.x+ubuntuxx.xx_all.deb,
  • для ОС Debian ссылку на пакет zabbix-release_x.x-x+debianx_all.deb,
  • для ОС CentOS ссылку на zabbix-release-x.x-x.el*.noarch.rpm,

*где x.x.x -версия релиза, *-версия ОС

Установите репозиторий zabbix  командами:

для ОС CentOS 9:

rpm -Uvh https://repo.zabbix.com/zabbix/6.5/centos/9/x86_64/zabbix-release-6.5-2.el9.noarch.rpm
sudo dnf clean all

для ОС Ubuntu 22.04:

wget https://repo.zabbix.com/zabbix/6.5/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.5-1%2Bubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.5-1%2Bubuntu22.04_all.deb
sudo apt update

для ОС Debian 12:

wget https://repo.zabbix.com/zabbix/6.5/debian/pool/main/z/zabbix-release/zabbix-release_6.5-1%2Bdebian12_all.deb
sudo dpkg -i zabbix-release_6.5-1%2Bdebian12_all.deb
sudo apt update

Устанавливаем агент zabbix командами:

для ОС CentOS:

sudo yum install zabbix-agent2 -y

для ОС Debian/Ubuntu:

sudo apt install zabbix-agent2 -y

Далее необходимо настроить zabix-agent. Откройте любым тестовым редактором файл конфигурации

sudo nano /etc/zabbix/zabbix_agent2.conf

Настройте основные параметры:

Server=IP Вашего хоста в zabbix ServerActive=IP Вашего хоста в zabbix Hostname=имя Вашего хоста в zabbix

Остальные параметры есть в официальной инструкции, но данного минимума будет нам достаточно для запуска мониторинга. Запустите zabbix-agent:

systemctl start zabbix-agent2

Разрешите автозапуск zabbix-agent:

systemctl enable zabbix-agent2

Так же можно почитать последние записи в логах агента командой:

sudo tail -n 30 /var/log/zabbix/zabbix_agentd.log

Сервера:

sudo tail -n 10 /var/log/zabbix/zabbix_server.log

Но у нас zabbix в контейнере Docker, так что в нашем случае командой:

sudo docker logs zabbix-server

Это будет полезно при добавлении в zabbix данного хоста в случае отсутствия связи.

На этом все, в дальнейшем постараюсь освятить интересные моменты мониторинга систем при помощи Zabbix так как активно его использую и много чего еще.

Так же не забывайте о возможности задать вопросы в комментариях или Telegram канале. До связи!