Hlavní navigace

Icinga slaví 10. narozeniny: proč se vývojářům nelíbil Nagios?

Autor: Icinga GmbH
Petr Krčmář

V těchto dnech slaví kulaté desáté narozeniny projekt Icinga, který se zabývá vývojem stejnojmenného monitorovacího nástroje. Původně vznikl z tehdy deset let starého projektu Nagios, který měl řadu problémů.

Doba čtení: 5 minut

Sdílet

Všechno začalo před dvaceti lety projektem Nagios. Jeho první verze vyšla 14. března 1999 ještě pod názvem NetSaint a jeho autor Ethan Galstad na něm pracoval jako na svém osobním projektu na hraní. Tehdejší monitorovací nástroje byly málo přizpůsobitelné, což byla přesně oblast, ve které měl být nový projekt jiný. Od začátku byl také dostupný pod svobodnou licencí GNU GPL 2, jako příspěvek komunitě.

Flexibilita byla zajištěna pomocí modulární architektury a také možností vytvářet vlastní agenty, kteří jsou spouštěni na vzdálených monitorovaných zařízeních a dodávají jádru podrobná data zevnitř strojů. Kromě toho jsou samozřejmě podporovány standardní síťové protokoly jako SNMP, HTTP, ICMP a mnoho dalších.

Jádro a moduly

Vývoj se poměrně brzy rozdělil do dvou zásadně oddělených oblastí: jádro monitorovacího systému a moduly. Zatímco o moduly se starala rychle se rozrůstající komunita, jádro si velmi pečlivě střežil Galstad. Ten byl prakticky jediným vývojářem a tvrdošíjně odmítal ke své práci pustit kohokoliv dalšího.

Argumentoval tím, že kód musí mít špičkovou kvalitu, aby měl dostatečnou důvěru mezi přispěvateli. Podobný projekt prý může přežít jen pod vedením někoho, kdo zná velmi dobře architekturu celého kódu. Otevřít vývojářský tým není vždy snadné a ne vždy je to také vhodné, tvrdil tehdy.

Projekt byl poté 1. března 2002 přejmenován na Nagios, protože jeho původní jméno NetSaint se příliš podobalo názvu jiného projektu. Aby předešel případným soudním sporům, rozhodl se autor pro nejjednodušší krok a projekt přejmenoval. Nový název tvoří rekurzivní zkratka Nagios Ain't Gonna Insist On Sainthood, která jako vtip odkazuje na původní název projektu.

Se změnou názvu přišla také ochranná známka a podmínky užívání nového jména, se kterými byli přispěvatelé projektu seznámeni. Vznikl tak zvláštní hybrid projektu s otevřeným kódem, kterým ovšem vládne jediný člověk vlastnící také ochrannou známku.

Nespokojenost s projektem

Během několika let se zostřily třenice mezi Galstadem a komunitou kolem projektu. Té se nelíbila nerovnováha, která v projektu vznikala. Na jedné straně byl osvícený diktátor, na druhé straně velká skupina vývojářů, kteří se zabývali vývojem a správou modulů. Vývoj jádra šel navíc velmi pomalu, některé zásadní části kódu byly zařazovány měsíce a všechno se neúnosně vleklo.

Komunita opakovaně vyzývala Galstada, aby k vývoji jádra přizval další lidi a udělal z něj také otevřený komunitní projekt. Ten ale všechny podobné nápady zamítal, zůstával hluchý k argumentům a kormidlem se stále snažil točit sám. K hájení své pozice také používal ochrannou známku na název Nagios.

Nervozita se ale zvyšovala, pro vývoj nových modulů bylo potřeba rozšířit podporu databázi o PostgreSQL a Oracle, vytvořit rozhraní pro PHP a doplnit pořádné API. Přestože kód už byl hotový, do jádra Nagiosu nebyl zařazen. To brzdilo další rozvoj a komunita vývojářů modulů byla ze situace čím dál nešťastnější. Z měsíců se stal postupně rok a nakonec dva. Dlouhé dva roky bez vývoje toho, co všichni potřebovali. Až došla trpělivost a napjatý kormidlový řetěz praskl.

