Monitoring so zdravým rozumom

<Zadajte anotáciu>

Autori: Miroslav Čáni, Martin Matta

Monitoring IT infraštruktúry – mnohokrát podceňovaný, no predsa skôr či neskôr na zozname priorít nejednej firmy alebo projektu. Už dávno nie je statickým komponentom IT prostredia, pretože ak má plniť svoj účel, musí držať krok s jej prirodzeným vývojom.

Zrozumiteľný prehľad o stave zariadení a služieb je základným cieľom monitoringu, no v súčasnosti sa tento cieľ rozširuje o potreby komplexného prehľadu, integrácie do automatizačných procesov a okrem iného aj o vyššiu sofistikovanosť v meraní a vyhodnocovaní kľučových atribútov moderných technológií, ktoré sú čoraz častejšie a rýchlejšie nasadzované.

Monitoring je téma, ktorá nespí a sama sa vie pripomenúť v tej najnevhodnejšej chvíli. Je preto vhodné, aby bol začlenený už v prvotných fázach návrhu každej IT infraštruktúry.

Hľadáte riešenie pre monitoring, ale pojem Sensu vám nič nehovorí? Ak je vašou požiadavkou pre monitoring infraštruktúry transparentnosť, prispôsobiteľnosť a možnosť pristupovať k návrhu so zdravým rozumom, monitorovacia platforma Sensu stojí za vyskúšanie.

Sensu je monitoring platforma, dostupná v dvoch verziách:

1)    Sensu Enterprise

Produkt určený pre enterprise prostredia vyžadujúce vstavanú integráciu pre LDAP, multitenancy,  dashboard plný funkcií, oficiálnu podporu produktu a omnoho ďalšieho.

2)    Sensu Core

Open source verzia je poskytovaná zdarma. Skrýva sa za ňou jadro produktu so všetkými základnými funkciami. Ostatné funkcionality sú na kreatívnosti implementátora s podporou Sensu komunity na Slack alebo GitHub platforme.

Sensu pritom nie je žiadnou novinkou na trhu, používajú ju spoločnosti ako Netflix, Sony, Cisco, General Electric a iné. Ak nepoznáte Sensu, tak Nagios určite áno. Migrácia je v tomto prípade veľmi jednoduchá, keďže Sensu používa rovnakú logiku checkov.

Silnou výhodou Sensu je možnosť distribuovaného nasadenia, kde každý z komponentov môže bežať na vlastnom serveri, čo dáva priestor pre škálovateľnosť a vysokú dostupnosť. Sensu samotné je zložené z troch inštancií a pre beh potrebuje dva externé komponenty.

1)       Sensu inštancie

Server – Na starosti má všetky základné činnosti. Tie sú manažované internými rolami, z ktorých každá rieši určitú skupinu úloh, ako napr. „request Publisher“,  „client monitor“, „result monitor". V praxi to znamená, že ak existuje viacero serverových inštancií, tak tieto roly sú automaticky rozdistribuované na všetky inštancie. Tým vzniká sensu server cluster v active-active móde tvorený jednotlivými inštanciami. V prípade, že dôjde k poruche jednej z nich, roly na nej bežiace sú presunuté na funkčné server inštancie bez viditeľného výpadku funkcionality. Túto vlastnosť oceníte pri riešení vysokej dostupnosti a údržby operačného systému, keďže žiaden failover nie je nutný. Takáto starosť jednoducho odpadá.

API – Poskytuje bránu pre prístup k Sensu dátam a na vykonávanie operácií nad objektmi, ktoré Sensu používa. K dispozícii je možné získať informácie o check-och, manuálne ich spúšťať, získavať ich výsledky, ako aj zobraziť informácie ohľadom klientov a mnoho ďalšieho. Open source verzia dashboardu pod názvom „Uchiwa" využíva práve toto API pre interakciu so Sensu a určite je predurčené aj na silnú automatizáciu. API je taktiež možné inštalovať na viacero samostatných serveroch, čím sa získa vysoká dostupnosť prirodzenou cestou.

