Воз­можно, у тебя есть сер­вер, роутер или еще какой‑то девайс, за работой которо­го нуж­но сле­дить. Как сде­лать сис­тему монито­рин­га, которая сама по себе не будет тре­бовать вни­мания и ресур­сов? Я рекомен­дую в таких слу­чаях исполь­зовать прос­той, а глав­ное — бес­плат­ный инс­тру­мент под наз­вани­ем Netdata. О его воз­можнос­тях я рас­ска­жу в этой статье.

Обыч­но для сбо­ра ста­тис­тики при­ходит­ся раз­ворачи­вать что‑то боль­шое и гро­моз­дкое, вро­де 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 и дру­гие. Реали­зован сбор и агре­гация мет­рик вплоть до одной секун­ды, име­ются готовые триг­геры событий для опо­веще­ний в /usr/lib/netdata/conf.d/health.d/. Агент собира­ет ста­тис­тику пот­ребле­ния ресур­сов по поль­зовате­лям и сер­висам (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:

[xakep@netdata ~]$ sestatus
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 и перезаг­рузим сис­тему:

[xakep@netdata ~]$ sudo setenforce 0

[xakep@netdata ~]$ sestatus
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

[xakep@netdata ~]$ sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[xakep@netdata ~]$ sudo reboot

На­конец, про­верим ста­тус SELinux пос­ле перезаг­рузки:

[xakep@netdata ~]$ getenforce
Disabled
[xakep@netdata ~]$ sestatus
SELinux status: disabled

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии