Zabbix: установка и базовая настройка системы мониторинга

Внимание!
Статья в процессе редактирования и может содержать ошибки.

Из чего состоит Zabbix и что он может?

Zabbix простой установке и настройке, написан на C (сервер, прокси и агент) и PHP (фронтенд). Zabbix Server и Zabbix Proxy может работать только на Linux системах. Агент можно установить на большом количестве поддерживаемых ОС и платформах.

Инсталляция Zabbix сервера состоит из:

  • бинарника zabbix_server (обычно работает как сервис);
  • MySQL (MariaDB)/PostgreSQL базы данных;
  • Веб сервера Apache2/Nginx с обработчиком PHP;
  • Файлов самого frontend сайта (.php, .js, .css и т.д.).

Обычно схема работы выглядит так:

  1. Агент Zabbix посылает данные на сервер
  2. (function(w, n) { w[n] = w[n] || []; w[n].push(function() { ({ blockId: «R-A-78675-2», renderTo: «yandex_rtb_R-A-78675-2″, async: false }); }); (»); })(this, «yandexContextSyncCallbacks»);

  3. Сервер Zabbix получает и обрабатывает данные.
  4. Если полученные данные подпадают под заданные условия, то срабатывает триггер;
  5. Активный триггер сигнализирует о проблеме. Отображается уведомление на фронтенде (сайте), и в зависимости от конфигурации рассылается сообщение по почте и выполняется какие-либо действия (например, перезапуск службы, которая мониторится).

Zabbix может работать со всеми известными протоколами, а благодаря системе внешних скриптов, Zabbix может выполнять и получать данные из любых исполняемых скриптов/бинарников.

Выбор компонентов

На этапе выбора рассматривались преимущественно free/opensource-компоненты, не требующие приобретения лицензий. Такие распространенные решения, как Zabbix, Nagios, Icinga и т. д., не произвели достаточного впечатления, чтобы на них останавливать свой выбор. В частности, собственные dashboards таких систем по гибкости и информативности ожидаемо отставали на фоне такого лидера, как Grafana. Популярный Zabbix в качестве database management system (DBMS) использовал SQL-базу, по умолчанию — MySQL (MariaDB), в данной роли неспособную конкурировать с точки зрения производительности и эффективности с какой-нибудь специализированной time series database (TSDB).

Всё в том же Zabbix, к примеру, нет возможности «из коробки» полноценно мониторить дисковые операции на хосте. К этим и другим актуальным метрикам часто необходимо добавлять сторонние плагины, что по ресурсоемкости развертывания из-за «допиливания напильником» приближает его к фреймворкам для мониторинга (Sensu), обладающим значительно большей гибкостью. Как итог, некоторые коробочные решения фактически таковыми не являются, теряя свое главное преимущество.

Выбор компонентов

Таким образом, отбросив монолитные решения, нужно было определиться с компонентами для нашей будущей модульной системы мониторинга. В частности, с агентами, которые будут собирать и передавать метрики. Первым был опробован telegraf, но он вызвал энтузиазма не больше, чем Zabbix, и захотелось посмотреть что-то другое. Этим другим в конечном итоге оказалась Netdata.

Читайте также:  Пользователи, Группы в Linux: создать, добавить, убрать

Почему именно Netdata? Ну, во-первых, это просто красиво. ©

Смотрите demo.

К тому же Netdata не только metric collector (по умолчанию выдающий сразу порядка ~1К метрик c хоста, обнаруживаемых через autodiscovery) с высокой детализацией (precision — 1 с), но и автономная система мониторинга, с собственной in-memory TSDB (разумеется, на крайне ограниченный период времени, по умолчанию это 1+ ч, тогда данные занимают порядка ~20MB RAM; дополнительно можно добиться ~60% экономии RAM при использовании механизма Memory Deduplication Kernel Same Page Merging или просто KSM, если активировать KSM в ядре Linux), визуализацией метрик и системой оповещений. И нет, при этом Netdata не требует для запуска никаких чудовищных ресурсов на хосте. Хотя у тех, кто работает с embedded/IoT с крайне ограниченными вычислительными ресурсами, возможно, будет и противоположное мнение, так что всё в этом мире относительно. Разработчики позиционируют Netdata, в частности, как «убийцу утилит консольного мониторинга».

