Nové statistiky – co je pod kapotou?

Sběr, zpracování a publikace dat z provozu autoritativních serverů DNS a veřejného resolveru ODVR, registru domény .CZ i služby mojeID mají ve sdružení CZ.NIC poměrně dlouhou tradici. Dříve používané (a stále aktivní) webové stránky se statistikami sice nabízely mnoho grafů a rozsáhlé možnosti volby jejich parametrů, ale při pohledu na ně se přece jen člověku do hlavy vkrádal slogan ze známé písně Zdeňka Svěráka a Jaroslava Uhlíře: „Statistika nuda je, má však cenné údaje…“. Jedním z mála pozitivních důsledků covidové pandemie bylo, díky výstupům Johns Hopkins University a mnoha dalších institucí, výrazné zvýšení standardu statistických vizualizací, jemuž naše staré statistiky při nejlepší vůli neodpovídaly.

Po více než ročním vývoji a testování v rámci projektu ADAM proto v těchto dnech oficiálně přecházíme na nové webové stránky s grafy a statistikami. Jejich uspořádání ve stylu „palubní desky“ (dashboard) a inovativní typy grafů umožňují na relativně malém prostoru komunikovat i docela komplexní informace pokrývající stav a provoz všech našich hlavních služeb.

Pokud někdy ony staré statistiky rozhodně nudné nebyly, pak to bylo v situacích, kdy jsme v nich potřebovali něco změnit nebo doplnit. V takovém případě jsme museli pátrat na několika místech, někdy i hůře dostupných, a upravovat různé obskurní skripty v několika jazycích. Našim cílem proto v tomto případě bylo nejen zmodernizovat obsah a formu statistik, ale také vylepšit a zkonsolidovat celý systém, na němž jsou postaveny. Jeho aktuální uspořádání ukazuje následující obrázek.

Architektura ADAM

Komponenty a postup zpracování dat

O hlavních softwarových nástrojích pro sběr surových dat jsem již psal ve svých dřívějších příspěvcích:

  • DNS probe je už instalována na všech autoritativních DNS serverech provozovaných sdružením CZ.NIC, jakož i na resolverech ODVR. Kromě řady jiných výhod jsme nyní schopni lépe párovat DNS dotazy a odpovědi, což je výrazný přínos (50 – 100% nárůst) zejména u TCP provozu.
  • DNS crawler je v rutinním provozu už déle než rok a vedle poskytování dat pro naše statistiky je využíván i pro další účely, spojené zejména s činností bezpečnostního týmu CSIRT.CZ.

Oba výše uvedené zdroje generují velké objemy dat, které ukládáme do specializované databáze Apache Hadoop. O ní  nedávno ve svém příspěvku psali kolegové Pavel Doležal a Maciej Andziński. Pro vytváření statistik používáme kromě toho údaje z registru domény .CZ a dalších interních databází. Všechna použitá data jsou ale vždy předzpracována do potřebné podoby a uložena do tabulek servisní databáze PostgreSQL. Nad ní pomocí skvělého softwaru PostgREST automaticky vytváříme REST API, které nám a dalším interním i externím zájemcům usnadňuje přístup k datům, například pro použití ve webových aplikacích.

Jako hlavní nástroj pro statistické zpracování a vizualizace dat jsme si vybrali jazyk R, především kvůli tomu, že je právě pro takovéto úlohy určen. Díky úsilí Hadleyho Wickhama a společnosti RStudio je dnes k dispozici řada velmi užitečných a perfektně dokumentovaných open-source knihoven spojených do balíku Tidyverse, který zpřístupňuje systém R i pouhým smrtelníkům.

Pro přípravu našich dashboardů, jakož i dalších výstupů projektu ADAM (např. reportů), využíváme R Markdown. To je další pěkný vynález RStudia, který umožňuje kombinovat text v populárním formátu Markdown se skripty jazyka R. Webové stránky generujeme z R Markdownu pomocí balíku flexdashboard, taktéž z provenience RStudia.

Celý obsah stránek se statistikami vytváříme zároveň v české i anglické verzi. Textové části každé stránky přitom držíme ve dvou samostatných souborech, zatímco bloky kódu v R jsou sdílené – k jejich internacionalizaci používáme GNU gettext. To je v našem případě obzvlášť užitečné, protože oba naši experti na jazyk R jsou cizinci, a české překlady musí proto vytvářet dodatečně někdo jiný.

Velkou předností současného uspořádání je skutečnost, že veškerý kód, který se statistikami souvisí (jak R Markdown, tak i další skripty v R, CSS styly aj.) je uložen v GitLabu, v projektu Adam Dashboard. Ke generování a vystavení webových stránek také s výhodou využíváme funkce průběžné integrace a instalace (CI/CD) v GitLabu. Po úpravách se tedy změny ve zdrojových souborech vždy nahrají do větve devel v GitLabu, z níž se automaticky (obvykle během několika minut) vygeneruje vývojová verze stránek. Po kontrole se pak změny přesunou do hlavní větve a následně se objeví na https://stats.nic.cz.

Projektové úložiště v GitLabu je veřejně přístupné (pro čtení), zájemci si v něm mohou najít všechny technické detaily. Budeme vděční i za oznámení případných chyb a námětů na změny či rozšíření statistik, nejlépe na stránce Issues.

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..