Client – Samotný agent bežiaci na serveroch, ktoré cheme monitorovať. Jeho úlohou je  spúšťanie check-ov a posielanie výsledkov späť na Sensu server cez RabbitMQ zbernicu. Taktiež implicitne posiela keepalive heartbeat, čím Sensu server deteguje dostupnosť agenta.

2)       Podporné komponenty

Sensu sa nezaobíde bez externých komponentov pre komunikáciu a ukladanie dát.

Redis – NoSQL databáza bežiaca priamo v RAM. Nájdete v nej všetko, čo Sensu potrebuje k svojej činnosti, ale v princípe nie je dôvod do nej zasahovať alebo vykonávať akékoľvek operácie. Ak vás zaujíma koncept vysokej dostupnosti, Redis je jediný z komponentov, ktorý nie je možné konfigurovať v active-active móde. Redis cluster ale môže pozostávať z jednej aktívnej inštancie a viacero pasívnych. Všetko ostatné je na Redis-sentinel, ktorý monitoruje stav aktívnej inštancie, riadi failover a klientov smeruje na momentálne aktívnu inštanciu Redis databázy.

RabbitMQ – Slúži ako transportná vrstva medzi Sensu serverom a Sensu agentmi. Všetky inštrukcie zo strany Sensu servera sú distribuované na tých agentov, pre ktorých sú tieto inštrukcie určené. To isté sa deje v opačnom smere, keď Sensu client posiela výstupy z check-ov a keepalive signálov. RabbitMQ má vysokú priepustnosť dát a active-active mód vysokej dostupnosti aj tu znižuje administratívnu réžiu.

Je vhodné začať so základnou konfiguráciou bez vysokej dostupnosti a oboznámiť sa s jednotlivými funkciami a komponentmi. Nie je to nič zložité a v momente, keď všetko beží, ako má, otvoria sa vám nekonečné možnosti, ako si riešenie môžete prispôsobiť. V projekte NGENA máme za cieľ poskytovať centralizovaný systém pre monitorovanie a reportovanie, čo nám umožňuje ľahšie zvládať implementáciu požiadaviek nášho špeciálneho prostredia. Okrem spomenutého základu máme niekoľko ďalších nástrojov, ktoré dotvárajú kompletné riešenie vrátane svojpomocne vybudovaného back-end-u ako alternatívu k modulom, ktoré sú k dispozícii v rámci Sensu komunity, opäť z dôvodu požiadaviek prostredia.

Graphite je kľúčovým komponentom pre prijímanie a interpretáciu metrík. Všetky metriky sú zbierané pomocou Sensu a preposielané do Graphit-u. Výhoda tohto riešenia oproti klasickému prístupu momentálneho vyhodnocovania výkonnostných ukazovateľov (napr. CPU utilizácia) spočíva v tom, že vyhodnocovanie bloku historických údajov pomocou funkcií Graphite-u odfiltruje vzorky dát spôsobujúce falošné alarmy.

Ďalší nástroj uľahčujúci operačnému tímu NGENA prácu je Grafana. Tento tool je priamo spojený s Graphite API a je určený na vizualizáciu vybraných metrík v ucelenom zobrazení, t. j. bez potreby preklikávania medzi dôležitými výkonnostnými ukazovateľmi vybraného systému alebo celej skupiny.

Dôležitým komponentom každého prostredia je centralizovaný logovací systém, ktorý v našom projekte úzko spolupracuje so Sensu. Keďže inštalácia agentov na sieťové zariadenia ako routre a switche nie je možná, vo väčšine prípadov ostáva kombinácia SNMP spolu so syslogom. Sensu pravidelne kontroluje centrálnu syslog databázu individuálne pre každé zariadenie a záznamy od poslednej kontroly pomocou filtrov premení na alarmy, ktoré dopĺňajú tie z SNMP monitoringu. Údaje každého alarmu sa spätne zapisujú do logovacieho systému pre vyhodnocovanie a reporting v ELK vyhľadávacom nástroji.

Nespornou výhodou produktov ako Sensu je ich vysoká prispôsobiteľnosť, náš návrh v projekte NGENA je jedným z mnoho riešení, ktoré je možné vytvoriť.