Google Cloud offre funzionalità avanzate di monitoraggio, logging e diagnostica per le applicazioni Rust.
Le librerie client Rust sono strumentate per emettere dati di tracciamento, metriche e logging. L'instrumentazione è facoltativa, devi attivarla esplicitamente. Questo documento descrive gli indicatori disponibili e come attivarli.
Indicatori disponibili
Le librerie client Rust sono strumentate per generare i seguenti indicatori:
INFOper ogni richiesta logica del client. In genere, un'unica chiamata al metodo nella struttura client ottiene questo intervallo (ad esempio, la chiamataaccess_secret_versionsu un clientSecretManagerService).- Una metrica dell'istogramma che misura il tempo trascorso per ogni richiesta logica del client. La metrica principale è
gcp.client.request.duration. - Log
WARNper ogni richiesta client logica non riuscita. INFOper ogni tentativo RPC di basso livello. In genere, un singolo metodo nella struct client riceve un intervallo di questo tipo, ma potrebbero essercene di più se la libreria deve riprovare la RPC.DEBUGper ogni tentativo di basso livello non riuscito.
Questi intervalli e log seguono le Convenzioni semantiche di OpenTelemetry con attributiGoogle Cloud aggiuntivi. Sia gli span che i log devono essere adatti al monitoraggio della produzione.
Gli indicatori includono attributi OpenTelemetry standard (ad esempio,
http.response.status_code e rpc.system.name) e attributi personalizzati specifici di Google Cloud, che possono includere questi e attributi simili:
gcp.client.service: il nome del servizio (ad esempio,pubsubostorage).gcp.client.repo: Il repository della libreria client (ad esempio,googleapis/google-cloud-rust).gcp.client.version: la versione della libreria client.gcp.client.artifact: il percorso del modulo specifico (ad esempio,google-cloud-secretmanager).gcp.resource.destination.id: l'ID della risorsa su cui viene eseguita l'azione.gcp.errors.domain: il dominio di errore per i log degli errori azionabili.gcp.errors.metadata.<key>: Chiavi dei metadati di errore aggiuntive per le richieste non riuscite (appiattite).
Per un elenco completo degli attributi standard, consulta le convenzioni semantiche HTTP e gRPC di OpenTelemetry.
Le librerie hanno anche intervalli DEBUG per ogni richiesta. Questi includono l'intero corpo della richiesta, l'intero corpo della risposta per le richieste riuscite e l'intero messaggio di errore, con i dettagli, per le richieste non riuscite.
Valuta i contenuti di queste richieste e risposte prima di attivarle negli ambienti di produzione, poiché la richiesta o le risposte potrebbero includere dati sensibili.
Questi intervalli DEBUG utilizzano il crate della libreria client seguito da ::tracing come
target (ad esempio google_cloud_secretmanager_v1::tracing) e il
nome del metodo come nome dell'intervallo (ad esempio access_secret_version). Puoi
utilizzare il nome, il target o entrambi per configurare i filtri.
Attivazione della telemetria
Per proteggere i dati sensibili, gli indicatori di telemetria sono disattivati per impostazione predefinita.
In Rust, devi configurare il client per emettere tracce, metriche e log e devi configurare i sottoscrittori e gli esportatori per inviare questi segnali a un servizio esterno.
Per configurare il client, puoi impostare la seguente variabile di ambiente:
export GOOGLE_CLOUD_RUST_LOGGING=true
In alternativa, puoi attivare esplicitamente la tracciabilità a livello di programmazione durante la creazione
del client utilizzando il metodo .with_tracing() nel generatore di client:
use google_cloud_secretmanager_v1::client::SecretManagerService;
let client = SecretManagerService::builder()
.with_tracing()
.build()
.await?;
Propagazione del contesto di Trace
Le librerie client Rust propagano automaticamente i contesti di traccia attivi ai serviziGoogle Cloud , anche se la generazione di tracce non è abilitata esplicitamente utilizzando .with_tracing().
Utilizza i crate tracing-opentelemetry o opentelemetry per fornire un contesto di tracciamento per le librerie client.
Esportazione della telemetria
Una volta attivata la telemetria nelle librerie client, l'applicazione deve essere configurata per raccogliere ed esportare questi dati nel servizio di osservabilità. Le librerie client Rust utilizzano in modo nativo l'ecosistema tracing.
Tracciamento
Per esportare gli span tracing generati dalle librerie client Google Cloud in OpenTelemetry, devi configurare un Subscriber nella tua applicazione che trasferisca i dati a un esportatore OpenTelemetry (ad esempio OTLP).
Utilizza i crate tracing-opentelemetry e opentelemetry-otlp per configurare l'esportatore:
Metriche
Per esportare le metriche, devi installare un MeterProvider OpenTelemetry globale nella tua applicazione prima di inizializzare il client. Le librerie client lo utilizzeranno
automaticamente per registrare ed esportare i dati delle metriche.
Per ulteriori dettagli sulla raccolta e l'esportazione dei dati OpenTelemetry in Cloud Monitoring o Cloud Trace, consulta Scegliere un approccio di strumentazione.
Logging
Le librerie client Rust utilizzano il crate tracing per generare log di errori azionabili
ai livelli WARN e DEBUG. I log esportati includeranno ID traccia e
ID span per garantire una correlazione perfetta con le tue tracce, a condizione che utilizzi un
formattatore appropriato.
Per indirizzare questi log strutturati a Cloud Logging, configura un abbonato
alla traccia per formattare gli eventi come JSON e inviarli all'output standard (stdout). Se
esegui il deployment in un ambiente come Google Kubernetes Engine o Cloud Run, gli
agenti integrati eseguono automaticamente lo scraping di questi log.
L'esempio seguente configura un abbonato per acquisire e instradare solo i log di livello WARN.
Per istruzioni dettagliate sulla configurazione dei dati di correlazione delle tracce OpenTelemetry (ad esempio logging.googleapis.com/trace) nel formatter JSON, consulta la panoramica degli esempi di strumentazione basata su collector.