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… 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:
nvme.conf
- mě funguje tento soubornvme.chart.sh
- a tento soubor
- 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/
- pak se již řídíme návodem:
# 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:
Diskuze