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

Vybavení kontejnerů s elastickým zásobníkem

<š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

  1. 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.

  2. 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.

  3. 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
    
  4. 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.

  1. Nainstalujte oficiální podpisový klíč balíčku Elastic APT:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
  2. 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
    
  3. 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
    
  4. Obnovte seznam dostupných balíčků:

    sudo apt-get update
    
  5. 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
    
  6. 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.

  1. Důvěřujte elastickému podpisovému klíči:

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    
  2. 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
        
  3. Aktualizujte yum cache, abyste zajistili dostupnost všech nových balíčků:

    sudo yum update
    
  4. 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
    
  5. 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
  1. 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
    
  2. S těmito nastaveními spusťte elasticsearch službu.

    sudo systemctl start elasticsearch
    
  3. 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í.

  1. 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íčem filebeat.inputs :

    Soubor:/ etc/filebeat/filebeat.yml
    1
    2
    3
    4
    5
    6
    
    filebeat.inputs:
    - type: docker
      containers.ids:
      - '*'
      processors:
      - add_docker_metadata: ~
  2. 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
  3. Nakonec přidejte následující autodiscover konfigurace na konec souboru filebeat.yml soubor:

    Soubor:/ etc/filebeat/filebeat.yml
    1
    2
    3
    4
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
  4. Povolte nginx modul, který bude použit později v tomto tutoriálu:

    sudo /usr/bin/filebeat modules enable nginx
    
  5. 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í.

  1. Metricbeat používá modul ke shromažďování metrik kontejnerů. Chcete-li povolit docker, zadejte následující příkaz a nginx moduly:

    sudo /usr/bin/metricbeat modules enable docker
    sudo /usr/bin/metricbeat modules enable nginx
    
  2. 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
  3. 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.

  1. 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.
  2. 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.
  3. 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()>

  4. 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()>

  5. 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-*.

  6. 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.

  7. 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()>

  8. 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()>

  9. 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()>

  10. 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.

  11. 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
    
  12. 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.
  13. Zkuste znovu vydat předchozí for ... příkaz k odeslání dalších deseti curl požadavky do kontejneru a sledujte, jak se histogram protokolu mění, aby odrážel nové protokoly.

  14. 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()>

  15. 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

Docker
  1. Jak nainstalovat WordPress s Dockerem na Ubuntu

  2. Nainstalujte ModSecurity s Apache v kontejneru Docker

  3. Jak nainstalovat tiskárnu s Ubuntu?

  1. Jak nainstalovat Docker a nasadit LAMP Stack

  2. Jak nainstalovat Ghost na Debian s Nginx

  3. Jak nainstalovat Laravel Framework pomocí Softaculous

  1. Jak nainstalovat LAMP Stack na Ubuntu 18.04

  2. Jak nainstalovat LAMP Stack na CentOS 7

  3. Jak nainstalovat Elastic Stack na Ubuntu 18.04 LTS