Перейти к содержимому

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. Заполняется форма как на примере ниже.

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

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

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

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

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

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

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

Далее по пути типа /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 канале. До связи!

Опубликовано вИнструкцииПолезное ПО

Ваш комментарий будет первым

Добавить комментарий

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