- Обзор
- Добавление контролируемого хоста на сервер Zabbix
- Настройка веб-интерфейса Zabbix
- Создание бота в Telegram
- Настройка мониторинга, шаблоны, триггеры
- Графики
- Настройка мониторинга удаленного сервера
- Настройка отправки
- Настройка оповещений по email.
- Отправка уведомлений в telegram через webhook в группу.
- Готовые решения
- Установка Zabbix из контейнеров Docker
- Вариант №1
- Вариант №2
- Собственно, установка
- Зачем нужен мониторинг
- Реакции
- Отправка уведомлений в telegram через webhook в личку.
- Операции
- Параметры операций
- Приступаем к внедрению Zabbix
- Выбор конфигурации виртуальной машины Zabbix
- Размещение серверов Zabbix в нескольких дата-центрах
- Установка клиентского ПО Zabbix
- Установка агента Zabbix и программы zabbix_sender на ОС Linux
- Настройка конфигурации агента Zabbix
- Настройка web-интерфейса
- «Линия Облако»
- Установка агента Zabbix и скриптов на сервер с NEAR
- Установка Monitorix Monitoring System.
- Открытие портов в консоли Google Cloud Platform.
- Низкоуровневое обнаружение
- Что можно обнаружить
- Дополнительные типы
- Установка сервера Zabbix 5 в Ubuntu
- Логинимся в интерфейс, используя стандартные данные Zabbix
- Отправка уведомлений и графиков из Zabbix в Telegram
- Действие
- Параметры действий
- Открытие портов на сервере Zabbix.
- Что нужно сделать дальше
- Прокси
- Настройка Zabbix-сервера для мониторинга IPMI.
- Установка Zabbix.
- Версия 4
- Основные нововведения в Zabbix 4
Обзор
Систему создал Алексей Владышев на языке Perl. Впоследствии проект подвергся серьезным изменением, которые затронули и архитектуру. Zabbix переписали на C и PHP. Открытый исходный код появился в 2001 г., а уже через три года выпустили первую стабильную версию.
Веб-интерфейс Zabbix написан на PHP. Для хранения данных используются MySQL, Oracle, PostgreSQL, SQLite или IBM DB2.

Далее рассмотрим, из чего состоит и как работает технология Zabbix в доступном формате «для чайников».

У Zabbix есть 4 основных инструмента, с помощью которых можно мониторить определенную рабочую среду и собирать о ней полный пакет данных для оптимизации работы.
- Сервер — ядро, хранящее в себе все данные системы, включая статистические, оперативные и конфигурацию. Дистанционно управляет сетевыми сервисами, оповещает администратора о существующих проблемах с оборудованием, находящимся под наблюдением.
- Прокси — сервис, собирающий данные о доступности и производительности устройств, который работает от имени сервера. Все собранные данные сохраняются в буфер и загружаются на сервер. Нужен для распределения нагрузки на сервер. Благодаря этому процессу можно уменьшить нагрузку на процессор и жесткий диск. Для работы прокси Zabbix отдельно нужна база данных.
- Агент — программа (демон), которая активно мониторит и собирает статистику работы локальных ресурсов (накопители, оперативная память, процессор и др.) и приложений.
- Веб-интерфейс — является частью сервера системы и требует для работы веб-сервер. Часто запускается на том же физическом узле, что и Zabbix.
Добавление контролируемого хоста на сервер Zabbix
Откройте главную страницу веб-интерфейса Zabbix, затем выберите из меню Configuration строку Hosts. Откроется страница Hosts, на которой уже добавлен один хост с именем Zabbix server. Это хост, на котором установлен сам сервер Zabbix, и его адрес IP указан как 127.0.0.1 (рис. 7).

Рис. 7. Страница Hosts сразу после установки сервера Zabbix
Для добавления нового контролируемого хоста щелкните кнопку Create host. Появится форма, где нужно заполнить параметры нового хоста (рис. 8).

Рис. 8. Параметры добавляемого хоста
Здесь вам нужно указать в поле Host name такое же имя хоста, что было задано в файле конфигурации агента Zabbix.
Для мониторинга обычного физического или виртуального сервера Linux выберите в поле Templates шаблон Linux by Zabbix agent.
Далее нужно задать имя группы в поле Host groups. Сразу после установки в конфигурации Zabbix нет ни одной группы, поэтому вам нужно создать новую группу. Мы рекомендуем отразить в имени группы название дата-центра и тип узла, чтобы по этому имени можно было быстро понять, что это за хосты, где они находятся и для чего предназначены.
Когда все поля будут заполнены, щелкните кнопку Add.
Через некоторое время (порядка нескольких минут) напротив добавленного хоста в столбце Availability появится значок ZBX зеленого цвета (рис. 9).

Рис. 9. Добавлено два хоста для мониторинга
Если этого не произошло, проверьте еще раз файл конфигурации агента Zabbix, состояние сервиса zabbix-agent (или zabbix-agent2, если вы его используете), а также убедитесь, что после редактирования файла конфигурации агента вы перезапустили сервис.
Кроме того, убедитесь, что на контролируемом хосте открыт порт 10050 для сервера Zabbix.
При ошибке вы увидите значок ZBX красного цвета. Щелкните его, и на экране появится сообщение об ошибке (рис. 10).

