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

Monitorování kontejnerů Docker s Grafana pomocí Dockprom

Monitorování je jednou ze základních činností ve světě DevOps. a ani vás nemusím přesvědčovat o tom, proč je sledování dobrý nápad. Už to víte, že?

Můžete se samozřejmě držet nástrojů příkazového řádku a monitorovat váš server a kontejnery dockerů, které na něm běží, přístup založený na grafickém uživatelském rozhraní přidává pohodlí analýzy metrik výkonu s intuitivním zážitkem pro sledování více parametrů najednou na obrazovce. je jednodušší sdílet monitorovací panel s méně technickými lidmi.

V tomto tutoriálu vám ukážu, jak můžete nastavit monitorování dokovacích kontejnerů pomocí dockprom a prezentovat jej ve vizuálně přitažlivé podobě díky Grafaně.

Monitorování hostitele dockeru a kontejnerů pomocí Dockprom

Dockprom je jeden takový zásobník, který provozuje různé monitorovací nástroje jako kolektivní sadu nástrojů pro potřeby monitorování vašeho serveru.

stefanprodan/dockpromDocker monitorování hostitelů a kontejnerů pomocí Prometheus, Grafana, cAdvisor, NodeExporter a AlertManager - stefanprodan/dockprom GitHubstefanprodan

Mějte na paměti, že zde uvedený příklad bude založen na konfiguraci reverzního proxy serveru Nginx. Oficiální konfigurace Dockpromu je založena na Caddy.

V Linux Handbook a High On Cloud používáme Nginx ve standardní praxi. Takže jsem přepracoval konfiguraci Dockprom tak, aby byla založena na Nginx místo Caddy. Výsledek vypadá velmi zjednodušeně jako naše předchozí nasazení Nginx.

Základy nastavení Dockprom

Dockprom využívá následující nástroje pro poskytování řešení monitorování vašeho hostitele a kontejnerů Docker.

Grafana

Grafana vám umožňuje dotazovat se, vizualizovat a upozorňovat na metriky a protokoly bez ohledu na to, kde jsou uloženy. Toto bude primární a jediný webový frontend, jehož prostřednictvím budete využívat všechny zbývající backendové aplikace sdílené ve zbývajících sekcích nástrojů.

Proto zde musíte přidat oblíbené proměnné prostředí založené na Nginx, které jste po celou dobu používali pro přístup k našim aplikacím odkudkoli na webu:

environment:
  - VIRTUAL_HOST=dockprom.domain.com
  - LETSENCRYPT_HOST=dockprom.domain.com

Ujistěte se, že jste toto změnili podle vaší domény nebo subdomény.

Prometheus

Prometheus je sada nástrojů pro monitorování a varování systémů s otevřeným zdrojovým kódem, kterou používají tisíce lidí po celém světě.

Pushgateway

Pushgateway je zprostředkovatelská služba, která vám umožňuje posílat metriky z úloh, které nelze odstranit. Možná si budete chtít přečíst toto, abyste opravdu věděli, zda to skutečně potřebujete. Je to proto, že existují omezené případy, kdy by to bylo nutné.

Správce výstrah

Správce výstrah zpracovává výstrahy zasílané klientskými aplikacemi, jako je například server Prometheus. Postará se o jejich deduplikaci, seskupení a směrování do správné integrace přijímače, jako je e-mail, PagerDuty nebo OpsGenie. Postará se také o ztišení a potlačení výstrah.

cAdvisor

cAdvisor je nástroj s otevřeným zdrojovým kódem od společnosti Google, který uživatelům kontejnerů poskytuje informace o využití zdrojů a výkonnostních charakteristikách jejich běžících kontejnerů.

V této konkrétní konfiguraci jsem čelil problému s načítáním dvou metrik na základě dvou příslušných chyb po nasazení oficiální konfigurace cAdvisor uvedené v Dockprom Stack:

Failed to get system UUID: open /etc/machine-id: no such file or directory
Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory

Vyhledal jsem oficiální úložiště cAdvisor, kde byla poskytnuta řešení. První fungoval, ale druhý nebyl úplně to, co jsem hledal, protože toto řešení bylo založeno na docker run založený příkaz ke spuštění.

Byla potřeba oprava Docker Compose. Nejprve jsem zkusil připojit /dev/kmsg ale to by tu práci nesplnilo. Konečně na základě docker run Na základě řešení jsem zjistil, že na podobných řádcích poskytuje Docker Compose samostatný příznak nazvaný devices který lze použít k připojení /dev/kmsg jako zařízení. Můžete si o tom přečíst zde.

Oprava prvního problému tedy spočívala v přidání následujícího do řádků v sekci svazků:

	volumes:
  	  ---
      ---
      - /etc/machine-id:/etc/machine-id:ro
      - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro

Druhý je právě probrán:

    devices:
      - /dev/kmsg:/dev/kmsg

Všimněte si, jak jsou tyto metriky důležité pro připojení z hostitele, protože je to hostitel, kterého chcete monitorovat prostřednictvím Dockeru.

Exportér uzlů

Prometheus Node Exporter odhaluje širokou škálu metrik souvisejících s hardwarem a jádrem. Je to podobné tomu, jak jsou metriky vystaveny v cAdvisor.

Po spojení všech výše uvedených prvků bude váš kompletní soubor Docker Compose vypadat takto:

version: '3.7'

networks:
  net:
    external: true

volumes:
    prometheus_data: {}
    grafana_data: {}

