Obsah

Domácí server #4 - monitorování

Netdata + S.M.A.R.T. + NVMe a XCP-ng - protřepat, nemíchat :-)


Netdata

Rád bych věděl v při jakých teplotách pracují disky serveru, jaká je běžná zátěž CPU atd.. Monitoruji samotného hosta (dom0), proto to není taková legrace…
Na XENu tohle snad asi nešlo. Na XCP-ng je dostupný balík Netdata (viz web).

  • jde o řešení pro inteligentní sběr různých dat, jejich vyhodnocení a vykreslení
    • pro sběr se dnes používá Prometheus a pro vykreslení Grafana
    • vykreslovat metriky umí i Nextcloud widget Analytics (apps/dashboard)
    • ani jedno není třeba - Netdata umí svou práci rychle a s minimální zátěží hosta (nezapomínejme, jde o hypervisor)
  • velké množství metrik
  • alerty a triggry
  • dashboard si můžeme naklikat v Netdata Cloud, nebo si jej poslat přes Prometheus do Grafany (boha) nebo si napsat vlastní dashboard v html a vlepit to do jakékoli vlastní stránky
  • Netdata je hostován lokálně, není se třeba nikam registrovat a anonymní statistiky lze vypnout
  • Netdata umí sbírat data z různých strojů a přes Cloud je spravovat najednou a odkudkoli. To samé platí lze i bez Cloudu pomocí vlastního dashboardu…
  • projekt je vedený na GITu a je výborně dokumentovaný

Instalace

yum install netdata-ui
  • po odsouhlasení nainstaluje balíky netdata a netdata-ui (webové rozhraní)
  • od té chvíle je web dostupný na http://ip_serveru:19999
  • na XCP-ng 8.2.1 se nainstaluje verze z roku 2019 - 1.19.0 :-(

SSL

Pokud chci SSL / jiný port, pak musím upravit konfiguraci (bacha VIM):

# konfigurace netdata webserveru
cd /etc/netdata
./edit-config netdata.conf
 
# doplněním cest k certifikátům automaticky poběží SSL (https)
# další volbou omezíme přístup k Netdata jen na localhost a vybranou část sítě
..
[web]
    ssl key = /etc/netdata/ssl/key.pem
    ssl certificate = /etc/netdata/ssl/cert.pem
 
    allow connections from = localhost 192.168.8.*
..
 
# po editaci konfigurace je třeba restartovat službu nedata
systemctl restart netdata

S.M.A.R.T.

V základu chybí monitorování disků (pro mě především jejich teplot). Netdata umí:

  • hddtemp - načítá teploty disků ze SMARTu; na XCP-ng jej nerozběhnu
  • smartmontools - obecná diagnostika SMART, na XCP-ng je nainstalována

Návod na rozběhnutí smartmontools v Netdata je zde. Na XCP-ng se ale cesty trochu liší…

Logování smartmontools démona do souborů:

# nejprve vytvoříme adresář pro logy
mkdir /var/log/smartd
 
# na XCP-ng je konfigurace služby jinde
nano /etc/sysconfig/smartmontools
 
# zde jsem nechal původní volby (démon smartd skončí jen při kritické chybě)
..
smartd_opts="-q never -A /var/log/smartd/ -i 600"
..
 
# restart smartd služby
systemctl restart smartd
 
# kontrola, že smartd vytvořil logy (pro každé zařízení jeden .csv soubor)
ls -l /var/log/smartd/

Zapnutí smartd modulu v netdata (pozor - zase VIM…):

cd /etc/netdata
./edit-config python.d/smartd_log.conf
 
# tady přidáme na konec sekce JOBS smartd modul:
..
custom:
  name: srv2
  log_path: '/var/log/smartd/'
..
 
# pak stačí jen restartovat netdata
systemctl restart netdata

Nakonec se nám statistiky S.M.A.R.T. objeví v levém menu:


NVMe

Monitoring disků bychom měli. Nebo ne? Kdepak mám NVMe SSD? Ajajaj…

Proč nevidíme stav NVMe SSD mezi ostatními disky je docela záludný problém. Popisuje ho Chris Siebenmann ve svém článku. Stručně:

  • S.M.A.R.T. si výrobci vykládají po svém a je v tom prý dost anarchie
  • lidé okolo standardu NVMe se proto rozhodli to udělat… jinak (jak jinak :-) )
  • tudíž NVMe neposkytuje atributy a jejich metriky, ale jen základní stav o zdraví disku (health information, data obsahují i teplotu mmch.)
  • proto smartctl data vypíše, smartd je už ale do *.csv souboru neuloží (nemá jak, sloupce ostatních disků zde neexistují)

Co s tím? Nějaké skriptování s Cronem? Ale nee. Existuje balík nvme-cli se kterým Netdata umí pracovat. A kupodivu ho můžeme nainstalovat i na XCP-ng 8.2.1 :-)

yum install nvme-cli

NVMe a starý balík Netdata

Netdata umí s nvme pracovat. Podle GITu se práce s tímto balíkem začala probírat již v roce 2020 a v roce 2022 bylo vše hotovo. Proto má dnešní Netdata Go modul nvme… No jo, jenže XCP-ng je hypervisor, silně ořezaná striktní distribuce okolo CentOS7. A Netdata z roku 2019 o nvme nemají ani tušení.

Co s tím? Ručně to zapnout podle návodu na webu Netdata nejde. Ten modul tam prostě chybí. Aktualizovat balíky Netdata? Ten byl dobrej… :-D No ne no.

Ještě nějaká možnost?

Ale jistě: v GITu si najdeme první implementaci nvme collectoru a tu si ručně přidáme do našeho Netdata.

  • záznam o založení nvme collectoru je tady
    • zde je i seznam souborů, ze kterých budeme potřebovat:
  • soubor nvme.conf umístíme do /usr/lib/netdata/conf.d/go.d/
  • soubor nvme.chart.sh umístíme do /usr/libexec/netdata/charts.d/
# přidat na konec /etc/sudoers
netdata ALL=(root)       NOPASSWD: /usr/sbin/nvme
 
# doplnit konfiguraci (pozor VIM...)
cd /etc/netdata
./edit-config go.d/nvme.conf
 
..
jobs:
  - name: nvme
  - path: /usr/sbin/nvme
..
 
# nakonec restartovat službu Netdata
systemctl restart netdata

A pokud přálo štěstí, pak výsledek vypadá třeba takhle:


Další díly

Domácí server #1 - počátek
Domácí server #2 - příprava
Domácí server #3 - poznámky