GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Monitorování kontejnerů Docker:Výhody, osvědčené postupy a nástroje, které musíte mít

Před osmi lety byly kontejnery známou technologií, ale s malým přijetím veřejnosti. Poté Solomon Hykes vytvořil Docker, technologii kontejnerů, díky níž je použití kontejnerů mnohem jednodušší. Dnes kontejnery vládnou světu IT. Gartner předpovídá, že 70 % organizací bude do roku 2023 provozovat kontejnerové aplikace.

Proč? Organizace si uvědomují výhody snadnější konfigurace, rychlejšího nasazení a možnosti spouštět více úloh na stejném hardwaru s kontejnerovými aplikacemi.

Pro co nejlepší využití kontejnerů je monitorování kontejnerů Docker nutností. Bez monitorování kontejnerů cestujete ve tmě. Doslova nevidíte, jak dobře vaše kontejnery fungují, co dělají nebo jak dobře dělají svou práci.

Bez monitorování kontejnerů Docker také nemůžete vědět, jak fungují mikroslužby a aplikace postavené na kontejnerech. Sledování kontejnerů vám umožňuje vědět, co se děje se samotnými kontejnery a vašimi většími programy orientovanými na uživatele.

Docker Container Monitor:the Basics

Hlavním důvodem, proč jsou kontejnery oblíbené, je to, že se hodí pro nepřetržitou integraci/průběžné zavádění (CI/CD). Toto je metodika aDevOps navržená tak, aby umožnila programátorům integrovat svůj kód do sdíleného úložiště brzy a často. Jakmile tam jsou, kontejnerové programy jsou nasazeny rychle a efektivně.

Docker také umožňuje vývojářům zabalit, odeslat a spustit jakoukoli aplikaci jako lehký, přenosný, soběstačný kontejner, který lze spustit prakticky kdekoli. Kontejnery vám poskytují okamžitou přenositelnost aplikací.

Kontejnery to dělají tak, že umožňují vývojářům izolovat kód do jednoho kontejneru, což zefektivňuje úpravy a aktualizace programu. Umožňuje podnikům rozdělit velké vývojové projekty mezi několik menších agilních týmů pomocí kanálů CI/CD k automatizaci doručování nového a aktualizovaného kódu prostřednictvím kontejnerů.

Konečně, a možná nejdůležitější bod pro podniky, kontejnery umožňují společnostem maximalizovat hardwarové a cloudové zdroje. Jak vysvětlil James Bottomley, bývalý technický ředitel společnosti Parallels pro virtualizaci serverů a přední vývojář linuxového jádra, „hypervizory virtuálních počítačů, jako jsou Hyper-V, KVM a Xen, jsou všechny založeny na emulaci virtuálního hardwaru. To znamená, že jsou tlustí, pokud jde o systémové požadavky."

Kontejnery však používají sdílené operační systémy, takže jsou z hlediska systémových prostředků mnohem tenčí než hypervizory. Místo virtualizace hardwaru spočívají kontejnery na jediné instanci Linuxu. To znamená, že můžete „zanechat zbytečných 99,9 procenta nevyžádaných virtuálních počítačů a nechat vám malou, úhlednou kapsli obsahující vaši aplikaci“, jak řekl Bottomley. Jinými slovy, s dobře vyladěným kontejnerovým systémem můžete mít až čtyři až šest kontejnerů spuštěných na systému, který v minulosti mohl provozovat pouze jednu instanci.

Dnes existuje mnoho druhů kontejnerových plošin. Zatímco Docker je nejznámější, jsou zde také LXC, runC, Containerd a podman. Všechny plní podobné funkce a lze je z velké části spravovat pomocí stejných nástrojů.

Co je Docker?

Takže, co je konkrétně Docker? Docker je postaven na LXC. Jako každý jiný kontejner, pokud jde o jakýkoli program běžící na Dockeru, má svůj vlastní souborový systém, úložiště, CPU a RAM. Klíčový rozdíl mezi kontejnery a virtuálními počítači je v tom, že zatímco hypervizor abstrahuje celé zařízení, kontejnery abstrahují pouze jádro operačního systému. Všechny výhody Dockeru pocházejí pouze z tohoto jednoduchého mechanismu.

Proč byla úspěšná, když její předchůdci, jako FreeBSD Jails, Oracle Solaris Zones a OpenVZ, umožnili kontejnerům fungovat dobře a bezpečně, ale měli malý úspěch na trhu? Do jisté míry byly kontejnery úspěšné, ale neviditelné. Například Google používal svůj vlastní open-source kontejnerový programlmctfy (Let Me Contain That For You) více než deset let. Kdykoli jste používali funkce Google, např. Vyhledávání, Gmail, Dokumenty Google, běžely v neviditelném kontejneru.

Docker přináší to, že kontejnery jsou bezpečnější a efektivnější pro nasazení a použití než předchozí přístupy. Navíc, protože partnerství Dockeru s dalšími kontejnerovými mocnostmi, včetně Canonical, Google, Red Hat a Parallels, na jeho klíčovém open source komponentě libcontainer, přináší do kontejnerů tolik potřebnou standardizaci.

Docker daruje formát kontejneru libcontainers a jeho běhové prostředí, stejně jako související specifikace, projektu The Linux Foundation’s Open Container Project. Konkrétně to zahrnuje celý obsah projektu libcontainer, včetně nsinitu, a všech úprav potřebných k tomu, aby běžel nezávisle na Dockeru.

Docker nadále pracuje na dalších snahách o standardizaci kontejnerů. Například společnost Docker věnovala svůj kontejnerový běhový modul s otevřeným zdrojovým kódem nadaci Cloud Native Computing Foundation (CNCF). Standardizace hraje obrovskou roli v úspěchu Dockeru.

Na rozdíl od jiných kontejnerových technologií podporuje Docker také softwarově definované sítě (SDN). To umožňuje týmům DevOps definovat sítě pro kontejnery, aniž by se museli starat o hardwarové přepínače. Místo toho nastavují komplexní síťové topologie a definují sítě pomocí konfiguračních souborů.

SDN a Docker zároveň umožňují využívat mikroslužby. Společně umožňují efektivnější vytváření aplikací z volně propojených služeb, které vzájemně spolupracují prostřednictvím dobře známých protokolů, jako jsou HTTP a TCP.

A konečně, úspěch Dockeru vděčí za velký dluh tomu, že je prostě tou správnou otevřenou technologií ve správný čas, která uživatelům pomůže využít revoluci cloud computingu.

Co je monitorování kontejnerů?

Běžným scénářem pro podniky je, že používají Docker a mají stovky až stovky tisíc kontejnerů, na kterých běží aplikace, které jsou pro vaši společnost životně důležité. K jejich organizování je pravděpodobné, že používají Kubernetes. Jak říká CTO CNCF Chris Aniszczyk, existuje stále větší mezera v chápání toho, že Kubernetes a kontejnery jsou v podstatě balíkem. Existují další programy pro orchestraci kontejnerů, ale Kubernetes je drtivou jedničkou na trhu. Z toho Datadog uvádí, že téměř 90 % uživatelů Kubernetes využívá cloudové služby, což je nárůst oproti téměř 70 % v roce 2020.

To je skvělé, pokud to jde. Ale Kubernetes řídí, nasazuje a škáluje kontejnery. Nesleduje je.

Monitorování je složité. Kontejnery jsou pomíjivé. Otáčejí se nahoru a dolů během několika minut. Průměrný kontejner Kubernetes vydrží jeden den. Nástroje, které používáte k monitorování tradičních aplikací běžících na virtuálních serverech nebo na holých serverech, na to nestačí. V době, kdy váš monitorovací program požaduje hlášení, může kontejner docela dobře zmizet z dohledu a vzít s sebou všechny protokoly v něm.

Výhody monitorování kontejnerů

I když je to složité, monitorování kontejnerů je životně důležité. Jak říká systémový správce Gary Williams:"Nemůžete mít příliš mnoho monitorování." Gary má pravdu.

Mezi výhody monitorování kontejnerů patří:

  • Proaktivní identifikace problémů, aby se předešlo výpadkům systému.
  • Sledování dat časových řad, aby aplikace fungovaly lépe.
  • Optimalizujte alokaci zdrojů.
  • Problémy zachyťte co nejdříve, abyste je mohli rychle vyřešit.

Monitorování kontejnerů je také důležité, protože aplikace založené na kontejnerech jsou neustále vystaveny útokům ransomwaru a kryptoměn. Stručně řečeno, z hlediska bezpečnosti i výkonu je monitorování vašich kontejnerů nutností. To jsou stejné důvody, proč monitorujete všechny své systémy, a kontejnery se neliší.

Monitorovací programy čelí dalším problémům při shromažďování údajů o pozorovatelnosti z kontejnerů. Existuje několik metod sběru dat. Patří mezi ně:

  • Nasazení vyhrazeného monitorovacího agenta jako hostitelské aplikace nebo kontejneru.
  • Nasazení směrovače protokolů pro automatické shromažďování protokolů generovaných kontejnery.
  • Použití ovladače protokolování Docker k ukládání protokolů kontejneru na hostiteli.
  • Shromažďování metrik prostřednictvím statistik Docker, kanálu metrik Kubernetes nebo podobného rozhraní API.

Monitorování kontejnerů pokrývá základní metriky, jako je využití paměti, využití procesoru, limit procesoru a limit paměti. Vaše monitorovací programy by také měly nabízet protokoly streamování v reálném čase, trasování a pozorovatelnost.

Na vyšší úrovni musíte kromě shromažďování a centralizace monitorovacích dat z kontejnerů a jejich hostitelů shromažďovat a analyzovat data celé aplikace, nikoli jednotlivé kontejnery.

Jak řekl Minh Dao ofLogDNA, „představte si, že máte třívrstvou webovou aplikaci, kde každá vrstva běží jako samostatný kontejner. Nyní si představte, že vaše backendová vrstva začne náhle generovat chyby a v důsledku toho dochází k havárii kontejnerů. Vytahování protokolů a metrik z jednotlivých kontejnerů pomůže s analýzou hlavních příčin, ale nepomůže vám to vidět chybu v kontextu celé aplikace. Problém může být specifický pro daný kontejner nebo může naznačovat širší problém v celé aplikaci.“

Dejte to všechno dohromady a není o tom pochyb. Musíte sledovat své kontejnery.

Pět nejlepších nástrojů pro monitorování kontejnerů

Mnoho z nejlepších programů pro monitorování kontejnerů jsou programy s otevřeným zdrojovým kódem. Linode poskytuje základy pro začátek se zásobníkem Elasticsearch, Logstash a Kibana (ELK) pomocí Filebeat a Metricbeat s Kibana a analýzy časových řad pomocí Grafit a Grafana Dashboard. S určitým úsilím si můžete vytvořit svůj vlastní systém sledování kontejnerů.

Programy v níže uvedeném seznamu jsou seřazeny podle abecedy, nikoli od nejlepšího po nejhorší. Je to proto, že je nemůžete spravedlivě seřadit. Všechny mají své silné a slabé stránky a často měří různé metriky. Je tedy pravděpodobné, že pokud to s bedlivým sledováním kontejnerů myslíte vážně, budete muset použít několik z těchto programů.

Poradce pro kontejner (cAdvisor)

Google’sContainer Advisor (cAdvisor) je open source monitorovací program. Běží jako démon, který shromažďuje, agreguje a exportuje údaje o využití zdrojů a výkonu cílených kontejnerů. Sleduje parametry izolace zdrojů každého kontejneru, historické využití zdrojů, histogramy úplného historického využití zdrojů a statistiky sítě. Tato data jsou exportována pomocí kontejneru a celého stroje.

Program je dodáván s nativní podporou kontejnerů Docker a je navržen tak, aby po vybalení podporoval téměř všechny ostatní typy kontejnerů. Odhaluje také metriky Prometheus. Jinými slovy, cAdvisor shromažďuje data, zatímco Prometheus je škrábe. CAdvisorova abstrakce kontejnerů je založena na lmctfy, takže kontejnery jsou vnořeny hierarchicky.

Sestavení cAdvisor můžete nainstalovat jako obrázky na hostitele Dockeru. Program také poskytuje jak webové uživatelské rozhraní (UI), tak REST Application Programming Interface (API). Díky tomu můžete přímo monitorovat své kontejnery Docker a integrovat metriky do externí aplikace prostřednictvím koncových bodů webových služeb.

Datový pes

Datadog doporučuje Docker z dobrého důvodu. Poskytuje četné monitorovací nástroje, které sledují kontejnery, infrastrukturu a metriky související s aplikacemi.

Jeho uživatelské rozhraní a palubní deska jsou také velmi praktické. S jeho daty v reálném čase můžete nastavit různé vizualizace, včetně časových řad, hodnoty dotazu, nejlepšího seznamu, tabulky, teplotní mapy, stromové mapy, koláčového grafu, mapy hostitele, streamu protokolu, seznamu, hodnoty výstrahy, mapy služeb a dalších . Automaticky koreluje data a vizualizuje neobvyklé chování.

Srdce Datadogu je proprietární, ale agent Datadog a všechny ostatní programy, které běží na vašich počítačích a cloudech, jsou open source.

Sledování je k dispozici prostřednictvím požadavků Trace, které poskytují své grafické vizualizace a výstrahy. Program shromažďuje data týkající se služeb, aplikací a platforem prostřednictvím podrobných dat protokolu.

Program je monitorovací ekosystém. Kromě vašich kontejnerů monitoruje v podstatě cokoli. Činí to částečně podporou většiny telemetrických programů a protokolů, jako jsou StatsD, OpenMetrics a OpenTelemetry.

I když se prodává primárně jako software jako služba (SaaS), lze jej nasadit také on-premise.

Elasticsearch a Kibana

Elasticsearch je open-source vyhledávač založený na Javě odvozený z knihovny Apache Lucene. Poskytuje distribuovaný fulltextový vyhledávač s podporou více nájemců s webovým rozhraním HTTP a dokumenty JSON bez schémat. Je srdcem zásobníku ELK.