Рис. 10. Сообщение об ошибке при попытке подключения сервера Zabbix к агенту
Если вам нужно добавить несколько похожих друг на друга хостов на сервер Zabbix, воспользуйтесь функцией клонирования. Для этого откройте хост в списке хостов, щелкнув по его имени, а затем воспользуйтесь кнопкой Clone или Full clone. Измените имя хоста и его адрес IP, отредактируйте список использованных шаблонов, а затем сохраните изменения кнопкой Add.
Функция Full clone позволяет дополнительно скопировать элементы данных (items), триггеры, графы и приложения. Это удобно, если для хостов были сделаны индивидуальные настройки.
Настройка веб-интерфейса Zabbix
Теперь можно зайти на web-интерфейс Zabbix, для этого в браузере нужно ввести:
Нас поприветствует мастер настройки.
По большей части тут будем нажимать next.





Здесь нужно ввести установленный ранее пароль.



Меняем язык через настройки пользователя.
Заходим в профиль.

Выбираем русский язык.

Меняем пароль с zabbix на свой и нажимаем Update.

Создание бота в Telegram
Мы создали бота для оповещений и получили для него token, который нам понадобится далее. Теперь нужно добавить в свой список контактов созданного бота. Для этого найдите его по имени, указанного при создании бота.
Теперь проверим, как работает отправка уведомлений через нашего бота. Для этого в консоли сервера набираем примерно такую команду:
В этом запросе изменяемые данные следующие:
Настройка мониторинга, шаблоны, триггеры
Теперь перейдем к основному пункту, а именно настройке мониторинга.
Заходим в «Настройка» — «Группы узлов сети».

Тут мы увидим заранее созданные системные группы, удалять их не надо.
Нажимаем «Создать группу узлов сети». Заполняем имя группы, например Networks. Узлы пока не добавляем. Нажимаем «Добавить».

Нам также понадобится группа для наших шаблонов, нажимаем «Создать группу узлов сети», в поле «Имя» пишем: Templates for Networks. Нажимаем «Добавить».
Теперь перейдем к шаблонам: «Настройка» – «Шаблоны» – «Создать шаблон».
Так как мы работаем с IP-камерами и серверами, первым шаблоном нужно сделать проверку узла по пингу.
Вводим имя шаблона, например Ping Template. Добавляем нашу группу Templates for Networks и можем добавить описание по кнопке «Добавить».

Теперь мы можем выбрать группу для шаблонов, чтобы видеть наши шаблоны.

Добавляем в шаблон элемент данных, для этого нажимаем «Элементы данных» – «Создать элементы данных».
В поле «Имя» указываем Ping.
«Ключ» – нажимаем «Выбрать» и выбираем первый ключ. Он будет возвращать 1 в случае удачного пинга и 0 в случае неудачного, нам этого достаточно.

Все параметры установлены по умолчанию, поэтому удаляем все, что находится в квадратных скобках:
«Тип информации» – выбираем «Числовой (целое положительное)».
Поле «Единица измерения» оставляем пустым.
«Интервал обновления» – тут выбираем интервал пинга, например 60 s.
«Период хранения истории» – для уменьшения размера базы данных поставим 1 d.
«Период хранения динамики изменений» – 5 d.

А также необходимо знать процент потерянных пакетов.
Добавим сразу еще один элемент – процент потерянных пакетов.
Нажимаем «Создать элемент данных».
В поле «Имя» указываем lost packet.
«Ключ» – нажимаем «Выбрать» и выбираем второй ключ.
Также удаляем все, что находится в квадратных скобках.
«Тип информации» – «Числовой (с плавающей точкой)».
«Единица измерения» – вписываем «%».
«Интервал обновления» – 60 s.
«Период хранения истории» – 1 d.

Графики
Чтобы визуализировать информацию, нам понадобятся графики. Выбираем «Графики» и нажимаем «Создать график».

В поле «Имя» вводим Ping.
Снимаем галочку с «Отображать триггеры».
«Элементы данных» – «Добавить» – выбираем наш Ping.

Также добавляем lost packet.

Настройка мониторинга удаленного сервера
Теперь приведем пример настройки мониторинга удаленного сервера
Заходим «Настройка» – «Узлы сети» – «Создать узел сети».


В шаблонах, в поле «Соединить с новыми шаблонами», выбираем наш шаблон для сети и дважды нажимаем «Добавить».

В узлах сети видно добавление нашего узла. У него есть два элемента данных, график и активное состояние.

Теперь специально отключим сеть на несколько минут и посмотрим графики.
«Мониторинг» – «Графики» – выбираем нашу группу, узел и график.


Настройка отправки
Чтобы получать уведомления о проблемах в работе системы, настроим отправку уведомлений
Заходим в «Администрирование» – «Способы оповещений».
Выделяем и удаляем стандартные способы.

Теперь создаем новый способ с помощью кнопки «Создать способ оповещения».
Заполняем настройки нашего smtp-сервера.

Далее нужно заполнить данные пользователей, которым будет отправляться почта.

Теперь создадим триггер, при срабатывании которого нужно будет выполнять отправку email-сообщения.

Добавим наш элемент.

«Имя» – вводим Ping fail.
«Важность» выставляем самостоятельно, здесь «Средняя».
Создаем действие, которое будет отправлять нам оповещения при срабатывании триггеров.
«Настройка» – «Действия» – «Источник события» – «Триггеры» – «Создать действие».

