Hlavní navigace

Jak zobrazit data z Collectd

Adam Štrauch

O projektu collectd jsme už jednou psali, ale článek se zabýval především sběrem dat. Ten je s collectd snadný a dalo by se říct unifikovaný. Na druhou stranu generování grafů z těchto dat už tak snadné není a je potřeba se prohrabat jedním z několika programů, a i tak možná skončíte s vlastním skriptem.

Tento článek bude o generování grafů z rrd databází plněných daemonem collectd. Pokud collectd neznáte, určitě se podívejte na náš článek POSIXový sběratel collectd ve vašich službách. V něm se dozvíte všechno potřebné k tomu, abyste se mohli dostat do problému popsaném v následujících odstavcích.

Není pochyb o tom, že Collectd je vynikající nástroj. Je víceméně jediný svého druhu, dokáže zaznamenávat téměř real-time a zbytečně nezatěžuje stroj, protože má pluginy napsané v C. Vývojářům se podařilo sjednotit vývoj pluginů, ale co se týče frontendu, tam už to tak slavné není. Data z collectd si můžete zobrazit graficky pomocí několika projektů, které najdete v seznamu frontendů v projektové wiki. Bohužel žádný z nich není 100% a všichni trpí alespoň jedním z následujících problémů:

  • Nepodporuje ani ty nejdůležitější pluginy
  • Instalace není vždy úplně standardní
  • Nevyvíjí se
  • Uživatelsky nepřívětivý

Na první problém vůbec nemusíte narazit. Rozhodnete se sbírat data o zatížení procesoru, využití paměti, přidáte nějaké to volné místo na disku a prakticky se už rozhodujete jen podle obtížnosti nasazení a grafické stránky. Ale jak přijde snmp plugin nebo třeba jen sledování požadavků chodících na Apache či Nginx, tak zjistíte, že podpora chybí. Jako druhý problém vidím fakt, že co frontend, to unikát v kombinaci použitého jazyka a způsobu nasazení. Plugin do MoinMoin mě jako správce sítě neosloví a ani kombinace Perl+Pythoní web server není zrovna standardní a na první pohled může trochu vyděsit. Dalšími kandidáty jsou Ruby on Rails, čistý Perl, čisté PHP nebo implementace na straně klienta v jQuery. Když už si vyberte a vyhovuje vám i uživatelské rozhraní, tak zjistíte, že jde o projekt, o který se už roky nikdo nestará a není šance, že by v něm byl opraven bug či byla přidána podpora nových pluginů.

Vývojáři collectd si bohužel nevzali frontend pod svá křídla, vývoj se rozdělil a nyní je těžké najít nějaké plně funkční řešení. Uživatel má tedy dvě možnosti, buď si vybrat projekt, který sedí nejvíce a případně ho upravit, nebo si napsat něco sám. Já se nakonec po mnoha pokusech usadil u projektu collectd-web. Přesto že není úplně ideální a už to je pár měsíců, co do něj někdo odeslal patch, tak má potenciál.

Collectd-web

Collectd-web je napsaný z velké části v Perlu, z menší části v Pythonu a uživatelské rozhraní je v HTML+jQuery. Pro svůj běh používá pythoní webový server a velmi dobře funguje s nedávno recenzovanou utilitkou Supervisor. Kombinace Pythonu a Perlu byla zvolena pravděpodobně z toho důvodu, že součástí zdrojáků collectd je i perlový skript, který umí kreslit grafy včetně jednoduchého webového rozhraní. Tento skript je dost nepřehledně napsán, takže ho autor collectd-web rozdělil a přes CGI ho napojil na pythoní server. O komunikaci s uživatelem se pak stará HTML a jQuery. I když nejde o extra čisté řešení, tak funguje, a dovolím si tvrdit, že jde o to nejlepší možné, co lze z aktuálních nástrojů dostat. Pythoní web server ho dělá jednoduše vyzkoušitelným a když se trochu prokoušete adresářovou strukturou, zjistíte, že jde nasadit na jakémkoli webovém serveru, který podporuje CGI.

Podpora pluginů je u tohoto nástroje klíčová a collectd-web si poradí s těmito:

  • apache
  • cpu
  • interfaces
  • iptables
  • cpu
  • df
  • disk
  • dns
  • entropy
  • hddtemp
  • irq
  • lighttpd
  • load
  • memory
  • mysql
  • nfs
  • ping
  • processes
  • swap
  • tcp_connections
  • cpufreq
  • users
  • snmp

A naštěstí není tak složité do souboru graphdefs.cgi dopsat další.

Zdrojový kód je otevřený a najdete ho na GitHubu. Na stejném místě najdete i repositáře dalších uživatelů, kteří si projekt upravili podle svého a některé patche by se mohly hodit i vám. Instalace a konfigurace je jednoduchá. V prvním kroku si stáhněte repositář z GitHubu:

$ git clone https://github.com/httpdss/collectd-web.github 

Pak je potřeba vytvořit soubor /etc/collectd/co­llection.conf a do něj uložit cestu k datům z collectd. Například takto:

datadir: "/var/lib/collectd/rrd/" 

Když je hotovo, zkuste spustit pythoní web server:

$ cd collectd-web
$ python runserver.py 

Pokud chybí nějaká závislost, bude to pravděpodobně nějaká perlí knihovna a stačí ji doinstalovat. Když vše běží, mělo by se vám objevit uživatelské rozhraní se seznamem strojů a po kliknutí i seznam dostupných informací. Jak jsem napsal výše, rozhraní je kombinace HTML+jQuery a kliknutím se nenačítá nic jiného než nové grafy. Ty jsou generovány Perlem na straně serveru. Rozhraní není nic, co by vyhrálo soutěž krásy, ale funguje dobře a splňuje svůj účel. Jednotlivé grafy lze posouvat v čase a měnit zobrazený časový interval.

Shrnutí

Collectd-web je jeden z mnoha frontendů pro collectd. Není úplně dokonalý, ale vzhledem k situaci, která v této oblasti vládne je jedním z nejperspektiv­nějších, které můžete použít. Není složité do něj dopsat další definice grafů a rozhraní dokáže rozšířit každý kdo vládne trochu HTML a JavaScriptu. Samozřejmě je tu i druhá stránka, projekt není aktivně vyvíjený ani jeho autorem ani dalšími uživateli. Navíc chybí podpora pro mnoho pluginů, které jsou v collectd novinkou, ale i pro velké množství těch starších. Pokud hledáte způsob, jak zobrazit své grafy, je collectd-web tím nejlepším bodem, od kterého v současné době začít, ale bez úprav se možná neobejdete.

Našli jste v článku chybu?
120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

DigiZone.cz: Flix TV: dva set-top boxy za korunu

Flix TV: dva set-top boxy za korunu

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?