INTEGRITY Dokumentace

Diagnostické protokoly tunelu

Cloudflare Tunnel generuje sadu diagnostických protokolů, které lze použít k řešení problémů s cloudflared. Diagnostická zpráva shromažďuje data z jedné instance cloudflared spuštěný na lokálním počítači.

Získání diagnostických protokolů

Kroky pro získání diagnostických protokolů závisí na vašem cloudflared prostředí nasazení.

Předpoklady

Hostitelské prostředí

Tyto pokyny platí pro vzdáleně spravované i lokálně spravované tunely spuštěné přímo na hostitelském počítači.

  1. (Pouze pro Linux) Chcete-li do protokolů zahrnout síťovou diagnostiku, povolte cloudflared uživateli vytvářet sokety RAW a PACKET bez oprávnění root:

    sudo setcap cap_net_raw+ep /usr/bin/traceroute && sudo setcap cap_net_raw+ep /usr/bin/traceroute

    Pokud nenastavíte cap_net_raw, poté nebudou data traceroute k dispozici.

  2. Získání diagnostických protokolů:

    cloudflared tunnel diag

    Pokud existuje více instancí cloudflared běží na stejném hostiteli, uveďte IP adresa a port serveru metrik pro instanci, kterou chcete diagnostikovat. Například:

    cloudflared tunnel diag --metrics 127.0.0.1:20241

Tento příkaz vypíše stav každé diagnostické úlohy a umístí cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip soubor ve svém pracovním adresáři.

Docker

cloudflared čte diagnostická data z server metrik tunelu. Chcete-li získat diagnostické protokoly, musí být Metrics Server exponován z kontejneru Docker a dostupný z hostitelského počítače.

  1. Zjistěte port serveru metrik pro cloudflared instance běžící v Dockeru.

  2. Ujistěte se, že je kontejner nasazen s povoleným přesměrováním portů. Diagnostická funkce si vyžádá informace z instance Docker prostřednictvím místního portu 20241, proto byste měli přesměrovat port 20241 na port kontejneru získaný v kroku 1:

    docker run -d -p 20241:<metrics_port> docker.io/cloudflare/cloudflared tunnel ...
  3. Ověřte, že můžete dosáhnout adresy serveru metrik z prostředí hostitele Docker:

    curl localhost:20241/diag/tunnel

    Tento příkaz by měl vrátit JSON:

    {
      "tunnelID": "ef96b330-a7f5-4bce-a00e-827ce5be077f",
      "connectorID": "d236670a-9f74-422f-adf1-030f5c5f0523",
      "connections": [
        { "isConnected": true, "protocol": 1, "edgeAddress": "198.41.192.167"},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.200.113", "index": 1},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.192.47", "index": 2},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.200.73", "index": 3}
      ],
      "icmp_sources": ["192.168.1.243", "fe80::c59:bd4a:e815:ed6"]
    }
  4. Spusťte diagnostiku pomocí ID kontejneru Docker:

    cloudflared tunnel diag --diag-container-id=<containerID>

    Případně můžete místo ID kontejneru zadat jeho název:

    cloudflared tunnel diag --diag-container-id=<containerName>

    Spuštění diagnostického příkazu s ID kontejneru umožňuje cloudflared shromáždit informace z prostředí Docker, například protokoly a podrobnosti o kontejnerech.

Tento příkaz vypíše stav každé diagnostické úlohy a umístí cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip soubor ve svém pracovním adresáři.

Kubernetes

Diagnostická funkce si vyžádá data z server metrik tunelu pomocí portů 20241 na 20245. Budete muset použít přesměrování portů, abyste povolili místní cloudflared instance k připojení k serveru metrik na jednom z těchto portů.

  1. Zjistěte u tunelu port serveru metrik.

  2. Povolte předávání portů:

    kubectl port-forward <pod> <diagnostic_port>:<metrics_port>
    • <pod>: Název podu, ve kterém tunel běží
    • <diagnostic_port> je libovolný místní port v rozsahu 20241 na 20245.
    • <metrics_port> je port podu Kubernetes pro cloudflared instance, kterou chcete diagnostikovat (získaná v kroku 1).

    Pokud například nastavíte adresu serveru metrik na 0.0.0.0:12345:

    kubectl port-forward cloudflared-6d4897585b-r8kfz 20244:12345

    Připojení navázaná k místnímu portu 20244 jsou přesměrovány na port 12345 podu, ve kterém běží tunel.

  3. Spusťte diagnostiku:

    cloudflared tunnel diag --diag-pod-id=<podID>

    Pokud pod spouští více aplikací nebo služeb a cloudflared není v podu první, musíte zadat buď ID kontejneru, nebo jeho název:

    cloudflared tunnel diag --diag-pod-id=<podID> --diag-container-id=<containerName>

Tento příkaz vypíše stav každé diagnostické úlohy a umístí cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip soubor ve svém pracovním adresáři.

soubory cloudflared-diag

cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip archiv obsahuje níže uvedené soubory. Data v souboru se vztahují buď k cloudflared diagnostikovaná instance (diagnosee) nebo instance, která diagnostiku spustila (diagnoser). Pokud například váš tunel běží v kontejneru Docker, diagnosee je instance Docker a diagnoser je hostitelská instance.

Název souboru Popis Instance
cli-configuration.json Parametry spuštění tunelu použitá při spouštění tunelu diagnosee
cloudflared_logs.txt Soubor protokolu tunelu1 diagnosee
configuration.json Parametry konfigurace tunelu diagnosee
goroutine.pprof profil goroutin zpřístupněný pomocí pprof diagnosee
heap.pprof profil haldy zpřístupněný pomocí pprof diagnosee
metrics.txt Snímek Metriky tunelu v době diagnostiky diagnosee
network.txt Trasování (traceroute) ve formátu JSON do globální sítě Cloudflare pomocí IPv4 a IPv6 diagnoser
raw-network.txt Nezpracované trasování (traceroute) do globální sítě Cloudflare pomocí IPv4 a IPv6 diagnoser
systeminformation.json Informace o operačním systému a využití prostředků diagnosee
task-result.json Výsledek jednotlivých diagnostických úloh diagnoser
tunnelstate.json Připojení tunelu v době diagnostiky diagnosee

Poznámky pod čarou

  1. Pokud je soubor protokolu prázdný, možná bude potřeba nastavit --loglevel na debug když spustíte tunel. --loglevel parametr je vyžadován pouze v případě, že jste tunel spustili z rozhraní CLI pomocí cloudflared tunnel run příkaz. Není nutný, pokud tunel běží jako služba Linux/macOS nebo v Dockeru/Kubernetes.