← Cloudflare One / cloudflare-one / networks / connectors / cloudflare-tunnel / troubleshoot-tunnels
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
cloudflaredverzi 2024.12.2 nebo novější nainstalovanou na hostiteli
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.
-
(Pouze pro Linux) Chcete-li do protokolů zahrnout síťovou diagnostiku, povolte
cloudflareduž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/traceroutePokud nenastavíte
cap_net_raw, poté nebudou data traceroute k dispozici. -
Získání diagnostických protokolů:
cloudflared tunnel diagPokud existuje více instancí
cloudflaredběží 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.
-
Zjistěte port serveru metrik pro
cloudflaredinstance běžící v Dockeru. -
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 port20241na port kontejneru získaný v kroku 1:docker run -d -p 20241:<metrics_port> docker.io/cloudflare/cloudflared tunnel ... -
Ověřte, že můžete dosáhnout adresy serveru metrik z prostředí hostitele Docker:
curl localhost:20241/diag/tunnelTento 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"] } -
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
cloudflaredshromáž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ů.
-
Zjistěte u tunelu port serveru metrik.
-
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 rozsahu20241na20245.<metrics_port>je port podu Kubernetes procloudflaredinstance, 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:12345Připojení navázaná k místnímu portu
20244jsou přesměrovány na port12345podu, ve kterém běží tunel. -
Spusťte diagnostiku:
cloudflared tunnel diag --diag-pod-id=<podID>Pokud pod spouští více aplikací nebo služeb a
cloudflarednení 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
-
Pokud je soubor protokolu prázdný, možná bude potřeba nastavit
--loglevelnadebugkdyž spustíte tunel.--loglevelparametr je vyžadován pouze v případě, že jste tunel spustili z rozhraní CLI pomocícloudflared tunnel runpříkaz. Není nutný, pokud tunel běží jako služba Linux/macOS nebo v Dockeru/Kubernetes. ↩