Вводим имя действия, удаляем стандартное условие и добавляем своё, тип «Триггер» – «Выбрать».

В поле «Новое условие» нажимаем «Добавить» и переходим во вкладку «Операции».
Тут можно выбрать длительность, тему и текст сообщения. Оставим их по умолчанию.
«Длительность шага операции по умолчанию» – ставим 10 m.
«Отправлять пользователям» – выбираем нашего пользователя.
«Отправлять только через» – email.
Добавляем наше действие.

Выключаем сеть для проверки.

Заходим в «Мониторинг» – «Проблемы» и видим нашу ошибку.

Проверяем почту и видим письмо о проблеме.

После получения письма и устранения проблемы можно в «Мониторинге проблем» нажать на «Нет» в столбце «Подтверждено» и подтвердить событие, поставив себе какую-нибудь заметку.
Для начала зайдём в Data Collection — Discovery. Тут нам нужно пока 2 правила, первое зададим так:

Это правило позволит нам обнаруживать все пингующиеся узлы в сети. Если сетей нужно несколько, пишем их через запятую.
Далее, создаём второе правило, которое позволит нам находить все узлы с установленным Zabbix-агентом:

Теперь, если мы зайдём в Monitoring — Discovery, то мы уже увидим какие-то найденные узлы, но сверху можно выбрать конкретное Discovery rule, применить его и мы узнам, какой именно узел, подпадающий под это правило, находится в каком состоянии:

Отличие живых узлов от мертвых
Первые строки соответствуют узлам в статусе «доступен» и отображают непрерывное время доступности, последние же соответствуют узлам в статусе «не доступен» и отображают время недоступности.
Узлы, находящиеся тут, это все узлы, активность которых Zabbix зафиксировал. Реального сбора с них вполне может не идти!
Далее, устанавливаем заббикс-клиент на узел, который мы хотим мониторить. Для этого на каком-то сервере точно также добавляет репозиторий, устанавливаем пакет zabbix-agent, после чего вносим правки в конфиг и перезапускает сервер. В конфиге я лично ограничусь следующими необходимыми и достаточными мне на первое время правками:
Строчку Hostname надо убрать любым способом, например закомментировать как в моем примере. Конечно, вы можете указать имя сервера и напрямую (и тогда не указывать HostnameItem), но на мой взгляд это неудобно потому, что тогда каждый конфиг будет уникальным, в данном же случае, все конфиги всех серверов оказываются строго идентичными, благодаря чему их можно раскладывать централизованно например при установке через ansible или любой другой механизм. А имя сервера будет браться из его собственного имени хоста, для работы с которым существует две удобные команды:

Однако, пока новый агент в списке доступных серверов не появится. И чтобы это исправить надо произвести еще несколько действий. Во-первых, заходим в «Alerts-Action-Autoregistration actions», создаём новое действие («Create Action» в правом верхнем углу), которое по наличию в Metadata слова «Linux» будет добавлять хост в группу «Linux Servers», при этом там создаём условие («Add» в поле «Condition»)

А после нажатия кнопки сохранения («Add») переходим на вкладке «Operations» и там также жмём «Add», добавляем соответствующее действие и опять сохраняем.
Тут кстати важно заметить, что в отличие от старых версий, сейчас есть возможность добавлять узлы не только по метаданным, но также по PSK-ключам, что конечно гораздо безопаснее и о чём подробнее вы можете почитать тут: https://www.zabbix.com/documentation/current/en/manual/discovery/auto_registration#secure-autoregistration
Я же не буду на этом останавливаться потому, что если сервер находится в закрытой корпоративной сети, что является типовой схемой применения системы мониторинга, такие меры безопасности на мой взгляд являются избыточными.

Во-вторых, заходим в «Alerts-Action-Discovery actions», там создаём новое «Discovery action» примерно с такими условиями, как на картинке выше и примерно с такими действиями, как на картинке ниже.