Jeho partnerský program, Kibana, je bezplatné, otevřené uživatelské uživatelské rozhraní pro vizualizaci vašich dat Elasticsearch a navigaci v zásobníku ELK. Můžete sledovat načítání dotazů, abyste viděli, jak s tím požadavky procházejí vašimi aplikacemi. Kibana přichází s obvyklou klasikou řídicího panelu uživatelského rozhraní:histogramy, spojnicové grafy, koláčové grafy, sluneční paprsky a další. A samozřejmě můžete vyhledávat ve všech svých dokumentech.

Pro účely monitorování kontejneru používáte Filebeat a Metricbeat k automatickému zachycení dat kontejneru. Filebeat automaticky najde kontejnery a uloží jejich protokoly do Elasticsearch. Metricbeat nasadíte do svých kontejnerů automaticky. Jakmile se tam objeví, shromažďuje statistiky využití CPU, paměti, systému souborů, diskových IO a síťových IO na systémové úrovni. Jeho moduly napsané v Go mohou také sledovat programy v kontejnerech, jako jsou Apache, NGINX, MongoDB, MySQL, PostgreSQL a Prometheus. Ke všem těmto datům pak lze přistupovat pomocí Kibana.

Je velmi flexibilní. Musíte strávit spoustu času učením se, jak jej nakonfigurovat a používat, ale stojí to za čas.

Prometheus a Grafana

Stejně jako Elasticsearch a Kibana jsou Prometheus a Grafana programy s otevřeným zdrojovým kódem, které můžete použít k vytvoření vlastních monitorovacích systémů. Je to složité, ale ta práce stojí za to.

Prometheus ukládá data jako časové řady. V časových řadách jsou data uchovávána jako proudy hodnot s časovým razítkem pro stejnou metriku a stejnou sadu označených dimenzí.

Prometheus, projekt CNCF, stahuje metriky přímo z kontejnerů nebo pomocí push brány. Odebrané vzorky jsou uloženy lokálně a na jejich data jsou aplikována pravidla pro agregaci a generování nových časových řad nebo generování uživatelem definovaných výstrah.

Prometheus se primárně zaměřuje spíše na spolehlivost než na přesnost. Program to dělá tak, že každý server Prometheus je samostatný s místním úložištěm časové řady databází, aby se zabránilo spoléhání se na jakoukoli vzdálenou službu. Díky tomuto designu je Prometheus ideálním nástrojem, na který se lze spolehnout při rychlé identifikaci problémů a získávání zpětné vazby v reálném čase. Obvykle se tedy používá ve vysoce dynamických systémech, jako jsou kontejnerové mikroslužby běžící na cloudu.

Prometheus má svůj vlastní webový dashboard nebo z něj můžete extrahovat data pomocí jeho API. Grafana se používá jako jeho výchozí rozhraní.

Sysdig

Sysdig je komerční cloudová monitorovací platforma, která funguje ruku v ruce s Prometheem. To vám umožní získat přístup k datům časových řad, aniž byste museli budovat svůj vlastní monitorovací systém Prometheus.

Sysdig sleduje data Dockeru přímo z metadat kontejneru, aby umožnila zabezpečení a monitorování. Docker doporučuje Sysdig jako monitorovací řešení pro kontejnerizované aplikace.

Sysdig také integruje linuxové monitorovací programy do jediného konzistentního rozhraní. Program to dělá na úrovni operačního systému integrací s jádrem Linuxu. Zachycuje systémová volání a další události operačního systému.

Jeho jedinečná kombinace Prometheus a nízkoúrovňového náhledu na operační systém z něj dělá výkonný monitorovací nástroj.

Závěr

Sledování kontejnerů je nutností, nikoli vychytávkou. Bez monitorování je provoz kontejnerů jako jízda po temné klikaté dálnici bez světlometů.

Zvolený monitorovací program závisí na vašem případu použití, rozpočtu a IT zdrojích dostupných ve vaší organizaci. Můžete si vytvořit své vlastní systémy monitorování kontejnerů pomocí mnoha dostupných programů s otevřeným zdrojovým kódem nebo použít komerční balíček. Bez ohledu na to, jaký monitorovací program se rozhodnete použít, je nezbytnou součástí zdraví a stability vašich kontejnerových webových aplikací.


Docker
  1. Top 25 nejlepších nástrojů pro monitorování a ladění výkonu Linuxu

  2. Jak zálohovat a obnovovat kontejnery Docker

  3. Jak pozastavit a obnovit kontejnery Docker

  1. Jak exportovat a importovat kontejnery Docker

  2. rozdíl mezi podmanem a dockerem.

  3. Co je Docker (a Linux kontejnery?)

  1. Jak cloudové kontejnery fungují a jejich výhody

  2. Jak sdílet data mezi kontejnery Docker

  3. Jak vypsat Docker kontejnery