Fork s lepším vývojem

Komunita se tehdy v květnu roku 2009 chopila sama iniciativy, převzala zdrojový kód tehdy vydaného Nagiosu 3.2.0 a vznikl projekt Icinga. Nebylo v plánu dělat revoluci a stavět úplně nové plavidlo, vývojáři modulů chtěli jen pořádně napnout plachty a vyrazit kupředu.

Priority byly předem dané: usnadnit co nejvíc život uživatelům a vývojářům. Na prvním místě tedy bylo Icinga API, hned za ním podpora dalších databázi, rozhraní pro tehdy hojně používaný jazyk PHP a hlavně rychlejší vývoj. Nové vlastnosti, neustálé zlepšování a posun vpřed.

To vše při zachování plné kompatibility s původním Nagiosem včetně stejných konfiguračních souborů a modulů. Nový vývojářský tým sestavený z několika nespokojených správců modulů začal rychle Icingu vylepšovat a zasílal své úpravy zpět vývojářům Nagiosu.

Ethan Galstad ovšem vidí situaci o dost jinak. Tvrdí, že mu přeběhlíci nikdy neřekli, v čem je vlastně problém a jaké funkce jim v jádře Nagiosu vlastně tak moc chybí. Navíc prý před vyhlášením samostatnosti nikdy nepřišli s nabídkou pomoci problémy řešit, což by od komunity očekával.

Paradoxní je, že pět dní po oznámení projektu Icinga změnil Galstad svůj přístup a přizval k vývoji jádra další dva vývojáře. Prý už nechce být jediným vývojářem a strážcem Nagiosu a rád by se o své pravomoci rozdělil. Otevřeně přiznal, že tohle byla velká slabina, která brzdila vývoj. Zároveň ale tvrdil, že byl vždycky otevřený přijmout k sobě další lidi, stačilo jen nabídnout pomoc.

Rychlý rozvoj

Faktem zůstává, že se projektu Icinga začalo velmi rychle dařit a po roce ohlásil 10 000 stažení. Uživatele oslovil svým přístupem: jasně daným plánem, podporou populárních databází a překladem do dalších jazyků. Během prvního roku měl 16 aktivních přispěvatelů a dařilo se mu velmi dobře. Po dvou letech už měl 23 vývojářů a 70 000 stažení.

Ethan Galstad vidí projekt Icinga jen jako snahu komerčně zneužít jeho dílo německou společností Netways, která patřila k iniciátorům celé akce. Nešlo prý vůbec o kód, ale o získání vlastní ochranné známky, aby zájmy firmy nekolidovaly s podmínkami použití názvu Nagios.

V každém případě Icinga vznikla a je tu s námi 10 let, stejně jako tu na jejím počátku byl Nagios. Oba projekty existují stále vedle sebe, i když už se hodně vzdálily. První verze Icingy byla téměř plně zaměnitelná s Nagiosem, protože vycházela ze stejného kódu a přidávala jenom nové vlastnosti.

Icinga 2

Před pěti lety vyšla kompletně přepsaná verze Icinga 2, která už není kompatibilní s Nagiosem a přinesla spoustu novinek. Je to vlastně dnes už jediná správná Icinga, protože podpora původní verze skončila s rokem 2018.

Dvojka nabízí zejména vlastní programovací jazyk pro konfiguraci – je možné v něm používat cykly, podmínky a konfigurace je tak ve srovnání s původní verzí mnohem stručnější. Na první pohled je v Icinze 2 vidět nové webové rozhraní (IcingaWeb2), které je responzivní a má mnohem rychlejší odezvu.

Celá Icinga 2 i její webové rozhraní je rozšiřitelné a vzniklo spousta zajímavých rozšíření – od integrace původních nástrojů (vizualizace NagVis, grafy PNP), až po zbrusu nové nástroje (integrace s Grafanou).

CIF-tip-bezpecnost

Nového API v Icinga2 využívá také Icinga Director, který umožňuje konfigurovat Icingu interaktivně pomocí webového rozhraní. Při tom všem je stále možné používat původní pluginy z Nagiosu.

A jak se Icinga vlastně vyslovuje?

K dalšímu čtení