Если статья окажется интересна и наберёт положительные отзывы, я напишу как подружить Zabbix с VmWare ESXi.
А если будут просто какие-то пожелания или возражения — пишите, с удовольствием исправлю. Я — не частый автор статей для Хабра, потому с большим вниманием отнесусь к критике и постараюсь исправить возможные ошибки. Рука не набита, как говорится.
Настройка оповещений по email.
Zabbix умеет отправлять уведомления на email, что называется, “из коробки”. Однако в некоторых дистрибутивах отправлять уведомления штатными средствами не удается. Для FreeBSD можно использовать ssmtp + внешний скрипт. В первую очередь необходимо установить ssmtp:
# cd /usr/ports/mail/ssmtp# make install replace clean
Создаем конфигурацию из шаблона:
# cp /usr/local/etc/ssmtp/ssmtp.conf.sample /usr/local/etc/ssmtp/ssmtp.conf
В моем примере в качестве релея будет использоваться gmail, поэтому настройки будут следующими:
# nano /usr/local/etc/ssmtp/ssmtp.conf
Отправляем тестовое сообщение:
Если сообщение было доставлено, то переходим к созданию bash-скрипта, с помощью которого Zabbix будет отправлять оповещения на email. Скрипты выполняются на стороне Zabbix-сервера и размещаются в папке, указанной в файле конфигурации Zabbix-сервера в переменной AlertScriptsPath. По-умолчанию для FreeBSD, скорей всего, /usr/local/etc/zabbix3/zabbix/alertscripts/, но лучше убедиться:
Во избежании путанницы (если Zabbix скомпилировался с другим параметром datadir), лучше указать пути к скриптам в явном виде:
# nano /usr/local/etc/zabbix3/zabbix_server.conf
Раскоментируем эту строчку в конфиге и создадим скрипт:
# nano /usr/local/etc/zabbix3/zabbix/alertscripts/emailsend.sh
# chmod 777 /usr/local/etc/zabbix3/zabbix/alertscripts/emailsend.sh
Переходим к настройке оповещений в web-инерфейсе Zabbix. В остальном настройка оповещения через скрипт схожа с штатным способом оповещения “Email”, разве что только не нужно добавлять переменные:
Теперь созданное оповещение нужно добавить к какому-либо из пользователей. Открываем:
Таким образом, для каждого пользователя можно задать свой способ оповещения и настроить расписание в соответствии с важностью события. Например, отправлять оповещения всех событий только в дневное время с понедельника по пятницу, а в ночное время и в выходные — отправлять оповещения только важных и черезвычайно важных событий.
Доставка сообщений штатными средствами так же не работает в Ubuntu (не исключено, что и в Debian). Так, например, в Zabbix Appliance 3.0.1 придется удалить sendmail и воспользоваться связкой “mailutils + скрипт”. В первую очередь убедимся, не установлен ли sendmail:
# service sendmail status
Если установлен, то удаляем:
# apt-get remove sendmail
и заменяем его, создав символическую ссылку:
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
Теперь установим mailutils и отправим тестовое сообщение:
Если сообщение было доставлено, то переходим к созданию bash-скрипта. Смотрим, где располагаются скрипты:
Значит cоздаем bash-скрипт (аналогичный как и для FreeBSD) в /usr/lib/zabbix/alertscripts и разрешаем его автозапуск:
# nano /usr/lib/zabbix/alertscripts/emailsend.sh# chmod 777 /usr/lib/zabbix/alertscripts/emailsend.sh
После чего можно переходить к настройке оповещений в web-инерфейсе Zabbix, по аналогии, как было расписано чуть выше.
Отправка уведомлений в telegram через webhook в группу.
Создаем группу и добавляем в нее нашего бота Zabbix.
Указываем token бота и в поле To указываем id группы, полученного из списка обновлений бота, следующим образом:
После сохранения проверяем аналогично отправке в личку.
Готовые решения
Развертывание приложения из iso-образа — готовое решение, которое значительно экономит время по сравнению с установкой вручную. Этот вариант подходит для быстрого развертывания Zabbix-сервера (MySQL/PostgreSQL) и Zabbix-прокси (MySQL/SQLite 3).

- Для начала нужно зайти на официальный сайт приложения, где выложены архивы с готовыми решениями Zabbix под различные виртуальные платформы.
- Осуществится переход в веб-интерфейс панели управления Zabbix-сервером, где можно сделать все необходимые настройки конфигурации.
Установка Zabbix из контейнеров Docker
Zabbix интегрирован с приложением для контейнеризации Docker. Об установке программы можно узнать здесь.
Каждый компонент Zabbix можно быстро развернуть в виде виртуального контейнера. Они доступны для скачивания на официальном сайте.
Docker-образы Zabbix поставляются для трех операционных систем:
- Ubuntu;
- AlpineLinux;
- CentOS.
Установку Zabbix-сервера можно произвести несколькими основными способами.
Вариант №1
Можно сразу установить готовый образ, включающий в себя Zabbix-сервер, MySQL, Nginx. Для этого нужно выполнить команду:
docker run —name some-zabbix-appliance -p 80:80 -p 10051:10051 -d zabbix/zabbix-appliance:latest
Создастся Zabbix-экземпляр, прослушивающий 80 и 10051 порты.
Вариант №2
Существует способ размещения Zabbix, при котором каждый компонент мониторинг-системы расположен в отдельном контейнере.
Для создаваемых контейнеров нужно создать сеть Docker:
docker network create zabbix-net
Теперь необходимо запустить контейнер с СУБД:
В примере используется Postgresql.
Далее стоит разместить контейнер с Zabbix-сервером:
Остаётся запустить веб-сервер Zabbix:
В примере используется Nginx.
Собственно, установка
Тут всё просто. Советую воспользоваться официальным гайдом.
Только обратите внимение, что на этой странице в пункте 1 надо выбрать то, что соответствует вашим пожеланиям, в зависимости от выбора каждого пункта инструкция будет изменяться. Я предпочитаю использовать Zabbix в комплекте с Postgres, потому дальнейшие советы будут про него.
Еще для установки на восьмёрку придётся обновить версии пары пакетов относительно штатных системных, иначе установка пройдёт успешно, но потом ничего работать не будет:
dnf install -y epel-release
# Устанавливаем сторонний репозиторий, содержащий нужные нам версии php
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module reset php
dnf module enable php:remi-7.4 -y
dnf -qy module disable postgresql
dnf install -y postgresql15 postgresql15-server
После установки необходимых пакетов и создания базы данных нужно зайти в конфиг сервера /etc/zabbix/zabbix_server.conf и внести некоторые изменения, я ограничился следующими:
Сохраняем изменения, перезагружаем сервер
systemctl restart zabbix-server.service
Если почему-то веб-интерфейс не открывается, то «чиним» фаерволл:
firewall-cmd —add-service=http —permanent
firewall-cmd —add-service=https —permanent
firewall-cmd —add-service=zabbix-agent —permanent
firewall-cmd —add-service=zabbix-server —permanent
firewall-cmd —reload
Зачем нужен мониторинг
В основном систему zabbix используют опытные пользователи, для которых её установка и настройка не составляют особого труда. Но что же делать остальным? В этой статье мы постараемся помочь разобраться в основах работы и показать основные моменты для дальнейшего самостоятельного изучения системы мониторинга zabbix.
Реакции
Мониторинг камер можно настроить с помощью реакций в самом программном обеспечении «Линия».
Для этого нужно зайти в «Администрирование» – «Реакции» – «Добавить реакцию».
Время – оставляем «Всегда».
Условие – «Пропал сигнал с камеры».
Действие – «Отправить электронное письмо».
Заполняем свою почту, выбираем, с какой камеры отправлять кадры, и ставим интервал в 5 минут.

