Cloud Trace e Cloud Service Mesh
Nota: questa guida supporta solo Cloud Service Mesh con le API Istio e non supporta le API. non supporta Google Cloud le API. Per ulteriori informazioni, consulta la panoramica di Cloud Service Mesh.Cloud Trace è un sistema di tracciamento distribuito che raccoglie i dati di latenza dalle applicazioni e li visualizza quasi in tempo reale. Ti consente di seguire una richiesta di esempio tramite il tuo sistema distribuito, di osservare le chiamate di rete e di fornire una descrizione end-to-end del tuo sistema.
Cloud Trace è disponibile con le installazioni di Cloud Service Mesh sulle seguenti piattaforme:
- GKE su Google Cloud
- Cluster GKE Enterprise on-premise se hai eseguito l'installazione con l'autorità di certificazione Cloud Service Mesh
Tieni presente che Cloud Trace è disattivato per impostazione predefinita. Una volta attivate, le pagine di Cloud Service Mesh nella Google Cloud console forniscono un link alle tracce nella pagina Cloud Trace . Per informazioni dettagliate sui prezzi, consulta la pagina dei prezzi di Cloud Trace.
Attivare Cloud Trace
Questa sezione mostra come attivare Cloud Trace.
Gestito (TD)
Questa sezione mostra come attivare Cloud Trace su Cloud Service Mesh con un control plane Traffic Director gestito.
Esegui il comando seguente per attivare Cloud Trace:
cat <<EOF | kubectl apply -n istio-system -f - apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: enable-cloud-trace namespace: istio-system spec: tracing: - providers: - name: stackdriver EOF
Gestito (Istiod)
Questa sezione mostra come attivare Cloud Trace su Cloud Service Mesh con il control plane Istiod gestito.
Esegui il comando seguente:
cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- defaultConfig: tracing: stackdriver: {} kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOFdove release-channel è il tuo canale di rilascio (
asm-managed,asm-managed-stable, oasm-managed-rapid).Esegui il comando seguente per visualizzare la configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
Per verificare che Cloud Trace sia attivato, assicurati che le seguenti righe vengano visualizzate nella sezione
mesh:.... apiVersion: v1 data: mesh: | .... defaultConfig: tracing: stackdriver:{} ...Riavvia i proxy.
Tieni presente che la configurazione del tracer fa parte della configurazione di bootstrap del proxy, quindi ogni pod deve essere riavviato e reinserito per applicare l'aggiornamento del tracer. Ad esempio, puoi utilizzare il comando seguente per riavviare i pod appartenenti a un deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Interno al cluster
Questa sezione mostra come attivare Cloud Trace su Cloud Service Mesh con il control plane in-cluster.
Per attivare Cloud Trace, esegui di nuovo il deployment del control plane gestito dal cliente utilizzando il seguente file di overlay. Per saperne di più sui file di overlay, consulta Informazioni sui file di overlay.
Predefinito
Esegui il comando seguente per attivare Cloud Trace:
./asmcli install \
OTHER_FLAGS \
--option cloud-tracing
Questo comando applica il seguente file di overlay per attivare il tracciamento con le opzioni predefinite. Tieni presente che la frequenza di campionamento predefinita è dell'1%. Se vuoi eseguire l'override del valore predefinito, devi utilizzare --custom-overlay.
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
values:
global:
proxy:
tracer: stackdriver
Per un elenco delle opzioni, consulta il
anthos-service-mesh pacchetto.
Personalizzato
Puoi eseguire l'override del valore predefinito specificando un valore tracing.sampling. Il
valore deve essere compreso tra 0,0 e 100,0 con una precisione di 0,01. Ad
esempio, per tracciare 5 richieste su 10.000,utilizza 0, 05.
L'esempio seguente mostra una frequenza di campionamento del 100% (che eseguirai solo a scopo dimostrativo o di risoluzione dei problemi).
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing:
sampling: 100
values:
global:
proxy:
tracer: stackdriver
Esegui il comando seguente per attivare Cloud Trace:
./asmcli install \
OTHER_FLAGS \
--custom_overlay PATH_TO_FILE
Tieni presente che la configurazione del tracer fa parte della configurazione di bootstrap del proxy, quindi i pod devono essere riavviati e reinseriti per applicare l'aggiornamento del tracer. Utilizza il comando seguente per riavviare i pod appartenenti a un deployment:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Propagazione del contesto di Trace
Sebbene i proxy sidecar possano inviare automaticamente gli intervalli di traccia, hanno bisogno di alcuni suggerimenti per collegare l'intera traccia. Le applicazioni devono propagare le intestazioni HTTP appropriate in modo che, quando i proxy inviano informazioni sull'intervallo, gli intervalli possano essere correlati correttamente in una singola traccia.
A questo scopo, un'applicazione deve raccogliere e propagare le intestazioni appropriate dalla richiesta in entrata a tutte le richieste in uscita. La configurazione di tracciamento Stackdriver di Cloud Service Mesh accetterà uno dei seguenti formati di intestazione e propagherà tutti i seguenti formati:
- B3 (
x-b3-traceid,x-b3-spanid,x-b3parentspanid,x-b3-sampled,x-b3-flags) - TraceContext W3C (
traceparent) - Cloud Trace (
x-cloud-trace-context) - TraceBin gRPC (
grpc-trace-bin)
Ciò significa che le tue applicazioni possono utilizzare uno di questi formati per propagare il contesto di tracciamento e le tracce verranno generate e impostate correttamente in Stackdriver.
Esempio
Di seguito è riportato un esempio di richiesta HTTP-Get con un'intestazione traceparent nella richiesta originale. Nota le intestazioni del contesto di traccia aggiuntive aggiunte dal proxy.
$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
* Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
"args": {
"freeform": ""
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
"Host": "httpbin:8000",
"Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
"User-Agent": "curl/7.80.0-DEV",
"X-B3-Sampled": "1",
"X-B3-Spanid": "a0c798646d74cef0",
"X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
"X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
"X-Envoy-Attempt-Count": "1",
"X-Forwarded-Client-Cert": "<REDACTED>"
},
"json": null,
"method": "GET",
"origin": "127.0.0.6",
"url": "http://httpbin:8000/anything?freeform="
}
Tieni presente che nel set di intestazioni delle richieste restituito è presente l'intero set di intestazioni del contesto di traccia.
Per altri esempi di propagazione delle intestazioni, consulta Propagazione del contesto di traccia.
Creare una traccia da un client con ID personalizzato
Per creare una traccia da un client con un ID personalizzato, utilizza il comando curl per creare una richiesta con un client esterno e forzarla a mostrare una traccia. Ad esempio:
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
Per saperne di più su x-client-trace-id, consulta la
documentazione di Envoy.
DISABLE_TRACING
variabili da configurare.
Accedere alle tracce
Visualizzare gli esempi di traccia per un servizio
Per visualizzare un campionamento delle tracce per un servizio nella tua app:
Vai alla pagina Cloud Service Mesh nella Google Cloud console.
In Servizi, seleziona il nome del servizio che vuoi ispezionare.
Lo screenshot seguente mostra un esempio di servizio
frontend.
In Tracce delle richieste, fai clic su una traccia per visualizzare ulteriori informazioni.
Lo screenshot seguente mostra un esempio del riquadro secondario della richiesta di traccia.

Visualizzare tutte le tracce
Per visualizzare tutte le tracce di un servizio:
Vai alla pagina Cloud Service Mesh nella Google Cloud console.
In Servizi, seleziona il nome del servizio che vuoi ispezionare.
Vai alla pagina Metriche.
Specifica un intervallo di tempo dal menu a discesa Intervallo di tempo o imposta un intervallo personalizzato con la sequenza temporale.
Fai clic su Visualizza tracce.
Le tracce di un servizio in Cloud Service Mesh contengono le seguenti informazioni:
- Latenze delle richieste tra i diversi servizi nel mesh.
- Proprietà delle richieste HTTP, inclusi ID, URL, dimensioni, latenza e protocollo.
- Nome del servizio, spazio dei nomi e ID del mesh come parte delle etichette
istio.canonical_service,istio.namespaceeistio.mesh_id, rispettivamente.