Содержание статьи
Обычно для сбора статистики приходится разворачивать что‑то большое и громоздкое, вроде Zabbix, Nagios или Icinga. Для них еще нужны базы данных, постоянный публичный доступ с белым IP и вычислительные мощности, которые можно было бы потратить на что‑нибудь другое. Обслуживание подобных продуктов тоже порой оказывается весьма затратным.
Но что делать, если нужен просто мониторинг без энтерпрайзных решений, но с широкими возможностями? При этом хорошо бы не заниматься поддержкой, миграциями, обновлениями, заменой комплектующих и прочими ресурсозатратными вещами? Специально для решения именно этой практической задачи существует агент Netdata. Постараюсь рассказать о возможностях Netdata и о тех функциях, которые я использую в своих проектах. В статье мы рассмотрим установку агента Netdata на примере Rocky Linux.
О netdata
Netdata — это агент, который предназначен для развертывания на физических и виртуальных серверах, в контейнерах, на IoT-устройствах. Он работает в Linux, FreeBSD, macOS, Kubernetes, Docker, LXC, LXD, Xen и прочих.
Агент Netdata отслеживает большое количество показателей системы. Функциональность расширяется готовыми плагинами. Есть хорошо составленное руководство, как писать собственные кастомизированные дополнения. Если раньше при создании плагинов предпочтение отдавалось Python, то теперь разработчики переходят на язык Go (Golang). Поддержку Python никто не отменяет, кроме того, агент умеет работать с плагинами на Bash и Node.js.
Netdata использует файлы из procfs для базового мониторинга системы. После запуска агента стартуют плагины, которые подключаются к мониторингу сервисов. Порты и методы мониторинга предопределены в конфигурации по умолчанию. Если сервисы для запускаемых плагинов недоступны или отсутствуют, их работа прекратится, но это не приведет к остановке или краху Netdata, как это происходит, например, с telegraf. Потребление ресурсов крайне невелико, ведь Netdata работает и на роутерах с OpenWRT.
Netdata «из коробки» поддерживает мониторинг внушительного списка сервисов. Это PostgreSQL, MySQL, Redis, RabbitMQ, MongoDB, OpenLDAP, SNMP, Apache, nginx и другие. Реализован сбор и агрегация метрик вплоть до одной секунды, имеются готовые триггеры событий для оповещений в /
. Агент собирает статистику потребления ресурсов по пользователям и сервисам (CPU, IO, RAM, network) с помощью apps.plugin. По умолчанию список состоит из наиболее распространенных сервисов, которые сгруппированы по категориям, и этот список может быть расширен. Имеется поддержка оповещений по триггерам с использованием следующих инструментов:
- alerta.io;
- Amazon Simple Notification Service;
- Discord;
- Dynatrace;
- Email;
- Flock;
- Google Hangouts;
- IRC;
- Kavenegar;
- Matrix;
- MessageBird;
- Microsoft Teams;
- Opsgenie;
- PagerDuty;
- Prowl;
- PushBullet;
- PushOver;
- Rocket.Chat;
- Slack;
- SMS Server Tools 3;
- StackPulse;
- Syslog;
- Telegram;
- Twilio;
- Dashboard (HTML-уведомления при открытой вкладке Netdata-агента в браузере).
Кроме того, существует возможность сбора и агрегации данных в Netdata Cloud, для доступа к данным статистики имеется специальный веб‑интерфейс. Также в Netdata Cloud отсутствуют следующие ограничения:
- на
Retention
(период хранения данных);Policy - на количество пользователей в организации;
- на количество нод, контейнеров, хостов;
- на количество администраторов;
- на уведомления (email, webhooks).
Конечно же, при предоставлении сервиса по бесплатной модели гарантий обеспечения доступности нет никаких, но сами разработчики утверждают: «Netdata Cloud возлагает на себя обязательства перед пользователями по обеспечению бесплатного и неограниченного мониторинга навсегда».
Подготовка к установке Netdata
В статье будет использована виртуальная машина с адресом 172.16.210.134. Чтобы у тебя, дорогой читатель, не возникло сложностей в процессе знакомства с Netdata при включенном SELinux в режиме enforcing, предлагаю его выключить. Начнем с обновления системы:
$ sudo yum update -y
Проверим текущий статус SELinux:
[
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
Теперь отключим SELinux и перезагрузим систему:
[
[
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
[
[
Наконец, проверим статус SELinux после перезагрузки:
[
Disabled[
SELinux status: disabled
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»