Отправка уведомлений в telegram через webhook в личку.
Тут же можете шаблоны поправить так, как вам нравится. Это нововведение 5-й версии Zabbix — правка шаблонов оповещений в настройках самих оповещений. Это позволяет создавать для каждого типа свои шаблоны.
Давайте теперь проверим отправку уведомлений через этот способ. Нажимаем кнопку TEST в списке Media types напротив “Telegram”. Пишем текст сообщения, заголовок, свой id и token бота. В итоге — в личку пришло сообщение от бота.
Теперь идем в настройки пользователя и добавляем ему способ оповещений через telegram.
Указываем Type — указываем название созданное в пунктах 7.2 или 7.3
Send To — указываем или id аккаунта для отправки в личку или id группы (не пропускаем знак минус) для отправки в группу. Сохраняем.
У нас все настроено для отправки оповещений в telegram. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.
Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться.
Операции
Пользователь может указать для событий операцию или группу операций.

Параметры операций
- Step — при эскалации событий.
- Operation type — действия на определенном шаге, например, «Send message» или «Execute command».
- Event Source — источник событий.
- Default message — текст по умолчанию.
- Subject — кого оповещает система.
- Message — текст сообщения.
- Remote command — команда для удаленного управления.
Приступаем к внедрению Zabbix
Если вы только приступаете к внедрению Zabbix, то установите сервер мониторинга Zabbix на виртуальную машину, например, арендованную в одном из дата-центров.
Также необходимо установить на каждый контролируемый сервер (хост) клиентское ПО Zabbix — агент и так называемую программу-траппер zabbix-sender, отправляющую данные мониторинга на сервер Zabbix из командной строки.
Для установки сервера Zabbix мы будем использовать виртуальные машины (ВМ) с ОС Debian 11. Перед тем как приступить к их заказу и установке ПО, нужно выбрать конфигурацию ВМ и дата-центры, где они будут установлены.
Выбор конфигурации виртуальной машины Zabbix
Как выбрать конфигурацию для виртуальной машины Zabbix?
Инструкцию по выбору конфигурации можно найти в документации (для версии 6.0 есть на русском языке).
Так как наш SAAS-сервис интернет-магазинов содержит пока только десятки хостов (а не сотни и тысячи, как хотелось бы), то нам будет достаточно ВМ с 4 ядрами, объемом оперативной памяти 4 Гбайт и диском 40 Гбайт. Если же требуется контролировать всего несколько хостов, хватит и двух процессорных ядер.
Заметим, что при размещении ВМ Zabbix в облаке есть возможность управлять количеством ядер и объемом оперативной памяти, выделяя при необходимости больше или меньше ресурсов.
Тут, однако, имеет смысл сравнить цены — облачные решения могут оказаться дороже простой виртуальной машины при одинаковых конфигурациях. Кроме того, у некоторых хостинг-провайдеров есть гибкие тарифы, которые позволяют изменять количество ядер и объём памяти после создания ВМ. Поэтому перед заказом сервера стоит проконсультироваться со специалистами хостинга и выяснить все детали.
Размещение серверов Zabbix в нескольких дата-центрах
Наличие нескольких серверов мониторинга в разных дата-центрах позволит контролировать доступность узлов из разных мест с учетом связности дата-центров. Когда возникнет проблема с доступностью, вы сможете быстро понять, с чем связана эта проблема — с работоспособностью самих хостов или с каналами передачи данных. Это важно, когда нужно как можно быстрее локализовать проблему.
Если к мониторингу предъявляются повышенные требования, используйте возможность создавать резервные серверы Zabbix (есть в Zabbix версии 6.x). Резервный сервер автоматически возьмет на себя работу при выходе из строя основного сервера мониторинга.
Установка клиентского ПО Zabbix
На каждый сервер (физический или виртуальный), который вы собираетесь контролировать при помощи Zabbix, нужно установить агент zabbix-agent и программу zabbix-sender.
Агент позволяет контролировать различные параметры сервера. Программа zabbix-sender представляет собой утилиту командной строки для отправки значений контролируемых параметров на сервер Zabbix.
Существует две версии агента — zabbix-agent и zabbix-agent2. Обе эти версии рабочие и продолжают развиваться.
Установим обе версии сразу.
Установка агента Zabbix и программы zabbix_sender на ОС Linux
Для начала обновите ОС на контролируемом хосте:
# apt update
# apt upgrade
Затем установите репозиторий Zabbix, как мы это делали для сервера:
# wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
# dpkg -i zabbix-release_6.2-1+debian11_all.deb
# apt update
Теперь выполните установку агента zabbix-agent и программы zabbix-sender:
# apt install zabbix-agent zabbix-sender
Проверьте версии установленных программ:
# zabbix_agentd -V
# zabbix_sender -V
Чтобы установить zabbix-agent2, используйте следующую команду:
# apt install zabbix-agent2
Теперь вы можете запустить zabbix-agent2, предварительно остановив zabbix-agent:
# systemctl stop zabbix-agent
# systemctl start zabbix-agent2
Если нужно вернуться к первой версии zabbix-agent, то это можно сделать так:
# systemctl stop zabbix-agent2
# systemctl start zabbix-agent
Когда вы определитесь с версией нужно вам агента Zabbix, сделайте так, чтобы при перезагрузке ОС этот агент запускался автоматически. Например, так вы можете разрешить автозапуск для zabbix-agent2, запретив его для zabbix-agent:
# systemctl enable zabbix-agent2
# systemctl disable zabbix-agent
Настройка конфигурации агента Zabbix
Чтобы сервер Zabbix «увидел» контролируемые хосты, на которых вы установили агента Zabbix, нужно правильным образом отредактировать файл конфигурации агента на каждом хосте.
Узнать состояние агента, а заодно и путь к файлу конфигурации можно так:
Как видите, для zabbix-agent конфигурация задается в файле /etc/zabbix/zabbix_agentd.conf. Для zabbix-agent2 используется другой файл: /etc/zabbix/zabbix_agent2.conf.
Если вы установили оба агента, отредактируйте эти файлы и перезапустите агенты. Вам нужно найти в файлах конфигурации агентов следующие строки:
В первой из них укажите адрес IP своего сервера Zabbix, а во второй — имя контролируемого хоста. Когда у вас будет два или несколько серверов Zabbix, укажите здесь адреса IP всех таких серверов через запятую.
Для перезапуска агентов используйте команды:
# systemctl restart zabbix-agent2
# systemctl restart zabbix-agent
Настройка web-интерфейса
Для установки и настройки Zabbix через web-интерфейс нужно перейти на страницу, где он установлен. Должно появиться такое окно приветствия мастера установки.