Выбор компонентов

Имеется масса преднастроенных алертов, в том числе с использованием предсказания на основании трендов. Например, кроме классических на процент занятого места, учитывается disk fill rate, на основании которого высчитывается предполагаемый out of disk space time; если он менее 48 ч — warning alert, менее 24 ч — уровень повышается до critical alert.

В списке поддерживаемых ОС — исключительно Linux, FreeBSD и Mac OS. На текущий момент, вероятно, это самый большой недостаток Netdata. Но, с другой стороны, для других ОС всегда можно использовать просто другого агента. Оставалось только реализовать для Netdata централизованное долговременное хранение метрик, чем я дальше и занялся.

Инсталляция проприетарных и свободных драйверов

Установка драйверов на Linux способна снизить нагрузку на компьютер и сделать работу систему плавнее и более оптимизированной. В особенности это подойдёт для игр и редакторов трёхмерной графики. Далеко не всегда на отдельно взятую машину можно установить проприетарный драйвер. Иногда таковых нет или оборудование в силу своей неактуальности прекращает поддерживаться. Тут два выхода: продолжать пользоваться открытым ПО или думать о переходе на более старый LTS дистрибутив, для которого производители ещё выпустили программное обеспечение.

Нередко на старых машинах с ОС Debian бывает так, что даже открытые драйвера не устанавливаются. Это обычно связано с устареванием железа или с отсутствием нужных компонентов репозитории.

Добавление несвободных компонентов в систему:

$ deb «Кодовое имя дистрибутива» main contrib non-free

Обновление:

Инсталляция проприетарных и свободных драйверов

$ sudo apt update

$ sudo apt upgrade

Установка несвободной прошивки, OpenGL и пакета поддержки графики:

$ sudo apt install firmware-linux-nonfree libgl1-mesa-dri xserver-xorg-video-ati

После этого нужно перезагрузить систему.

Читайте также:  6 способов как скрыть партнерскую ссылку

Также есть и свободный графический драйвер для AMD Radeon «AMDGPU».  Его можно скачать с сайта производителя, выбрав нужный пакет.

Или установить из терминала. Сначала необходимо проверить систему на наличие данного пакета:

$ dpkg -l amdgpu-pro

Команды для обновления или чистой инсталляции:

$ wget -c —referer=’-ru/download/desktop?os=Linux+x86′

Инсталляция проприетарных и свободных драйверов

$ tar -Jxvf

$ -pro-install

$ sudo usermod -a -G video $LOGNAME

Используя старое оборудование, следует поставить драйвера Linux, которые последними были выпущены. Скорее всего, это будет Ubuntu или ещё более старая версия.

Nvidia

Установить драйвера в Linux для Nvidia легче. На официальном сайте есть целый запрос для компьютеров с различными архитектурами и моделями видеокарт. 

Также можно провести инсталляцию из официального репозитория. Проверка на наличие версий драйверов:

$ sudo apt update && clear && apt-cache search nvidia-[0-9] | grep ‘binary driver’

Установка:

$ sudo apt install nvidia-«Версия пакета» nvidia-«Настройки»

Инсталляция проприетарных и свободных драйверов

Создание конфига :

$ sudo nvidia-xconfig

Intel

У Intel нет проприетарного ПО, все драйверы имеют открытый исходный код и находятся внутри ядра Linux. То есть для пользователей ноутбуков и настольных ПК с процессором Intel и встроенным графическим ядром вообще не придётся думать о дополнительных настройках написано и на официальной странице: «Большинство Linux-дистрибутивов включают в себя графические драйверы Intel. Обратитесь к поставщику операционной системы и используйте их дистрибутив для доступа и поддержки драйверов». Другими словами производительность операционной системы на базе процессора Intel не зависит от несвободного ПО.

