Vždy jsem chtěl jednoduchý, přehledný a dobře vypadající systém, který by mi ukazoval všechny možné udaje o mém počítači/serveru v průběhu času. Před pár dny jsem takový systém konečně našel. netdata je relativně nový program, který monitoruje všechny možné udaje o systému. Od vytížení procesoru, přenosové rychlosti disů, přes firewall až k dalším službám jako webserver nebo poštovní server. Více informací lze nalézt na GitHubu projektu.

netdata overview

Na údaje o našem serveru, na kterém běží náš GitLab a další služby se můžete podívat na adrese https://netdata.ok1kvk.cz.

Instalace

Netdata jsem instaloval na jeden z našich serverů, na kterém máme Fedoru 23. Uvedu tedy postup instalace pro tento systém, ale jelikož se instalace provádí pomocí univerzálního instalátoru, tak by měl fungovat i na jiných distribucích. Podrobnosti k instalaci naleznete na wiki projektu.

1) Instalace závislostí

sudo dnf install -y zlib-devel gcc make git autoconf autogen automake pkgconfig uuid libuuid-devel

2) Stažení zdrojového kódu

git clone https://github.com/firehol/netdata.git --depth=1
cd netdata

3) Instalace

./netdata-installer.sh

Konfigurace

Po nainstalování již lze bez dalšího nastavování netdata spustit:

netdata

V prohlížeči pak už jen stačí přejít na adresu http://127.0.0.1:19999/.

V mém případě již na portu 19999 běžela jiná služba, což se projevovalo tak, že se program odmítl spustit, protože se nepodařilo připojit na socket. Takže jsem v konfiguračním souboru /etc/netdata/netdata.conf nastavil port jiný:

[Global]
  port = 2324

Dále jsem přenastavil dobu, po kterou jsou uchovávána naměřená data. Defaultně je nastaveno ukládání jen na jednu hodinu, protože s delšími intevaly rostou nároky na paměť RAM. Více zde. Nastavil jsem 1 den, což by mělo přibližně znamenat 300 MB RAM.

[Global]
  history = 86400

Více nastavonání nebylo třeba, vše funguje samo od prvního spuštění. O dalších možnostech konfigurace si můžete přečíst zde

Nginx

Jako proxy a webový server používáme nginx. Takto může vypadat nastavení pro nginx a netdata. Toto nastavení vychází z tohoto návodu.

upstream backend
{
    # the netdata server
    server 127.0.0.1:2324;
    keepalive 64;
}

server
{
  listen *:80;
  listen [::]:80;
  server_name www.netdata.ok1kvk.cz netdata.ok1kvk.cz;
  return 301 https://netdata.ok1kvk.cz$request_uri;
}

server
{
    listen 443;
    listen [::]:443;
    charset utf-8;

    server_name netdata.ok1kvk.cz;

  ssl_certificate            /etc/letsencrypt/live/netdata.ok1kvk.cz/fullchain.pem;
  ssl_certificate_key     /etc/letsencrypt/live/netdata.ok1kvk.cz/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/netdata.ok1kvk.cz/fullchain.pem;

  include /etc/nginx/crypto.conf;

    location /
    {
    proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass http://backend;
      proxy_http_version 1.1;
      proxy_pass_request_headers on;
      proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Nainstalování systemd service

Pro pohodlné spouštění netdata a pro spouštění při startu je již v projektu připravená služba. Stačí jí tedy jen nakopírovat do správného adresáře:

cd netdata
sudo cp system/netdata.service /etc/systemd/system/

A poté již můžeme netdata jednoduše zapnout a nastavit pro souštění při startu systému:

sudo systemctl start netdata
sudo systemctl enable netdata

Závěr

Jako fandovi monitorování a sledování co nejvíce údajů se mi splnil sen, protože netdata pravdu splňuje většinu věcí, které jsem si představoval, že by takový systém měl umět. Nehledě na to, že se dají do grafů přidat další hodnoty například z venkovního čidla teploty, nebo podobných věcí a výsledné grafy se poté dají i vyjmout a vložit na jinou stránku, která vůbec nemusí souviset s netdata. Uvidíme, jaké další vlastnosti přinese vývoj, kterým si netdata prochází.