Далее нужно нажать на кнопку продолжения установки «Next step». После этого отобразится анализ соответствия Zabbix-сервера всем системным требованиям текущего сервера. Возле каждого из них должен стоять параметр соответствия «Ок».

После нажатия на кнопку «» необходимо ввести параметры подключения к базе данных, которая была создана.

Параметры следующего окна нужно оставить без изменений.
«Линия Облако»
Также дополнительно мониторинг доступности сервера можно настроить с помощью бесплатного сервиса «Линия Облако». Для этого необходимо зарегистрировать сервер на базе программного обеспечения «Линия» в сервисе.
Для этого открываем «Наблюдательный пост», затем заходим в меню «Администрирование», во вкладке «Сеть» выбираем пункт «Сервисы».
Следующим шагом необходимо поставить галочку «Включить Dynamic DNS», ввести действующий адрес электронной почты, желаемое доменное имя и нажать кнопку «Зарегистрировать».
Далее на указанный ящик будет выслан код подтверждения, который необходимо ввести для завершения регистрации.
После ввода кода необходимо нажать кнопку «Подтвердить».
На этом процесс включения сервиса Dynamic DNS и регистрации доменного имени завершен.
Далее заходим в сервис «Линия Облако» и переходим во вкладку «Мониторинг». Здесь ставим галочку «Включить мониторинг» и вводим email, на который будут приходить письма. Также можно указать телефонный номер для отправки sms-сообщений (стоимость одного СМС составит 3 рубля).
Установка агента Zabbix и скриптов на сервер с NEAR
#редактируем конфигурационный файл агента
# nano /etc/zabbix/zabbix_agentd.conf
Server=IP_адрес_zabbix_сервера ServerActive=IP_адрес_zabbix_сервера Hostname=название_NEAR_сервера
#устанавливаем скрипты и конфигурации метрик
для сети BETANET near.conf
Дальше нам надо импортировать шаблон NEAR в интерфейс zabbix.
Скачиваем данный шаблон:
потом переходим во вкладку “Templates” и выбираем наш шаблон
Установка Monitorix Monitoring System.
# apt-get update && apt-get upgrade -y
Редактируем файл/etc/apt/sources.list добавим строку:
deb http://apt.izzysoft.de/ubuntu generic universe
По соображениям безопасности вам необходимо установить ключ PGP для нового репозитория.
# wget http://apt.izzysoft.de/izzysoft.asc# apt-key add izzysoft.asc
при ошибке (E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation) устанавливаем пакет.
# apt-get install gnupg2
# apt-get -y install monitorix apache2-utils
Редактируем конфигурационный файл /etc/monitorix/monitorix.conf. В следующем блоке устанавливаем enable = y
# systemctl restart monitorix.service
Создаем пароль администратора, который вы будете использовать для доступа к веб-интерфейсу.
При необходимости открываем порт к веб интерфейсу
Чтобы получить доступ к статистике вашей системы, посетите следующий адрес в своем веб-браузере:http://your_ip:8080/monitorix/
Открытие портов в консоли Google Cloud Platform.
В консоли Google Cloud Platform переходим:
Главное меню (бургер) — сеть VPC — Брандмауэр
Низкоуровневое обнаружение

