Jak zobrazit data z Collectd

Adam Štrauch 10. 2. 2012

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:

widgety

$ 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?
DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Podnikatel.cz: Insolvence LevneElektro.cz? Začíná boj o peníze

Insolvence LevneElektro.cz? Začíná boj o peníze

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

120na80.cz: 3 preventivní vyšetření na odhalení rakoviny

3 preventivní vyšetření na odhalení rakoviny

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

Podnikatel.cz: Chystá se smršť legislativních novinek

Chystá se smršť legislativních novinek

DigiZone.cz: Test: brýle pro virtuální realitu Exos Urban

Test: brýle pro virtuální realitu Exos Urban

DigiZone.cz: Mordparta: trochu podchlazený 87. revír

Mordparta: trochu podchlazený 87. revír

Podnikatel.cz: EET pro e-shopy? Postavené na hlavu

EET pro e-shopy? Postavené na hlavu

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích