Nový pomocník monitoringu síťě a serverů

Nový pomocník monitoringu síťě a serverů

Obrázek uživatele Cx

Již nějaký čas monitorujeme naše servery a síť všemi možnými způsoby. O hlášení problémů se nám stará daemon Icinga a o sbírání provozních dat zase daemon Collectd. Druhý jmenovaný nástroj je ve sběru dat velmi dobrý, dokáže je nasbírat s dostatečnou granulitou a přitom moc nezatěžuje stroj na kterém běží. Jedinou jeho vadou je frontend a tak jsme si museli pomoci sami.

Vývojáři Collectd frontend do svého projektu nezařadili a tak se na věc vrhla komunita. Frontend sdílí s Collectd databázové soubory, ale na rozdíl od Collectd z nich data pouze čte a generuje vhodný výstup pro lidské oko. V případě dat z Collectd to jsou většinou grafy. Ty nám umožní porovnávat zatížení serveru s požadavky na Apache, víme co se serverem dělají některé plánované akce (rotování logů) a to nejdůležitější - víme co předcházelo problémům a jsme schopni je předvídat ještě před tím, než si toho všimnou uživatelé.

Z tohoto důvodu monitorujeme například:

  • Zátěž serverů (load average)
  • Zatížení jednotlivých CPU
  • Obsazení paměti RAM
  • Obsazení disku
  • Diskové operace
  • Procesy
  • Komunikaci mezi mod_fcgid v Apachi a PHP
  • Jednotlivé porty na všech switchích
  • Síťová rozhraní serverů a routeru
  • Dotazy na DNS
  • Dotazy na MySQL databázi

A několik dalších hodnot v závislosti na tom, k čemu daný server slouží. Celkově máme k dispozici 600 různých grafů a celkový pohled na stav naší infrastruktury. Na některých grafech je zobrazeno hodnot více, takže celkem jich můžeme porovnávat přes 2500.

Aby šlo vše hladce a rychle, museli jsme najít frontend ke Collectd, který by nám umožnil s grafy efektivně pracovat. Mnoho takových nástrojů existuje, ale jejich vývoj buď stojí nebo se neubírá směrem, který potřebujeme. Proto jsme věnovali nějaký čas vlastnímu nástroji, který jsme nazvali CollectdGraphs.

Našim cílem bylo připravit mobilní aplikaci, která zvládne fungovat i na velkých displejích. Nebyli jsme prakticky ničím omezení a nakonec jsem skončili u kombinace programovacího jazyka Python a frameworku jQuery Mobile. S tím odpadla starost o grafiku a aplikaci lze optimalizovat jak pro velké tak malé displeje s vynaložením jen malé námahy. Výsledek vypadá takto:

Aplikace se stará o následující:

  • Obsahuje framework pro snadné psaní pluginů na zpracování dat
  • Kreslí grafy
  • Stará se o komunikaci s uživatelem

Rozhraní funguje stejně dobře na velkých počítačích, tak na displejích tabletů a telefonů. Pluginový systém umožňuje napsat nový plugin na zpracování naměřených dat během několika minut. Grafy jsou generovány pomocí nástroje RRDtool, který Collectd používá pro ukládání. Data jsou uložena do RRD databází, což jsou kruhové buffery, jenž nemění svou velikost a jsou navrženy pro ukládání naměřených dat v určitém čase. Jedna databáze může obsahovat více hodnot, například odchozí a příchozí pakety nějakého rozhraní a podobně. RRD databáze je také navržena pro operace, které se nad těmito daty dělají, což je agregace nebo výběr dat z určitého intervalu.

Ale abychom to shrnuli, díky Collectd a našemu novému nástroji CollectdGraphs, víme přesně co se na síti děje a či dělo v libovolný okamžik. CollectdGraphs má otevřený zdrojový kód, který najdete na GitHubu.