База данных временных рядов

Netdata способна собирать тысячи показателей на сервер в секунду, которые будут храниться в формате временных рядов. В настоящее время Netdata поддерживает 6 режимов памяти / хранения:

  • RAM — данные будут храниться в RAM с помощью mmap ()
  • SAVE — эта опция по умолчанию сохраняет данные в оперативной памяти, пока Netdata работает, и сохраняет их на диск при перезапуске / запуске сервиса.
  • MAP — этот режим позволяет Netdata записывать данные в оперативную память и немедленно обновлять эти данные в ядре Linux. Это будет работать так же, как и раздел Linux Swap.
  • NONE — без хранилища / базы данных собранные показатели будут напрямую переданы в другую инстанцию Netdata.
  • DBENGINE — сохраняет показатели данных в файле базы данных в качестве компонента database engine. Это единственный режим, поддерживающий изменение частоты обновления сбора данных без потери ранее сохраненных показателей.
  • ALLOC — сохраняет данные в оперативной памяти с помощью calloc ().

Галопом по Европам …

На этом мы завершаем нашу серию по укреплению и настройке вашей системы Ubuntu… Ну, во всяком случае, пока.

Читайте также:  Как создать базу данных mysql на хостинге

Как мы упоминали в начале этой серии, это руководство не является полным или комплексным подходом к обеспечению безопасности системы Linux. Есть много модификаций уровня ядра, которые пользователи могут выполнить для дальнейшего улучшения устойчивости Ubuntu к различным атакам. Можно предпринять определенные шаги, чтобы защитить загрузчик, обеспечить более эффективную политику паролей для входа в систему, защитить общую память, анонимно просматривать Интернет и многое другое.

Операционные системы Linux обладают невероятным потенциалом в качестве платформы для пользователей, ориентированных на безопасность. Мы рекомендуем пользователям Windows и Mac купить на Амазоне эту книгу про Ubuntu  и вот эту замечательную книгу по безопасности Linux, чтобы лучше понять операционную систему Ubuntu и то, как она работает.

Iptraf

Iptraf предназначен для мониторинга сетевой активности в режиме реального времени и ведение статистики сетевых интерфейсов. Показывает отдельные сетевые соединения и количество данных, передаваемых между ними. Для работы програмы требуются права root, есть поддержка логирования.

Работать с программой можно как в интерактивном режиме, за частую так оно и есть, так и в режиме запуска с определенными параметрами

Меню программы логичное и интуитивно понятное, особое внимание уделять интерфейсу не будем

Рассмотрим основные опции:

  • -i — Позволяет указать интерфейс для мониторинга, или указать опцию «all» для мониторинга всех адаптеров «iptraf -i all»;
  • -g — Мониторинг общей статистики интерфейсов;
  • -d — Подробный мониторинг определенного интерфейса;
  • -s — Подробный мониторинг активности по TCP/UDP протоколам, на определенном интерфейсе;
  • -z — Позволяет проводить сбор статистики количества пакетов по их размеру на указанном интерфейсе;
  • -l — Позволяет провести мониторинг локальной сети LAN определенного интерфейса или всех их «iptraf -i all»;
  • -t — Позволяет задать время работы программы в минутах. Не работает в интерактивном режиме;
  • -B — Отправляет весь вывод в /dev/null и выполнение происходит в фоне, полезно для скриптов. Работает вместе с ключами -i, -g, -d, -s, -z, или -l;
  • -L — Позволяет указать альтернативный файл журнала, указывать необходимо абсолютный путь. ;

«******** IP traffic monitor started ********»«******** IP traffic monitor stopped ********»Пример:

/home/igor/: