Введение
Ранее я написал подробную статью по установке и настройке Zabbix 5, где в том числе рассказал своими словами обо всех основных нововведениях. Настоятельно рекомендую с ними ознакомиться, прежде чем обновляться. Обязательно сначала прочитайте всю статью, только потом начинайте обновление. По ходу дела будут важные замечания.
Второй момент. В этой версии очень много изменений, как в настройках, так и в интерфейсе. Обновлять без подготовки не рекомендую. Если у вас несколько серверов, начните с самого простого. Если же только один, то настоятельно рекомендую сделать его копию и проверить обновление на ней.
Еще один момент, который я упускал, когда обновлялся со старых версий Zabbix. В новых версиях часто обновляются стандартные шаблоны, но вы их не увидите при обновлении. У вас останутся работать старые версии. Новые нужно вручную переносить из свежих установок и подключать к хостам.
С одной стороны это плюс, так как шаблоны зачастую меняются очень сильно. Нужен ручной контроль. А с другой стороны неудобно вручную обновлять все шаблоны, которые еще и зависимости свои имеют. Рассмотрю все эти моменты по ходу дела. Приступаем к обновлению сервера мониторинг Zabbix версии 4.4 до 5.0.
Важный нюанс. Минимальные системные требования к версии php для Zabbix 5 — 7.2 Так что прежде чем обновлять сам сервер мониторинга, убедитесь, что у вас стоит подходящая версия php.
Архитектура Zabbix
У Zabbix есть 4 основных инструмента, с помощью которых можно мониторить определенную рабочую среду и собирать о ней полный пакет данных для оптимизации работы.
- Сервер — ядро, хранящее в себе все данные системы, включая статистические, оперативные и конфигурацию. Дистанционно управляет сетевыми сервисами, оповещает администратора о существующих проблемах с оборудованием, находящимся под наблюдением.
- Прокси — сервис, собирающий данные о доступности и производительности устройств, который работает от имени сервера. Все собранные данные сохраняются в буфер и загружаются на сервер. Нужен для распределения нагрузки на сервер. Благодаря этому процессу можно уменьшить нагрузку на процессор и жесткий диск. Для работы прокси Zabbix отдельно нужна база данных.
- Агент — программа (демон), которая активно мониторит и собирает статистику работы локальных ресурсов (накопители, оперативная память, процессор и др.) и приложений.
- Веб-интерфейс — является частью сервера системы и требует для работы веб-сервер. Часто запускается на том же физическом узле, что и Zabbix.
Низкоуровневое обнаружение (Low Level Discovery)
На начальном этапе развития системы все просто. Есть от двух до десяти серверов, и все настройки можно проставить вручную. А как быть, когда система постепенно, но неумолимо растет? Когда серверов уже не десять, а пятьдесят или сто? Справиться как раз и помогает механизм Low Level Discovery.
Низкоуровневое обнаружение (я буду сокращать до LLD) дает возможность автоматизировать создание метрик (элементов данных), хостов, триггеров и графиков для разных объектов в системе мониторинга. Как пример можно привести мониторинг файловых систем и разделов в Linux — низкоуровневое обнаружение уже идет в поставке Zabbix для этой ОС. Делать тут ничего не надо, достаточно завести нужные хосты в группу, и все.
Мониторинг сетевых интерфейсов в Zabbix — это тоже низкоуровневые обнаружения. Кстати, можно настроить автоматическое удаление объектов из мониторинга по результатам проводимых обнаружений. И администратор может определить собственные типы обнаружения — достаточно описать их в виде файла JSON.
Но вернемся к обещанной истории из практики. Работал со мной один коллега, начинающий администратор. Ему дали задачу: завести под мониторинг около 270 объектов в Zabbix и настроить по ним триггеры. Казалось бы, все просто. В тот же день спрашиваю его: «Ну как, успел завести, сколько осталось? Готовы ли триггеры?» В ответ слышу: «Сегодня заведу метрики! А завтра сделаю триггеры!»
Задачу при этом нужно было закрыть в тот же день и отчитаться перед начальством. Как оказалось, коллега делал эти объекты вручную по одному. Сказать, что я опешил, — ничего не сказать. Спросил его про LLD, и выяснилось, что он даже не знал о существовании такой вещи. После небольшого экскурса мы закрыли задачу за час вместо двух дней ручной работы.
Шаг 2 — Подключение официального репозитория Zabbix и исправление ошибок:)
В этом руководстве я буду объяснить, как установить сервер Zabbix в системе Ubuntu 20.04 LTS.
Zabbix доступен в репозиториях пакетов Ubuntu, но я рекомендую использовать официальный репозиторий Zabbix. Для подключения официальных репозиториев вам нужно перейти на страницу загрузки Zabbix и выбрать вашу конфигурацию. Моя конфигурация на скриншоте:
После выбора конфигурации — ниже появятся команды для подключения репозитория, в моем случае такие:
# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb # dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb # apt update
И здесь бабамс!!! Получаем ошибку: N: Skipping acquire of configured file ‘main/binary-i386/Packages’ as repository ‘http://repo.zabbix.com/zabbix/ /ubuntu InRelease’ doesn’t support architecture ‘i386’
Самое интересное изучил штук 7 руководств по установке Zabbix на Ubuntu и нигде такой ошибки нет! Вопрос, а кто в интернете пишет эти руководства, на том же digitalocean и других гуру администрирования, это копипаст какой-то?!! Ладно как всегда иду на новозеландские англоязычные форумы и нахожу ответ не по Заббиксу, но решение проблемы понятно. Кому интересно это связано с мультиархитектурностью ядра Linux и поддержкой одновременно приложений i386 и amd64. Ниже команды для анализа вашего сервера по поддержке 32 и 64:
root@zab:/# dpkg --print-foreign-architectures i386 root@zab:/# dpkg --print-architecture amd64
Вот команда для удаления мульти-архитектуры (только если у вас нет 32-битных приложений), но запускать ее не надо. Я ее указал просто для полного раскрытие этой ошибки.
sudo dpkg --remove-architecture i386
РЕШЕНИЕ: Правим файл /etc/apt/sources.list.d/zabbix.list и добавляем опцию . Мой измененный файл:
deb arch=amd64 https//repo.zabbix.com/zabbix/6.0/ubuntu focal main deb-src arch=amd64 https//repo.zabbix.com/zabbix/6.0/ubuntu focal main
И снова запускаем
# apt update
Всё, ошибки нет!
Идентификация ОС. Версия 1.
Задача носит больше академический интерес, так как информацию по операционным системам хостов проще и логичнее собрать средствами оркестровки типа ansible, что я обычно и делаю. Но Zabbix сервер так же не лыком шит и умеет отображать нужные элементы (items) у множества хостов в одном окне, что быстро и удобно.
В системе есть файл /etc/os-release, в котором много полезной информации в виде ключ=значение. Полное его описание лучше прочесть в os-release — Operating system identification.
Самое важное что нужно понять, значения могут быть без кавычек, а могут быть в двойных или одинарных, если в значении есть символы за пределами диапазона английских букв и цифр. Variable assignment values must be enclosed in double or single quotes if they include spaces, semicolons or other special characters outside of A-Z, a-z, 0-9.. Вот небольшой пример из мира Дебиан
PRETTY_NAME=»Debian GNU/Linux 10 (buster)»
VERSION_CODENAME=buster
ID=debian
Вот небольшой пример из мира Дебиан
PRETTY_NAME=»Debian GNU/Linux 10 (buster)»
VERSION_CODENAME=buster
ID=debian
У нас есть файл /etc/os-release, который хотелось бы прочесть стандартными средствами Zabbix агента и сразу превратить их в соответствующие элементы. Начал изучение вопроса с документации Zabbix и наткнулся на
vfs.file.regexp
Самое главное, что vfs.file.regexp в качестве возвращаемого значения отдаёт совпадающую подстроку. То что нужно! Но помните поговорку? Если у вас есть проблема и вам пришла в голову идея, что можно решить её с помощью регулярных выражений, то теперь у вас две проблемы.
Потянулись часы на онлайн ресурсах, которые помогают создавать зубодробительные PCRE конструкции, которые перестаёшь понимать после внедрения. Удалось с помощью Гугла и такой-то матери родить набор знаков, извлекающее нужное значение в различных вариантах — без кавычек, с одинарными или двойными.
Пример для извлечения значения для ключа PRETTY_NAME. В круглых скобках можно видеть группы: первая и третья извлекают кавычки, если они есть, а вторая — собственно значение.
^PRETTY_NAME=(?P<quote>?)(?P<value>*?)(?P=quote)($|\s)
Создал тестовый элемент у одного хоста и влепил в виде ключа
vfs.file.regexp[«/etc/os-release»,»^PRETTY_NAME=(?P<quote>?)(?P<value>*?)(?P=quote)($|\s)»,,,,\2]
Комментарии к шаблону:
- Требования к шаблонам и обязательным элементам внутри разнятся от версии к версии Zabbix, поэтому с прицелом на будущее всё заточил под 5+ версию. Если у вас Zabbix ещё не того калибра, то уже самостоятельно конвертируйте шаблон в нужное вам.
- Ключей в /etc/os-release много и много дистроспецифичных. Выбрал некоторые и общие.
- Информация в /etc/os-release может меняться только при обновлениях системы. Например, Убунту при прохождении новых релизных точек (milestones) может отобразить этот факт в виде строки Ubuntu 18.04.5 LTS, а «завтра» Ubuntu 18.04.6 LTS. Частота опроса выставлена в 1 день (1d).
- Неявно ожидается что для хостов вы используете стандартный шаблон Template OS Linux, который даёт раздел OS. Данные шаблона Template_OSI.xml так же можно найти в разделе OS.
Проверки
Для описания системы мониторинга Zabbix существует два ключевых понятия:
- Узлы сети — рабочие устройства и их группы (серверы, рабочие станции, коммутаторы), которые необходимо проверять. С создания и настойки узлов сети обычно начинается практическая работа с Zabbix.
- Элементы данных — набор самостоятельных метрик, по которым происходит сбор данных с узлов сети. Настройка элементов данных производится на вкладке «Элемент данных» или в автоматическом режиме — через подключение шаблона.
Сам Zabbix-агент способен отражать текущее состояние физического сервера, собирая совокупность данных. У него достаточно много метрик. С их помощью можно проверить загруженность ядра (Processor load), время ожидания ресурсов (CPU iowait time), объем системы подкачки (Total swap space) и многое другое.
В Zabbix существует целых 17 способов, дающих возможность собирать информацию. Указанные ниже, входят в число наиболее часто применяемых.
- Zabbix agent (Zabbix-агент) — сервер собирает информацию у агента самостоятельно, подключаясь по определенному интервалу.
- Simple check (Простые проверки) — простые операции, в том числе пинг.
- Zabbix trapper (Zabbix-траппер) — сбор информации с трапперов, представляющих собой мосты между используемыми сервисами и самой системой.
- Zabbix aggregate (Zabbix-комплекс) — процесс, предусматривающий сбор совокупной информации из базы данных.
- SSH agent (SSH-агент) — система подключается по SSH, использует указанные команды.
- Calculate (Вычисление) — проверки, которые система производит, сопоставляя имеющиеся данные, в том числе после предыдущих сборов.
У проверок есть заданные шаблоны (Templates), которые упрощают создание новых. Кроме обычных операций существует возможность регулярно проверять доступность веб-сервера с помощью имитации запросов браузера.
Проверка через пользовательский параметр
Чтобы выполнить проверку через агент, нужно прописать соответствующую команду в конфигурационный файл Zabbix-агента в качестве пользовательского параметра (UserParameter). Сделать это можно с помощью выражения следующего вида:
UserParameter=<ключ>,<команда>
Помимо самой команды, приведенный синтаксис содержит уникальный (в пределах узла сети) ключ элемента данных, который надо придумать самостоятельно и сохранить. В дальнейшем, ключ можно использовать для ссылки на команду, внесенную в пользовательский параметр, при создании элемента данных.
Пример
UserParameter=ping,echo 1
С помощью данной команды можно настроить агент на постоянное возвращение значения «1» для элемента данных с ключем «ping».
Основные изменения в интерфейсе Zabbix 5.0
Я потратил некоторое время, пока искал привычные настройки на новых местах. Чтобы сэкономить вам время, дам несколько подсказок.
Web проверки и графики теперь живут в разделе Узлы сети.
Я долго искал web проверки и перепугался, не убрали ли их совсем из системы. Для меня это очень актуальный функционал. С его помощью настроен мониторинг сайтов.
Для того, чтобы посмотреть на одном экране набор произвольных графиков хотса, надо перейти в Узлы сети, открыть графики конкретного хоста. Затем перейти в Фильтр и там выбрать необходимые графики. Стало удобно.
Раньше, чтобы быстро посмотреть несколько графиков на одном экране, надо было их собирать в дашборд или комплексный экран. Теперь можно без проблем вывести в три клика все, что надо. Жаль, что сами графики так и остались старыми. Выглядят они ужасно
Настройка шаблонов оповещений теперь находится в способах оповещений. Все старые шаблоны, что были в действиях, удалены. Так что сохраняйте их перед обновлением.
Вот подтверждение того, что несмотря на обновление zabbix server до 5.0, шаблон остался старый.
В новом шаблоне этого триггера уже нет. Так что добавлять в систему и обновлять шаблоны у хостов придется вручную. Я уже немного занимался этим еще в версии 4.4 и могу сказать, что это хлопотно. В новых шаблонах больше данных и триггеров, которые не всегда и не везде нужны. Надо внимательно все смотреть и отключать не нужное. А так же редактировать некоторые триггеры под свои нужды.
С другой стороны, если вас старые шаблоны полностью устраивают, то и менять их не обязательно. Я скорее всего на старых установках так и оставлю старые шаблоны, а в новых буду использовать новые. Потом сделаю какую-то универсальную компиляцию для себя из того, что нужно конкретно мне.
Установка обновления zabbix 4.4 до 5.0
Centos 8
Устанавливаем само обновление zabbix на сервер Centos следующей командой:
Это список пакетов заббикса для общего случая. Если у вас установлено что-то еще, лучше обновить все сразу. Посмотреть список установленных пакетов zabbix можно командой:
В приведенном примере есть еще пакеты zabbix-get и zabbix-sender. Обновляем все сразу:
Centos 7
В Centos 7 обновить Zabbix с 4-й вертки на 5-ю может оказать не такой простой задачей. Связано это с тем, что необходима версия php 7.2, в ее в базовых репозиториях Centos 7 нет. Необходимо подключать репозиторий centos-release-scl и ставить пакеты из него. Но просто так взять и поставить не получится, будет конфликт с текущими версиями пакетов. Так что нужно аккуратно что-то удалить, а что-то добавить. Действуем аккуратно и внимательно.
Удаляем старые пакеты, которые будут заменены при обновлении:
# yum remove zabbix-web-*
Подключаем репозиторий centos-release-scl:
# yum install centos-release-scl
Редактируем файл /etc/yum.repos.d/zabbix.repo, разрешая обновляться пакетам из zabbix-frontend. Не забудьте проверить, что у вас подключился репозиторий от 5-й версии.
name=Zabbix Official Repository frontend - $basearchbaseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontendenabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
Устанавливаем новые пакеты:
# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
Обновляем существующие:
# yum update zabbix-*
Теперь убедитесь, что у вас активирован новый конфиг zabbix для apache. У вас должен быть файл /etc/httpd/conf.d/zabbix.conf, а в нем следующая строка:
SetHandler "proxy:unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock|fcgi://localhost"
Она отвечает за использования новой версии php 7.2 из пакета php-fpm. Перезапускаем все службы:
# systemctl restart zabbix-server httpd# systemctl enable --now rh-php72-php-fpm
После этого у вас должно корректно пройти обновление zabbix на 5-ю версию в Centos 7.
Debian / Ubuntu
Устанавливаем само обновление zabbix на сервер с Debian или Ubuntu следующей командой:
Дальше инструкция общая для всех систем. После завершения обновления, запускаем сервер:
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
В логах агента и сервера можно посмотреть версию запущенных сервисов.
Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx, в том случае, если веб сервер работает от него. После обновления он будет принадлежать apache, а web интерфейс не заработает.
Можете лицезреть обновленную версию web интерфейса.
Сначала провел обновление на небольшом сервере. У меня весь процесс прошел без ошибок и накладок. Новый интерфейс сразу заработал.
2015: Zabbix 3.0
В релизе Zabbix 3.0, запланированном на осень 2015 года, планируется реализовать концепцию «приоритет на стороне интерфейса»: создать более удобный и современный минималистический интерфейс для широких экранов, собственные пользовательские страницы, первые версии виджетов и дашбордов. Кроме того, появится встроенная поддержка «сильного» шифрования и аутентификации (TLS, PSK, OpenSSL, GnuTLS, Polar SSL), будет внедрен новый вид макросов — контекстные. В числе анонсированных улучшений также – гибкое выполнение проверок (может использоваться как чек-лист готовности бизнес-систем к работе), аутентификация для SMTP, версионность XML, улучшение мониторинга лог-файлов, расширенная поддержка ODBC, baseline-мониторинг (обнаружение аномалий и работа с тенденциями).
Основные направления улучшений:
- web-интерфейс (ориентированная на объекты мониторинга навигация, связность информации, скорость работы на больших инсталляциях);
- API (перемещение API на сторону сервера, ускорение работы API как минимум в 10 раз, переработка механизма уведомления об ошибках);
- визуализация (у системы отличный back-end, и front-end необоходимо довести до такого же уровня);
- отчетность (улучшение визуализации данных, гибкие настройки аналитики, повышение скорости отклика системы при формировании отчетности в режиме реального времени на любом объеме данных);
- развитие архитектуры (горизонтальная масштабируемость на уровне хранилища, встроенные средства обеспечения доступности и отказоустойчивости, «новый» распределенный мониторинг, отделение операционной части системы от исторических данных.
Шаг 8 — Настройка уведомлений по электронной почте
Zabbix автоматически поддерживает несколько типов уведомлений: по электронной почте, в OTRS, Slack, Telegram, СМС и т. д. Весь список совместимости можно увидеть на веб-сайте Zabbix.
В качестве примера в этом обучающем модуле мы настроим уведомления по электронной почте.
Настройте опции SMTP в соответствии с настройками, предоставленными вашей почтовой службой. В этом обучающем модуле используются возможности SMTP почтовой службы Gmail. При необходимости дополнительной информации об этой настройке см. Использование сервера SMTP Google.
Примечание. Если вы используете двухэтапную аутентификацию для Gmail, необходимо сгенерировать пароль приложения для Zabbix. Пароль приложения вводится только один раз во время установки. Инструкции по генерированию этого пароля можно получить в Справочном центре Google.
На вкладке Message templates (Шаблоны сообщений) вы увидите список стандартных сообщений для различных типов уведомлений. Наконец, нажмите кнопку Update (Обновить) внизу формы для обновления параметров электронной почты.
Теперь вы можете протестировать отправку уведомлений. Для этого нажмите на подчеркнутую ссылку Test (Тестирование) в соответствующей строке.
Вы увидите всплывающее окно. Введите свой адрес электронной в поле Send to (Отправить) и нажмите кнопку Test Тестирование. Вы увидите сообщение об успешной отправке и получите тестовое сообщение.
Закройте всплывающее окно, нажав кнопку Cancel (Отмена).
Теперь создайте нового пользователя. Нажмите Administration (Управление), а затем Users (Пользователи) на левой панели навигации. Вы увидите список пользователей. Затем нажмите кнопку Create user (Создать пользователя) в верхнем правом углу экрана. Откроется страница настройки пользователя:
Введите новое имя пользователя в поле Alias (Псевдоним) и установите новый пароль. Затем добавьте пользователя в группу администратора. Введите в поле Groups (Группы) и выберите его из предложенного списка.
После добавления группы нажмите на вкладку Media (Средство связи) и нажмите на подчеркнутую ссылку Add (не на кнопку Add (Добавить) под ней). Вы увидите всплывающее окно.
Теперь перейдите на вкладку Permissions (Разрешения). Выберите Zabbix Super Admin (Суперадминистратор Zabbix) из выпадающего меню поля User type (Тип пользователя).
Наконец, нажмите кнопку Add (Добавить) внизу формы для создания пользователя.
Примечание. Использование пароля по умолчанию небезопасно. Чтобы изменить пароль встроенного пользователя Admin (Администратор), нажмите на псевдоним в списке пользователей. Затем нажмите Change password (Изменить пароль), введите новый пароль и подтвердите изменения, нажав на кнопку Update (Обновить).
Теперь необходимо включить уведомления. Нажмите на вкладку Configuration (Настройка), а затем Actions (Действия) на левой панели навигации. Вы увидите предварительно настроенное действие, отвечающее за отправку уведомлений всем администраторам Zabbix. Вы можете проверять и менять настройки, нажимая на названия. Для целей данного обучающего модуля используйте параметры по умолчанию. Чтобы активировать действие, нажмите на красную ссылку Disabled (Отключено) в столбце Status (Статус).
Теперь вы готовы получать оповещения. В следующем шаге вы сгенерируете одно для тестирования настройки уведомлений.
Апгрейд Zabbix Server и Zabbix Frontend
Команды для Debian 10
Удаляем старый репозиторий, чтобы установить новый
(Reading database … 42376 files and directories currently installed.)Removing zabbix-release (1:5.2-1+debian10) …Purging configuration files for zabbix-release (1:5.2-1+debian10) …
Обновляем Zabbix и на вопрос что делать с конфигурацией нажимаем enter чтобы сохранить текущую конфигурацию, заодно обновим установленные у нас пакеты zabbix-agent и zabbix-get:
Команды для Ubuntu 20.04, 18.04 на всякий случай
Удаляем старый репозиторий, чтобы установить новый
Обновляем Zabbix и на вопрос что делать с конфигурацией нажимаем enter чтобы сохранить текущую конфигурацию. Также у нас установлены пакеты zabbix-get и zabbix-agent, обновим и их:
Что нового в Zabbix 5.2?
Все нововведения свежей версии Zabbix 5.2 вы можете прочитать в официальном релизе – https://www.zabbix.com/ru/release_notes. Я среди них выделил следующие:
- Появился новый тип элемента данных – script. С его помощью можно существенно расширить возможности мониторинга. Например, при наблюдении за микросервисами и приложениями. Отрадно видеть такие изменения. Явно видно, что Zabbix старается идти в ногу со временем.
- Комплексные экраны полностью заменяются дашбордами. Их теперь можно будет создавать в шаблонах (наконец-то). Существующие экраны будут трансформированы в дашборды автоматически.
- Появились новые функции триггеров для работы с историческими данными. В документации еще не вижу подробностей. На одном из скринов видел функцию trendavg. Надо ждать обновление доков с подробностями использования.
- Улучшили ролевую модель прав пользователей для гранулярного управления правами. Не понял, о чем речь, не разбирался еще. Думаю, просто более гибко можно настраивать права на объекты и элементы мониторинга.
- Появились готовые шаблоны для мониторинга Asterisk, DB Oracle, Ceph, Squid, Php-fpm. Многие костыли, которые я городил много лет для мониторинга всех этих программ, становятся не актуальными. Напоминаю, что чуть раньше появился шаблон для мониторинга mssql server.
- Появилась встроенная поддержка протокола modbus. Я как раз недавно настраивал подобное. Для этого требовалась компиляция и установка внешнего модуля. Теперь все работает из коробки.
- В качестве стандартного формата для шаблонов становится YAML вместо XML.
- Настройки языка и часового пояса вынесли наконец-то в веб интерфейс. Их можно глобально указать во время установки сервера или отдельно в настройках пользователя.
- Теперь хосты можно создавать вообще без указания интерфейса и адреса на нем. Раньше приходилось указывать какой-то несуществующий адрес, если у вас был чисто технический хост, например, с http агентом, который сам по себе может собирать данные.
Ну и много других более мелких изменений. Я пробежался глазами по release_notes и перевел то, что показалось наиболее интересным. Еще наконец-то починили баг в Latest Data с отображением списков.
В общем, Zabbix не стоит на месте, развивается. Свою нишу в мониторинге удерживает твердо. Если кто-то не читал мою статью про сравнение Zabbix vs Prometheus, можете ознакомиться. Описал своими словами отличия.
Так же рекомендую мою статью по установке и настройке Zabbix 5. Там я разбираю различные варианты установки, выполняю первоначальную настройку и делюсь своим опытом эксплуатации данной системы мониторинга.
Использование скриптов на сервере
На сервере Zabbix мы можем создать два типа скриптов:
- Для получения данных через веб-интерфейс Zabbix. Они создаются в разделе ‘Scripts’;
- Для использования в качестве ключей. Файлы со скриптами добавляются в одну из папок Zabbix.
Выполняем скрипт в веб-интерфейсе Zabbix
На некоторых страницах Zabbix (например картах), если нажать на название хоста, может появится меню с выбором скриптов для запуска. Они выглядят примерно так:
Подобные скрипты можно создать в разделе ‘Administration’-‘Scripts’:
Скрипты, которые будут запускаться на Linux, должны иметь Powershell (который не установлен по умолчанию). Кроме этого названия команд, в версиях 5.1. и 7, могут иметь один вид, но разные ключи. Такое же отличие есть в версиях Linux и Windows.
Так, например, мы проверим доступность хоста на Linux:
На Windows, если у вас установлен Powershell 7, эта команда сработает так же.
На версиях Powershell 5.1, что бы проверить порт, вам нужно использовать следующую команду (она не доступна на Linux):
Т.е. создавая скрипты в этом разделе вы должны понимать на каких ОС они будут запускаться.
Вы так же должны определится, где эти скрипты будут выполняться:
- на сервере;
- на хосту (агенте);
- на прокси сервере.
Для примера создадим скрипт, который будет проверять 80 порт выбранного хоста:
В Zabbix так же существуют системные переменные. Одна из таких переменных — ‘{HOST.CONN}’ хранит адрес хоста. Запуская скрипт Zabbix автоматически заменяет ‘{HOST.CONN}’ значением, которое указано у хоста. Таких переменных много. Кроме этого вы можете создавать их сами.
Так как пример выше запускается на сервере, вам нужно проверять работу скрипта только на одном хосту. Если бы вы выполняли этот скрипт на ‘Zabbix agent’ — это пришлось бы дополнительно обдумывать.
Такие скрипты можно упорядочить в дополнительные меню изменив название ‘Проверка 80 порта’ на ‘Windows/Проверка 80 порта/’. Например:
В случае ошибок с выбором ‘Zabbix Agent’ — попробуйте включить настройку ‘system.run’, которая описана выше. В случае ошибок с выбором ‘Zabbix Server’ — попробуйте выдать повышенные права пользователю zabbix.
Скрипты в качестве ключей
Мы можем создать на сервере скрипт, который можно будет использовать в Item, Item Prototype и Discovery Host. Скрипт так же будет запускаться с сервера. Для этого существует отдельная директория, которую можно увидеть так:
Эта директория может быть еще не создана. Так вы можете это исправить:
Внутри этой директории мы создаем файл со скриптом. В примере ниже скрипт называется ‘site_status.ps1’, который просто возвращает HTTP статус:
Далее мы можем использовать название скрипта в качестве ключа при работе с Item и другими типами. Например так:
Хороший пример, где это может пригодится — принтеры и картриджи. Принтер может не иметь каких либо интерфейсов кроме HTTP. Вы можете парсить данные с помощью Powershell и добавлять в Zabbix.
Пример, который я сделал для видео:
…
Рекомендую
Валидация собранных данных и обработка ошибок
Никто из нас не хочет собирать ошибочные или недостоверные данные. Например, мы знаем, что датчик температуры должен возвращать данные в диапазоне от 0°C до 100°C и любое другое значение должно рассматриваться как ошибочное и/или игнорироваться.
Сейчас это возможно с помощью встроенных в препроцессинг правил валидации данных по соответствию или отсутствию соответствия регулярным выражениям, диапазону значений, JSONPath и XMLPath.
Теперь мы можем управлять реакцией на ошибку. Если температура вне диапазона, то мы можем просто проигнорировать такое значение, задать значение по умолчанию (например, 0°C ), либо определить своё собственное сообщение об ошибке, например, «Датчик повреждён» или «Замените батарейку.»
Хорошим примером использования валидации является возможность проверки входных данных на присутствие сообщения об ошибке и установки этой ошибки для всей метрики. Это очень полезная функциональность при получении данных из внешних API.
Шаг 7 — Добавление нового хоста на сервер Zabbix
Установка агента на сервер, который вы хотите отслеживать, составляет только половину процесса. Каждый хост, который вы хотите отслеживать, должен быть зарегистрирован на сервере Zabbix, что вы можете сделать через веб-интерфейс.
Войдите в веб-интерфейс сервера Zabbix, перейдя по адресу или :
После того, как вы выполните вход, нажмите Configuration (Настройка), затем Hosts (Хосты) на левой панели управления. Затем нажмите кнопку Create host (Создать хост) в верхнем правом углу экрана. Откроется страница настройки хоста.
Настройте Имя хоста и IP-адрес, чтобы они отображали имя хоста и IP-адрес вашего второго сервера Ubuntu, а затем добавьте хост в группу. Вы можете выбрать существующую группу, например серверы Linux, или создать собственную группу. Хост может быть в нескольких группах. Для этого введите имя существующей или новой группы в поле Groups (Группы) и выберите желаемое значение из предлагаемого списка.
Перед тем как добавить группу, нажмите на вкладку Templates.
Введите в поле Search (Поиск) и затем выберите его из списка, чтобы добавить этот шаблон в хост.
Затем перейдите на вкладку Encryption (Шифрование). Выберите PSK для Connections to host (Входящие соединения на хост) и Connections from host (Исходящие соединения от хоста). Затем установите в PSK identity (Идентификация PSK) настройку , которая является значением настройки TLSPSKIdentity агента Zabbix, настроенного ранее. Затем установите значение PSK для ключа, который вы сгенерировали для агента Zabbix. Он хранится в файле на компьютере агента.
Наконец, нажмите кнопку Add (Добавить) внизу формы для создания хоста.
Вы увидите новый хост в списке. Подождите минуту и перезагрузите страницу, чтобы появились зеленые отметки, указывающие, что все работает хорошо и соединение зашифровано.
Если у вас есть еще серверы для мониторинга, войдите в каждый хост, установите агент Zabbix, сгенерируйте PSK, настройте агент и добавьте хост в веб-интерфейс, выполнив те же действия, что и при добавлении первого хоста.
Сервер Zabbix теперь отслеживает ваш второй сервер Ubuntu. Теперь настройте уведомления по электронной почте, чтобы знать о возникновении проблем.