Что можно обнаружить
- Распространённые OID, используемые SNMP.
- Сетевые интерфейсы.
- Процессоры, их ядра.
- Файловые системы.
- Службы Windows.
- ODBC.
Дополнительные типы
Задать собственные типы низкоуровневого обнаружения возможно с применением формата JSON. Типы проверок, для которых можно указать список портов и интервал для них:
- SSH;
- LDAP;
- SMTP;
- FTP;
- HTTP;
- POP;
- NNTP;
- IMAP;
- TCP.
Если хост пропадает или обнаруживается, для события можно привязать любое действие — условия и операцию для них.
Установка сервера Zabbix 5 в Ubuntu
Подключаем необходимые репозитории:
Проверка версии Ubunta
# lsb_release -a
если Ubuntu 18:
# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+bionic_all.deb# dpkg -i zabbix-release_5.0-1+bionic_all.deb# apt update
если Ubuntu 20:
# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb# dpkg -i zabbix-release_5.0-1+focal_all.deb# apt update
Устанавливаем Zabbix Server 5 и некоторые его компоненты, а так же mariadb в качестве mysql сервера.
# apt install mariadb-server zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf
Задаем пароль root для mysql с помощью скрипта предварительной настройки.
Далее открываем конфигурационный файл сервера Zabbix — /etc/zabbix/zabbix_server.conf и указываем там параметры подключения к mysql. Сразу же рекомендую изменить параметр таймаута, увеличив его до 20-ти секунд.
# systemctl enable —now zabbix-server
Убедиться в том, что сервер нормально запустился, можно проверив лог заббикс сервера — /var/log/zabbix/zabbix_server.log.
# cat /var/log/zabbix/zabbix_server.log
Подготовим web сервер. Для этого открываем конфигурационный файл nginx /etc/zabbix/nginx.conf и устанавливаем там 2 параметра (также я меняю порт нашего web сервера на 8080):
listen 8080 default_server;server_name example.com;
Одновременно с этим исправляем эту же директиву в основном конфиге nginx — /etc/nginx/sites-available/default.
И в завершении редактируем конфигурационный файл php-fpm — /etc/zabbix/php-fpm.conf, указывая свой часовой пояс.
Проверяем версию php в системе. Версия php может отличаться в зависимости от операционной системы и версии в базовых репозиториях. В общем случае она будет либо php7.3-fpm, либо php7.2-fpm, либо php7.4-fpm.
# find / -name php7.*-fpm
У меня установлена php7.2-frm. Запускаем компоненты web сервера.
# systemctl restart nginx php7.2-fpm# systemctl enable nginx php7.2-fpm
Теперь можно пройти в браузере по ip адресу http://внешний_IP_servera:8080/index.php и откроется первая страница установщика Zabbix Server 5.
Логинимся в интерфейс, используя стандартные данные Zabbix
Система не даст удалить стандартного админа, так как он является владельцем некоторых объектов:
- карты сети — Local Network
- комплексного экрана Zabbix server
- панелей Global view и Zabbix server health
Они создаются автоматически при установке Zabbix. Вам нужно сменить у них владельца на нового пользователя. После этого стандартного админа можно будет удалить, но можно ограничиться блокированием.
Отправка уведомлений и графиков из Zabbix в Telegram
Способов настройки уведомлений из Zabbix в Telegram существует несколько. Их можно разделить по информативности:
- Отправка только текстовых оповещений.
- Отправка графиков.
Так же можно разделить по типу реализации:
- Использовать встроенный webhook в zabbix.
- Написать свой простой скрипт для уведомлений.
- Взять готовую реализацию уведомлений в telegram на github.
Я постараюсь разобрать все возможные варианты. Идти будем от простого к сложному. Сначала настроим текстовые оповещения, потом добавим графики. Отправлять будем как в личку, так и в группу.
Действие
Действие (Action) представляет собой заданную реакцию на событие (Event). Действие может устанавливаться автоматически или вручную как для одного из событий, так и для целой группы.

