La creazione di metriche definite dall'utente (chiamate anche metriche personalizzate) con l'API Cloud Monitoring consente di acquisire misurazioni specifiche dell'applicazione e di creare grafici o avvisi, proprio come le metriche integrate di Cloud Monitoring. Come le metriche integrate, ogni metrica definita dall'utente combina punti dati, un tipo di metrica che definisce ciò che rappresentano i punti e una risorsa monitorata che identifica l'origine dei dati.
Per instrumentare la tua applicazione, ti consigliamo di utilizzare un framework di strumentazione open source e indipendente dal fornitore, come OpenTelemetry, anziché API o librerie client specifiche del fornitore e del prodotto. Per informazioni su questi framework, consulta Osservabilità per gli sviluppatori di applicazioni e Scegli un approccio di strumentazione.
Non puoi utilizzare l'API Monitoring per creare metriche basate su log, che derivano i dati delle metriche dalle voci di log. Invece, Cloud Logging crea le strutture delle metriche e invia i dati a Cloud Monitoring per te; consulta Crea metriche contatore e Crea metriche di distribuzione.
Prima di iniziare
Per scoprire di più sulle strutture alla base di tutte le metriche, consulta Metriche, serie temporali e risorse.
Per utilizzare Cloud Monitoring, devi avere un progetto Google Cloud con la fatturazione abilitata. Se necessario, procedi nel seguente modo:
-
Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud .
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
- Assicurati che l'API Monitoring sia abilitata. Per maggiori dettagli, consulta Abilitazione dell'API Monitoring.
- Per le applicazioni in esecuzione al di fuori di Google Cloud, il tuo progetto Google Cloud deve autenticare l'applicazione utilizzando le Credenziali predefinite dell'applicazione (ADC) locali. Per saperne di più, consulta Configura ADC per on-premise o un altro provider cloud.
Crea un tipo di metrica definita dall'utente
Per creare una metrica definita dall'utente, definisci un oggetto MetricDescriptor che specifica varie informazioni sulla metrica oppure scrivi i dati della metrica. Quando scrivi i dati delle metriche, Monitoring crea il descrittore della metrica in base alla struttura dei dati che fornisci.
Per informazioni sulla progettazione di un descrittore della metrica, consulta Descrittori delle metriche per le metriche definite dall'utente.
Creazione automatica dei descrittori delle metriche
Se scrivi dati delle metriche quando non esiste ancora un descrittore della metrica per la metrica definita dall'utente, viene creato automaticamente un descrittore della metrica. Tuttavia, questo nuovo descrittore della metrica potrebbe non essere esattamente quello che vuoi; la creazione automatica dei descrittori delle metriche prevede alcune ipotesi e impostazioni predefinite.
Cloud Monitoring crea un nuovo MetricDescriptor quando l'oggetto TimeSeries incluso in una chiamata a timeSeries.create fa riferimento a un oggetto Metric che specifica un nome del tipo di metrica inesistente.
Cloud Monitoring utilizza le seguenti regole per compilare il campo MetricDescriptor:
type: il tipo viene copiato dal campotypedell'oggettoMetric.name: il nome viene creato dall'ID progetto nella chiamata al metodo e dal valore ditypenell'oggettoMetric.labels: le etichette visualizzate nell'oggettoMetric. Ogni descrittore di etichetta nel nuovo descrittore della metrica ha i seguenti campi:key: la chiave dell'etichetta nell'oggettoMetric.valueType:STRINGdescription: non impostato
metricKind: il tipo di metrica è impostato suGAUGE, a meno che non specifichi il parametrometricKinddell'oggettoTimeSeries. Quando specifichimetricKind, la nuova metrica ha quel tipo. Puoi specificare solo i tipiGAUGEeCUMULATIVE.valueType: il tipo di valore viene preso dal valore digitato diPointin fase di scrittura. Il tipo di valore deve essereBOOL,INT64,DOUBLEoDISTRIBUTION. Quando specifichi un tipo di valore nel campovalueTypediTimeSeries, questo tipo deve corrispondere al tipo diPoint.unit: non impostatodescription:"Auto created custom metric.".displayName: non impostato
In una singola chiamata timeSeries.create, puoi includere più oggetti TimeSeries che fanno riferimento allo stesso tipo di metrica inesistente. In questo caso, le etichette nel nuovo descrittore della metrica sono costituite dall'unione di tutte le etichette negli oggetti Metric in tutte le serie temporali in questa chiamata a create.
Passaggio successivo: consulta Scrivi metriche definite dall'utente.
Creazione manuale dei descrittori delle metriche
Per creare un descrittore della metrica, segui questi passaggi:
Determina la struttura del descrittore della metrica. Per aiutarti a fare queste scelte, puoi sfogliare le metriche integrate e esaminare i relativi dati delle serie temporali:
Scegli un nome della metrica per la metrica definita dall'utente.
Scegli un nome visualizzato e una descrizione per la metrica. Il nome visualizzato viene utilizzato nella console Google Cloud .
Scegli uno o più progetti in cui definire la metrica definita dall'utente e scrivere i dati delle serie temporali. Quando hai bisogno della stessa metrica in più progetti, crea definizioni identiche della metrica in ogni progetto.
Determina il tipo di metrica, il tipo di valore e (facoltativamente) le unità. Non tutti i tipi di valori e di metriche sono supportati per le metriche definite dall'utente. Per saperne di più su questi campi, consulta Tipi di valori e tipi di metriche.
Scegli le etichette della metrica: i nomi, i tipi di valore e le descrizioni.
Determina le risorse monitorate in base alle quali vengono scritti i dati delle metriche. Scegli una delle seguenti opzioni:
aws_ec2_instance: istanza Amazon EC2.dataflow_job: job Dataflow.gae_instance: istanza App Engine.gce_instance: istanza di Compute Engine.generic_node: nodo di computing specificato dall'utente.generic_task: attività definita dall'utente.gke_container: l'istanza del container GKE.global: utilizza questa risorsa quando non è adatto nessun altro tipo di risorsa. Per la maggior parte dei casi d'uso,generic_nodeogeneric_tasksono scelte migliori rispetto aglobal.k8s_cluster: cluster Kubernetes.k8s_container: container Kubernetes.k8s_node: nodo Kubernetes.k8s_pod: pod Kubernetes.
Crea un oggetto
MetricDescriptor, quindi passalo come argomento a una chiamata al metodometricDescriptors.create.
In genere, si verifica un errore quando si chiama metricDescriptors.create utilizzando lo stesso nome di tipo di un descrittore della metrica esistente. Tuttavia, se tutti i campi del nuovo oggetto MetricDescriptor corrispondono esattamente ai campi del descrittore esistente, non si tratta di un errore, ma non ha alcun effetto.
Nell'esempio seguente, crei una metrica di tipo Gauge.
Protocollo
Per creare un descrittore della metrica, utilizza il metodo metricDescriptors.create.
Puoi eseguire questo metodo utilizzando il widget Explorer API nella pagina di riferimento del metodo. Per saperne di più, consulta Explorer API.
Di seguito sono riportati i parametri di esempio per
metricDescriptors.create:
- name (URL):
projects/[PROJECT_ID] Corpo della richiesta: fornisci un oggetto
MetricDescriptorcome il seguente:{ "name": "", "description": "Daily sales records from all branch stores.", "displayName": "Sales", "type": "custom.googleapis.com/stores/sales", "metricKind": "GAUGE", "valueType": "DOUBLE", "unit": "{USD}", "labels": [ { "key": "store_id", "valueType": "STRING", "description": "The ID of the store." }, ], }
Inserisci questi valori nei campi del widget, utilizzando l'ID del progetto al posto di [PROJECT_ID]:
Fai clic sul pulsante Esegui per eseguire il metodo.
fullscreenQuando crei una nuova metrica, il campo name in MetricDescriptor viene ignorato e può essere omesso. Il metodo create restituisce il nuovo descrittore della metrica con il campo name compilato, che in questo esempio sarebbe il seguente:
"name": "projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales"
Ad esempio, se vuoi recuperare il descrittore di una metrica, utilizza questo nome.
C#
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
In caso di difficoltà, consulta Risolvi i problemi relativi alle chiamate API.
Passaggio successivo: consulta Scrivi metriche definite dall'utente.
Scrivi metriche definite dall'utente
Puoi scrivere dati solo nei tipi di metriche definite dall'utente. Per scrivere i dati, utilizza il metodo timeSeries.create.
Se la serie temporale esiste, questo metodo aggiunge un nuovo punto dati alla serie temporale esistente. Se la serie temporale non esiste, questo metodo la crea e aggiunge i dati.
Per scrivere i punti dati, passa un elenco di oggetti TimeSeries a
timeSeries.create.
La dimensione massima dell'elenco è 200 e ogni oggetto nell'elenco deve specificare una serie temporale diversa:
- I valori dei campi
metriceresourceidentificano un oggettoTimeSeriesspecifico. Questi campi rappresentano il tipo di metrica dei dati e la risorsa monitorata da cui sono stati raccolti i dati. - Ometti i campi
metricKindevalueType, che vengono ignorati durante la scrittura dei punti dati. Ogni oggetto
TimeSeriesdeve contenere un solo oggettoPoint:- Il valore e l'intervallo di tempo del punto devono essere coerenti con la definizione del tipo di metrica. Per informazioni sugli intervalli di tempo per i diversi tipi di metriche, consulta
TimeInterval. - L'intervallo di tempo del punto deve essere successivo a qualsiasi punto già presente nella serie temporale.
- L'ora di fine dell'intervallo non deve essere precedente di oltre 25 ore o successiva di oltre cinque minuti.
- Il valore e l'intervallo di tempo del punto devono essere coerenti con la definizione del tipo di metrica. Per informazioni sugli intervalli di tempo per i diversi tipi di metriche, consulta
Per scrivere più di un punto nella stessa serie temporale, utilizza una chiamata separata al metodo
timeSeries.createper ogni punto. Non scrivere dati in una singola serie temporale più velocemente di un punto ogni 5 secondi. Quando aggiungi punti dati a serie temporali diverse, non esiste una limitazione di frequenza.
Protocollo
Per scrivere i dati delle metriche, utilizza il metodo timeSeries.create.
Puoi eseguire questo metodo utilizzando il widget Explorer API nella pagina di riferimento del metodo. Per saperne di più, consulta Explorer API.
Per scrivere un punto nella metrica stores/daily_sales creata in Creazione manuale dei descrittori delle metriche:
- Vai alla pagina di riferimento per
timeSeries.create. - Fornisci i parametri riportati di seguito al widget Explorer API.
- Fai clic sul pulsante Esegui.
Utilizza i seguenti parametri di esempio:
- name:
projects/[PROJECT_ID] Corpo della richiesta: includi un elenco di oggetti
TimeSeries. L'esempio seguente contiene una sola serie temporale nell'elenco.{ "timeSeries": [ { "metric": { "type": "custom.googleapis.com/my_metric", "labels": { "my_label": "my_value" } }, "resource": { "type": "gce_instance", "labels": { "project_id": "[PROJECT_ID]", "instance_id": "1234567890123456789", "zone": "us-central1-f" } }, "points": [ { "interval": { "endTime": "2018-06-01T10:00:00-04:00" }, "value": { "doubleValue": 123.45 } } ] } ] }
C#
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
In caso di difficoltà, consulta Risolvi i problemi relativi alle chiamate API.
Elimina le metriche definite dall'utente
Per eliminare una metrica definita dall'utente, elimina il relativo descrittore della metrica. Non puoi eliminare i dati delle serie temporali archiviati nel tuo progetto Google Cloud , ma l'eliminazione del descrittore della metrica rende i dati inaccessibili. I dati scadono e vengono eliminati in base alle policy sulla conservazione dei dati.
Non puoi eliminare il descrittore della metrica per una metrica integrata.
Per eliminare il descrittore della metrica, chiama il metodo metricDescriptors.delete.
Protocollo
Per eliminare un descrittore della metrica, utilizza il metodo metricDescriptors.delete.
Puoi eseguire questo metodo utilizzando il widget Explorer API nella pagina di riferimento del metodo. Per saperne di più, consulta Explorer API.
Per eliminare la metrica stores/daily_sales creata in Creazione manuale dei descrittori delle metriche:
- Vai alla pagina di riferimento per
metricDescriptors.delete. Specifica il nome del descrittore della metrica nel widget Explorer API:
name:
projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_salesFai clic sul pulsante Esegui.
C#
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
PHP
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per eseguire l'autenticazione in Monitoring, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
In caso di difficoltà, consulta Risolvi i problemi relativi alle chiamate API.
Modifica una metrica definita dall'utente
Per modificare una metrica definita dall'utente, devi aggiornare l'oggetto MetricDescriptor che la definisce.
L'unica modifica supportata è l'aggiunta di etichette.
Per aggiungere etichette a una metrica definita dall'utente esistente, utilizza il metodo timeSeries.create e includi le nuove etichette con i dati delle serie temporali. Le etichette vengono aggiunte al descrittore della metrica quando le etichette che tenti di scrivere sono valide e il numero totale di etichette è inferiore a 30.
I dati delle serie temporali vengono quindi scritti come se l'etichetta fosse presente fin dall'inizio.
Se vuoi fare di più che aggiungere nuove etichette, devi eliminare e ricreare il descrittore della metrica. In questo caso, perdi tutti i dati delle serie temporali raccolti in precedenza per il descrittore della metrica precedente. Per saperne di più, consulta Elimina le metriche definite dall'utente.
Non puoi rinominare una metrica.