<šablona x-if=visible><šablona x-if=$isMobile()>
TheElastic Stack může monitorovat řadu dat generovaných kontejnery Docker. V této příručce nastavíte Linode pro analýzu a vizualizaci protokolů a metrik kontejnerů pomocí nástrojů jako Kibana, Beats a Elasticsearch. Po dokončení budete moci nakonfigurovat svůj systém tak, aby automaticky shromažďoval data pro další kontejnery.
Než začnete
-
Pokud jste tak ještě neučinili, vytvořte si účet Linode a Compute Instance. Podívejte se na naše příručky Začínáme s Linode a Vytvoření výpočetní instance.
-
Při aktualizaci systému postupujte podle našeho průvodce nastavením a zabezpečením výpočetní instance. Můžete také chtít nastavit časové pásmo, nakonfigurovat název hostitele, vytvořit omezený uživatelský účet a posílit přístup SSH.
-
Chcete-li nainstalovat a nakonfigurovat bránu firewall (UFW) na vašem systému Ubuntu nebo Debian, postupujte podle našeho Průvodce UFW nebo podle našeho Průvodce FirewallD pro systémy založené na rpm nebo CentOS. Po konfiguraci brány firewall se ujistěte, že jsou otevřené potřebné porty, abyste mohli pokračovat v připojení přes SSH pro zbytek této příručky:
sudo ufw allow ssh
-
Nainstalujte Docker na svůj Linode podle instalační příručky z projektu Docker.
Poznámka Služby v této příručce se vážou pouze na localhost, což znamená, že nejsou dostupné mimo Linode ze vzdálených hostitelů. To zajišťuje, že REST API Elasticsearch zůstane soukromé pro localhost a není vzdáleně přístupné z internetu. Pokud provedete kroky nad rámec této příručky pro další konfiguraci Elasticsearch a souvisejících komponent, ujistěte se, že váš firewall je na svém místě a správně blokuje provoz do uzlů Elasticsearch a Kibana z internetu (porty 9200 a 9300 pro Elasticsearch a 5601 pro Kibana), aby je zachoval řádně zabezpečeno.
Instalovat komponenty elastického zásobníku
Před konfigurací systému pro sledování běžících kontejnerů nejprve nainstalujte součásti potřebné ke shromažďování a odesílání protokolů a metrik do Elasticsearch.
Distribuce založené na Debianu
Nakonfigurujte Elastic apt
úložiště a nainstalujte potřebné balíčky a jejich závislosti.
-
Nainstalujte oficiální podpisový klíč balíčku Elastic APT:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
-
Nainstalujte
apt-transport-https
balíček, který je nutný k načtenídeb
balíčky obsluhované přes HTTPS:sudo apt-get install apt-transport-https
-
Přidejte informace o úložišti APT do seznamu zdrojů vašeho serveru:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
-
Obnovte seznam dostupných balíčků:
sudo apt-get update
-
Před instalací Elasticsearch musí být přítomen běhový modul Java. Na systémech, jako je Ubuntu 18.04 LTS, pomocí
default-jre-headless
balíček nainstaluje kompatibilní běhové prostředí Java:sudo apt-get install default-jre-headless
-
Nainstalujte Elasticsearch, Kibana, Filebeat a Metricbeat:
sudo apt-get install elasticsearch kibana filebeat metricbeat
Distribuce založené na Redhat
Nakonfigurujte rpm
úložiště pro yum
a související balicí nástroje.
-
Důvěřujte elastickému podpisovému klíči:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
Vytvořte konfiguraci úložiště yum pro použití úložiště Elastic yum:
- Soubor:/ etc/yum.repos.d/elasticsearch.repo
1 2 3 4 5 6 7 8 9
[elasticsearch-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
-
Aktualizujte
yum
cache, abyste zajistili dostupnost všech nových balíčků:sudo yum update
-
Před instalací Elasticsearch musí být přítomen běhový modul Java. Na CentOS lze například nainstalovat kompatibilní běhové prostředí Java pomocí bezhlavého balíčku OpenJDK:
sudo yum install java-11-openjdk-headless
-
Nainstalujte Elasticsearch, Kibana, Filebeat a Metricbeat:
sudo yum install elasticsearch kibana filebeat metricbeat
Konfigurace pružného zásobníku
Aby bylo možné správně zjišťovat a zaznamenávat metriky kontejnerů, měla by být nakonfigurována každá součást elastického zásobníku.
Elasticsearch
V souboru /etc/elasticsearch/jvm.options
dvě hodnoty, které začínají -Xm
by měl být bez komentáře. Tato nastavení přikazují JVM, aby přidělil určité množství paměti. Doporučená hodnota pro tato nastavení je 50 % dostupné systémové paměti RAM. Například v systému s 1G RAM by tato nastavení měla být:
- Soubor:/ etc/elasticsearch/jvm.options
1 2
-Xms512m -Xmx512m
-
Před spuštěním Elasticsearch nainstalujte některé nezbytné pluginy pro zpracování geoip a dat user-agent.
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-user-agent sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-geoip
-
S těmito nastaveními spusťte
elasticsearch
službu.sudo systemctl start elasticsearch
-
Počkejte krátkou dobu, než se Elasticsearch spustí, a poté zkontrolujte, zda Elasticsearch odpovídá přes REST API:
curl http://localhost:9200
Měli byste vidět výstup podobný následujícímu:
{ "name" : "iQEk_-M", "cluster_name" : "elasticsearch", "cluster_uuid" : "tQeLgbKrTNOp2AoqdmTItw", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "d2ef93d", "build_date" : "2018-12-17T21:17:40.758843Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Elasticsearch je připraven k indexování dokumentů.
Kibana
Většina výchozích nastavení Kibana je vhodná pro účely této příručky. Nejsou nutné žádné změny konfigurace; spusťte kibana
službu.
sudo systemctl start kibana
Filebeat
Použijte docker
vstup, který umožní Filebeat dynamicky zachytit spuštěné kontejnery. To zmírňuje potřebu zadávat cesty k souborům protokolu Docker a místo toho umožňuje Filebeat objevovat kontejnery při jejich spuštění.
-
Přidejte následující text do horní části konfiguračního souboru Filebeat, abyste dali pokyn pro
filebeat
démon pro zachycení protokolů kontejneru Docker. Tyto řádky by měly být zadány pod konfiguračním klíčemfilebeat.inputs
:- Soubor:/ etc/filebeat/filebeat.yml
1 2 3 4 5 6
filebeat.inputs: - type: docker containers.ids: - '*' processors: - add_docker_metadata: ~
-
Odkomentujte následující řádek a změňte jeho hodnotu na
true
, což umožní Filebeat vytvářet související panely Kibana pro zaznamenané protokoly kontejnerů:- Soubor:/ etc/filebeat/filebeat.yml
1
setup.dashboards.enabled: true
-
Nakonec přidejte následující
autodiscover
konfigurace na konec souborufilebeat.yml
soubor:- Soubor:/ etc/filebeat/filebeat.yml
1 2 3 4
filebeat.autodiscover: providers: - type: docker hints.enabled: true
-
Povolte
nginx
modul, který bude použit později v tomto tutoriálu:sudo /usr/bin/filebeat modules enable nginx
-
Zbytek konfiguračního souboru dá pokyn Filebeat, aby odeslal protokoly lokálně spuštěné instanci Elasticsearch, které lze ponechat beze změny. Spusťte Filebeat:
sudo systemctl start filebeat
Metricbeat
Podobně jako Filebeat nakonfigurujte Metricbeat podobně, aby bylo možné dynamicky zjišťovat běžící kontejnery k monitorování.
-
Metricbeat používá modul ke shromažďování metrik kontejnerů. Chcete-li povolit
docker
, zadejte následující příkaz anginx
moduly:sudo /usr/bin/metricbeat modules enable docker sudo /usr/bin/metricbeat modules enable nginx
-
Odkomentujte následující řádek a změňte jeho hodnotu na
true
, což umožní Metricbeat vytvářet související panely Kibana pro zaznamenané protokoly kontejnerů:- Soubor:/ etc/metricbeat/metricbeat.yml
1
setup.dashboards.enabled: true
-
Zbytek konfiguračního souboru dá pokyn Metricbeat, aby odeslal protokoly lokálně spuštěné instanci Elasticsearch, kterou lze ponechat beze změny. Metricbeat lze nyní spustit:
sudo systemctl start metricbeat
Vizualizace protokolů a metrik kontejneru
Následující příklad ukazuje, jak Filebeat a Metricbeat automaticky zachycují data kontejneru, ke kterým lze přistupovat v rámci Kibana.
-
Chcete-li začít, spusťte na svém Linode jednoduchý kontejner nginx Docker.
sudo docker run --name nginx -P -d --label co.elastic.logs/module=nginx nginx
- Tento příkaz spustí webový server na pozadí a zpřístupní naslouchající HTTP službu pod náhodným číslem portu.
--label
argument je ahint, aby nechal Filebeat automaticky analyzovat formát protokolu určitých typů kontejnerů, což je v tomto případě nginx.
-
Chcete-li otevřít zabezpečené připojení ke Kibaně, otevřete na svém Linode tunel SSH na port 5601.
ssh -L 5601:localhost:5601 <[email protected]>
- Nahraďte
<[email protected]>
s uživatelským jménem a IP adresou vašeho Linode. - Toto přesměruje port 5601 lokálně na port 5601 na vašem Linode.
- Komplexní průvodce používáním tunelů SSH na různých platformách je k dispozici v naší příručce Vytvořit tunel SSH pro MySQL.
- Nahraďte
-
Přejděte na
http://localhost:5601
ve vašem prohlížeči, který zobrazí následující úvodní stránku pro Kibana.<šablona x-if=visible><šablona x-if=$isMobile()>
-
Klikněte na Správa odkaz v levém dolním postranním panelu. Zobrazí se následující stránka. Poté klikněte na Vzory indexu pro vstup na konfigurační stránku Index Pattern.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Vzory indexů určují, jak Kibana chápe indexy, které jsou přítomné v Elasticsearch. Aby se některé vizualizace zobrazovaly správně, je nutné nejprve nakonfigurovat výchozí vzor indexu. Vyberte filebeat-* na levé straně stránky pro konfiguraci vzoru indexu filebeat-*.
-
Klikněte na ikonu hvězdičky v pravém horním rohu stránky, chcete-li nastavit tento vzor indexu jako výchozí v Kibaně.
Kibana je nyní správně nakonfigurována s výchozím vzorem indexu.
-
Filebeat a Metricbeat jsou nastaveny tak, aby automaticky konfigurovaly Elasticsearch a Kibana, takže řídicí panely a vzory indexů jsou načteny a připraveny k použití. Klikněte na Hlavní panel v levém postranním panelu, který zobrazí následující stránku.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Do vyhledávacího pole zadejte „kontejner“, aby se zobrazily předem vyplněné řídicí panely pro systémové kontejnery. Klikněte na Přehled [Metricbeat Docker] odkaz.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Přehled [Metricbeat Docker] se načte řídicí panel, který ukazuje několik aspektů aktuálně spuštěných metrik kontejnerů. Ovládací panel zobrazuje seznam spuštěných kontejnerů, celkový počet spuštěných, pozastavených a zastavených kontejnerů a také metriky spotřeby zdrojů kontejnerů.
<šablona x-if=visible><šablona x-if=$isMobile()>
Když se posunete dále dolů, zobrazí se také grafy ukazující využití prostředků kontejneru v průběhu času, včetně aktivity CPU, paměti a sítě.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Než přejdete k dalším vizualizacím Kibana, vygenerujte nějakou aktivitu protokolu z nginx odesláním požadavků HTTP do naslouchajícího kontejneru. Nejprve pomocí
docker
zjistěte, na kterém portu kontejner naslouchá požadavkům příkaz:docker ps
Měli byste vidět výstup podobný následujícímu:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3f0c6d284f1f nginx "nginx -g 'daemon of…" 23 minutes ago Up 23 minutes 0.0.0.0:32769->80/tcp nginx
Z tohoto výstupu víme, že HTTP server lze dosáhnout zasláním požadavků na port 32769, který je přesměrován na port 80 v kontejneru. Port ve vašem systému se může lišit.
-
Odešlete na tento port několik požadavků pomocí
curl
příkaz nahrazující<port>
s číslem nalezeným v předchozím kroku:for i in $(seq 1 10) ; do curl localhost:<port> ; done
-
Nyní je v Kibaně pro tento kontejner k dispozici řada protokolů. Klikněte na Objevit v levém postranním panelu v Kibaně. Zobrazí se následující obrazovka.
<šablona x-if=visible><šablona x-if=$isMobile()>
- Histogram v horní části stránky udává celkový počet protokolů kontejneru v průběhu času.
- Tabulka pod grafem obsahuje obsah jednotlivých protokolů.
- Kliknutím na šipky nalevo od časového razítka každého protokolu zobrazíte informace o každém zaznamenaném protokolu.
-
Zkuste znovu vydat předchozí
for ...
příkaz k odeslání dalších deseticurl
požadavky do kontejneru a sledujte, jak se histogram protokolu mění, aby odrážel nové protokoly. -
Klikněte na Hlavní panel na levém postranním panelu a poté na něj klikněte podruhé, abyste vstoupili na obrazovku výběru řídicího panelu. Na vyhledávacím panelu vyhledejte „nginx“.
<šablona x-if=visible><šablona x-if=$isMobile()>
-
Klikněte na Protokoly přístupu a chyb [Filebeat Nginx] odkaz, který zobrazí řídicí panel s řadou vizualizací týkajících se aktivity nginx.
<šablona x-if=visible><šablona x-if=$isMobile()>
Další moduly
Tento výukový program ukazuje, jak mohou Filebeat a Metricbeat automaticky zaznamenávat metriky kontejnerů a protokoly, aniž by bylo nutné explicitně konfigurovat cesty nebo konfigurace souborů protokolu. Kromě příkladů nginx uvedených zde, další odkazy uvedené níže vyjmenovávají další moduly, které lze načíst do Filebeat a Metricbeat pro jiné služby.
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Moduly Filebeat
- Metricbeat moduly
- Sledování elastických kontejnerů
- Příručka příkazového řádku Docker