Параметры действий
- Name — имя действия.
- Event source — источник события. Источниками событий служат обнаружение (Discovery Events), авторегистрация (Auto registration Events) или заданный триггер (Trigger Events).
- Enable escalations — разрешение на эскалацию событий.
- Period — период времени для шага эскалации, указывается в секундах.
- Default subject — указывается, кто извещается по умолчанию.
- Default message — стандартный текст сообщения.
- Recovery message — текст уведомления после решения проблемы.
- Recovery subject — субъект, которого извещают после операции.
- Status — статус действия, может быть «активно» и «запрещено».
Для событий, вызванных триггером или обнаружением, есть свои типы условий. Например, «Application» с операторами «», «» и «» значит, что триггер является частью указанного приложения. Или «Service type» с операторами «», «»и «» предусматривает, что обнаруженный сервис совпадает с указанным.
Открытие портов на сервере Zabbix.
В зависимости от системы и образа, из которого вы устанавливали ее (у разных хостеров они разные) по умолчанию может быть включен либо iptables, либо ufw.
# ufw allow 8080# ufw allow 10050# ufw allow 10051
# ufw status
Что нужно сделать дальше
В следующей статье мы расскажем о настройке мониторинга дисковых систем и контроллеров диска.
А пока добавьте на свой сервер Zabbix все контролируемые хосты, сгруппировав их по дата-центрам, типам хостов и выполняемым функциям.
Мы, например, создали группы для каждого дата-центра, для физических серверов и виртуальных машин, для мониторинга сайтов, сроков действия сертификатов и доменных имен.
Также рекомендуем ознакомиться с документацией Zabbix. Для версии 6.2 она доступна на английском языке, а для версии 6.0 на русском языке.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Прокси
Функция буферизации через прокси используется в том случае, когда существующая инфраструктура достаточно большая, а выделенный сервер не способен нести такую нагрузку. Прокси выступает промежуточным звеном, которое собирает информацию с агентов в буфер, а после отправляет данные на сервер.
Прокси используется еще в нескольких случаях — если агенты находятся далеко друг от друга или ограничены локальной сетью. Это сказывается на доступности агентов и величине пингов.
Zabbix прокси функционирует как демон. Для его использования обязательно наличие отдельной базы данных.
Настройка Zabbix-сервера для мониторинга IPMI.
По умолчанию Zabbix не запускает IPMI-поллеры, поэтому любые добавленные узлы IPMI не будут отображаться. Для того, чтобы включить необходимо отредактировать файл конфигурации Zabbix-сервера:
и изменить строку:
на ненулевое значение (1–1000), указав количество запущенных инстанций (forks) для сбора IPMI.
Обязательно в системе должен быть установлен пакет openipmi. Поидее, он ставится вместе с установкой Zabbix-сервера, но на всякий случай проверим его наличие в системе:
Если не найден, то устанавливаем:
# pkg install openipmi
# service zabbix_server restart
Теперь Zabbix-сервер готов для сбора данных IPMI. В дальнейшем можно подключить хосты и добавить темплейты для мониторинга физического состояния серверов.
Установка Zabbix.
Установим серверную часть Zabbix из “портов” (на момент написания актуальной версией была 3.0.2): перейдем в папку с портом zabbix3-server и установим его:
# cd /usr/ports/net-mgmt/zabbix3-server# make config recursive# make install clean
При конфигурации можно будет выбрать поддерживаемые опции. Лично я выбрал почти все (хоть это и увеличивает время сборки): поддерживаемую базу — MySQL, все остальное — оставил по умолчанию. Единственное, что не рекомендую выбирать для openipmi2.0.21_1 — это IPMI 2.0 RMCP+ encryption and authentication, вызывающий ошибку при компиляции (подробности здесь). В данном случае можно обойтись уже готовым пакетом openipmi:
Импортируем базу данных MySQL:
Проверить результат можно так:
Последняя команда выводит список таблиц базы. Теперь нужно добавить данные для подключения к БД в конфиге zabbix-сервера. Копируем шаблон конфигурации:
# cp /usr/local/etc/zabbix3/zabbix_server.conf.sample /usr/local/etc/zabbix3/zabbix_server.conf
и открываем на редактирование:
Проверяем расположение fping, необходимый для работы Template ICMP Ping:
# ls -l /usr/local/sbin/fping*-r-sr-xr-x 1 root wheel 30504 Jul 6 13:10 /usr/local/sbin/fping-r-sr-xr-x 1 root wheel 32360 Jul 6 13:10 /usr/local/sbin/fping6
и добавляем пути в конфиги:
Добавляем zabbix-сервер в автозагрузку и запускаем:
# sysrc zabbix_server_enable=YES# service zabbix_server start
# service zabbix_server onestart
Проверяем запустился ли:
# service zabbix_server onestatus
Теперь необходимо установить frontend zabbix-сервера:
# cd /usr/ports/net-mgmt/zabbix3-frontend# make config
Лично я все настройки оставил по умолчанию (галочка на MYSQL И MYSQLI установлена, на остальных — снята). Устанавливаем:
По завершении добавим путь к zabbix-frontend в файл виртуальных сайтов Apache:
выставляем права для пользователя, под которым запущен Apache (как правило, это www):
# chown -R www:www /usr/local/www/zabbix3
и на всякий случай, чтобы перечитались все конфиги, перезапускаем Apache:
# service apache24 restart
Жмем “Next” и далее производится проверка параметров, где я получил сообщение:
— Minimum required limit on input parse time for PHP scripts is 300 (configuration option «max_input_time»).- PHP option «always_populate_raw_post_data» must be set to «-1»
Возвращаемся к конфигу php и меняем параметры:
# nano /usr/local/etc/php.inimax_input_time = 300always_populate_raw_post_data = -1
перезапускаем Apache и обновляем страницу:
Жмем “Next” и настраиваем доступ к БД:
Далее все настраивается по принципу “Next-Next-Next-Ok”, как на скриншотах:
По окончанию настройки:
Версия 4
Узнать версию установленного Zabbix сервера можно во время запуске в файле-протоколе.

Основные нововведения в Zabbix 4
- Новый Zabbix Agent (zabbix_agent2) создан на языке Go.
- Опции вывода графиков данных.
- Внешние уведомления, система отслеживания ошибок.
- Официальная поддержка TimescaleDB.
- База знаний для триггеров и элементов данных.
- Группировка данных и гистограммы.
- Официальная поддержка платформ, теперь Zabbix работает с SUSE Linux Enterprise Server 15, Debian 10, Raspbian 10, Mac OS/X, RHEL 8, MSI for Windows Agent и др.