services:

  prometheus:
    image: prom/prometheus:v2.24.0
    container_name: prometheus
    volumes:
      - ./prometheus:/etc/prometheus
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=200h'
      - '--web.enable-lifecycle'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  alertmanager:
    image: prom/alertmanager:v0.21.0
    container_name: alertmanager
    volumes:
      - ./alertmanager:/etc/alertmanager
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  nodeexporter:
    image: prom/node-exporter:v1.0.1
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:v0.38.7
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro
      - /etc/machine-id:/etc/machine-id:ro
      - /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro
      #- /dev/kmsg:/dev/kmsg:rw
    #command: ["start", "--privileged"]
    restart: on-failure
    devices:
      - /dev/kmsg:/dev/kmsg
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

  grafana:
    image: grafana/grafana:7.3.7
    container_name: grafana
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
    restart: on-failure
    networks:
      - net
    environment:
      - VIRTUAL_HOST=dockprom.domain.com
      - LETSENCRYPT_HOST=dockprom.domain.com

    labels:
      org.label-schema.group: "monitoring"

  pushgateway:
    image: prom/pushgateway:v1.3.1
    container_name: pushgateway
    restart: on-failure
    networks:
      - net
    labels:
      org.label-schema.group: "monitoring"

Pokud jste zvědaví, můžete zkontrolovat a porovnat výše uvedený soubor s oficiálním návrhem Dockpromu.

Lepší doba provozu – bezplatná stránka pro monitorování a stav webu Radikálně lepší platforma pro monitorování dostupnosti s vestavěnými upozorněními na telefonní hovory, stavovými stránkami a správou incidentů. Zdarma plán v ceně! Jipi z Metrics Watch

Nastavení monitorování hostitele dockeru a kontejneru

Nyní, když jsem se podělil o to, co Dockprom Stack implementuje, s oficiálními definicemi nástrojů pro monitorování serverů, dovolte mi nyní uvést podrobný postup nasazení tohoto návrhu Dockpromu založeného na Nginx spolu se základními opravami cAdvisor.

Pro testovací účely můžete použít 1 GB nanode na Linode k vyzkoušení konfigurace, ale pro produkční účely je vyžadováno, aby měl server alespoň 4 GB. Je to hlavně kvůli Prometheovi.

Linode | Nezávislý otevřený cloud pro vývojáře Naším posláním je urychlit inovace tím, že bude cloud computing jednoduchý, cenově dostupný a dostupný pro všechny. Linode Předpokládám, že znáte koncept Docker a Docker Compose. Všimněte si také, že můžete sledovat pouze kontejnery Docker běžící na stejném serveru.

Krok 1:Načtěte oficiální konfiguraci Dockprom

Otevřete terminál na serveru a zadejte následující příkaz:

git clone https://github.com/stefanprodan/dockprom
cd dockprom

Krok 2:Revize souboru docker-compose.yml

Jak jsem před chvílí diskutoval a sdílel soubor docker-compose.yml založený na Nginx v sekci Node Exporter. Upravte soubor a upravte jej.

Krok 3:Spusťte Config!

Za předpokladu, že se nacházíte ve stejném adresáři dockprom, spusťte příkaz Docker Compose pro spuštění zásobníku Dockprom:

docker-compose up -d

Krok 4:Přístup k Dockprom Stack přes Grafana

Pamatujete si, že jste svou přístupovou adresu URL nastavili dodatečně v konfiguraci Grafana pro webový přístup? Nyní jej můžete použít k získání úplného přístupu do zásobníku.

Uživatelské jméno i heslo bylo nastaveno na admin . Důrazně se doporučuje změnit jej na silné heslo. Typický webový přihlašovací panel vypadá takto:

Počkejte, až se rozhraní načte:

Bonusový tip

Poté, co se přihlásíte do Grafany, může být rychlá navigace ke statistikám metrik zpočátku ohromující, a proto sdílím přímý odkaz na panel řídicího panelu pro okamžitý přístup:https://dockprom.domain.com/dashboards

Jak vidíte, stačí přidat /dashboards na vlastní doménu nebo subdoménu. Na této stránce můžete sledovat metriky pro:

  • Docker Containers
  • Hostitelský systém
  • Prometheus
  • Nginx

Vezměte prosím na vědomí, že Nginx (4. a poslední ve výše uvedeném seznamu) bude zobrazovat prázdné statistiky, pokud není přímo nainstalován na hostiteli. To by nemělo být zaměňováno s Jwilder Nginx, protože běží na Dockeru. V takovém případě byste museli speciálně sledovat kontejner Nginx.

Zde je obrazovka Grafana pro monitorování hostitele Docker:

Snímek obrazovky monitorování kontejneru jsem již sdílel na začátku tohoto článku:

Doufám, že vám tento stručný návod pomůže s nastavením tohoto vynalézavého zásobníku na vašem serveru. Opět je to užitečné pro jeden server. Pokud máte kontejnery na více serverech, můžete použít Swarmprom od stejného vývojáře.

stefanprodan/swarmprom Instrumentace Docker Swarm s Prometheus, Grafana, cAdvisor, Node Exporter a Alert Manager - stefanprodan/swarmprom GitHubstefanprodan

Pokud máte nějaké připomínky nebo návrhy, neváhejte se podělit o své názory v sekci níže.


Docker
  1. Co je Docker? Naučte se používat kontejnery – vysvětleno s příklady

  2. Nastavte Nextcloud s Redis pomocí Dockeru

  3. 3 strategie pro automatizované produkční nasazení s Dockerem

  1. Docker vs. Kubernetes

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

  3. Proč všichni používají Docker?

  1. Monitorujte a spravujte kontejnery Docker pomocí Portainer.io (nástroj GUI) – část 2

  2. Monitorujte a spravujte kontejnery Docker pomocí Portainer.io (nástroj GUI) – Část 1

  3. Jak spravovat kontejnery Docker pomocí Portainer na Ubuntu