Configurare un ambito delle metriche utilizzando l'API

Questo documento descrive come utilizzare Google Cloud CLI o l'API Cloud Monitoring per configurare l'ambito delle metriche di un Google Cloud progetto. Questa pagina è rivolta a sviluppatori e amministratori di sistema.

Applicazioni e ambiti delle metriche di App Hub

Gestisci l'ambito delle metriche per i progetti host di App Hub. Puoi gestire questo ambito utilizzando la Google Cloud console o l'API Cloud Monitoring.

Google Cloud gestisce l'ambito delle metriche per le cartelle abilitate per le app, a meno che l'aggiunta di un progetto all'ambito delle metriche non vada a buon fine a causa dell'esaurimento della quota dell'ambito delle metriche. In questo caso, puoi richiedere un aumento della quota e poi aggiungere manualmente i progetti all'ambito delle metriche del progetto di gestione per la cartella abilitata per le app. Per scoprire di più, consulta Ambiti delle metriche per le cartelle abilitate per le app.

Prima di iniziare

  • Se non hai dimestichezza con i termini ambito delle metriche e scoping project, consulta Ambiti delle metriche.

  • Assicurati che i ruoli IAM (Identity and Access Management) nel progetto di definizione dell'ambito e in ogni progetto che vuoi aggiungere o rimuovere da un ambito delle metriche includano tutte le autorizzazioni nel ruolo Amministratore monitoraggio (roles/monitoring.admin). Per ulteriori informazioni, consulta Configurazioni dell'ambito delle metriche.

  • I metodi di ambito delle metriche dell'API Cloud Monitoring che recuperano informazioni sono sincroni, mentre le API che modificano lo stato sono asincrone. I comandi Google Cloud CLI vengono bloccati fino al completamento dell'operazione asincrona. Per informazioni su come determinare quando un metodo API asincrono è completo e come determinarne lo stato, consulta Metodi API asincroni.

  • Se prevedi di richiamare l'API Cloud Monitoring utilizzando curl o se vuoi utilizzare i sample in questa pagina, completa i passaggi per la configurazione del comando curl.

Aggiungere un progetto a un ambito delle metriche

gcloud

Per aggiungere un Google Cloud progetto a un ambito delle metriche, esegui il comando gcloud beta monitoring metrics-scopes create:

gcloud beta monitoring metrics-scopes create MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER

Prima di eseguire il comando precedente, segui questi passaggi:

  • Inserisci il nome o l'ID del Google Cloud progetto di cui deve essere modificato l'ambito delle metriche nella variabile SCOPING_PROJECT_ID_OR_NUMBER. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella abilitata per le app.

  • Inserisci l'identificatore del progetto monitorato nella variabileMONITORED_PROJECT_ID_OR_NUMBER. Il formato è projects/PROJECT_ID_OR_NUMBER.

Ad esempio, il seguente comando aggiunge il progetto my-monitored-project all'ambito delle metriche del progetto denominato my-staging-projects:

gcloud beta monitoring metrics-scopes create projects/my-monitored-project --project=my-staging-projects

La risposta al comando precedente conferma che il comando è stato completato correttamente:

Created monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].

curl

Per aggiungere un Google Cloud progetto a un ambito delle metriche, invia una richiesta POST all'endpoint locations.global.metricsScopes.projects.create:

curl -H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" -X POST \
-d "{'name': 'locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}'}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects

Nell'esempio precedente, le variabili di ambiente sono definite come segue:

  • MONITORED_PROJECT_ID_OR_NUMBER memorizza l'ID del progetto da aggiungere all'ambito delle metriche.
  • SCOPING_PROJECT_ID_OR_NUMBER memorizza l'ID del progetto di cui viene aggiornato l'ambito delle metriche.

La risposta di questo metodo asincrono è un oggetto Operation.

Le applicazioni che chiamano questo metodo devono eseguire il polling dell'endpoint operation.get fino a quando il valore del campo Operation.done non è true. Quando il campo Operation.done è impostato su false, indica che l'operazione è in corso. Per ulteriori informazioni, consulta Comandi API asincroni.

Di seguito è riportato un esempio di risposta quando l'aggiunta di un progetto monitorato è andata a buon fine:

{
  "name": "operations/6915efde-1915-400a-ad49-7b62041d9bd2",
  "metadata": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata",
    "state": "DONE",
    ...
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.MonitoredProject",
    "name": "locations/global/metricsScopes/012012012012/projects/678678678678",
    "provider": "G​C​P",
    "providerAccountId": "...",
    ...
  }
}

Nella risposta precedente, il campo Operation.done è impostato su true. Questo valore indica che il comando è stato completato. Poiché il comando è stato completato correttamente, il campo Operation.response è impostato e il suo valore è un oggetto MonitoredProject. Il campo response.name include l'identificatore del progetto di definizione dell'ambito e del progetto monitorato. Il campo providerAccountId elenca il nome del progetto monitorato.

L'invocazione di questo metodo genera una voce nei log di controllo del progetto di definizione dell'ambito. La Google Cloud console non invoca questo metodo dell'API. Pertanto, le modifiche apportate a un ambito delle metriche durante l'utilizzo della consoleGoogle Cloud non vengono registrate nei log di controllo.

Rimuovere un progetto da un ambito delle metriche

gcloud

Per rimuovere un Google Cloud progetto da un ambito delle metriche, esegui il comando gcloud beta monitoring metrics-scopes delete:

gcloud beta monitoring metrics-scopes delete MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER

Prima di eseguire il comando precedente, segui questi passaggi:

  • Inserisci il nome o l'ID del Google Cloud progetto di cui deve essere modificato l'ambito delle metriche nella variabile SCOPING_PROJECT_ID_OR_NUMBER. Per le configurazioni di App Hub, seleziona il progetto host di App Hub o il progetto di gestione della cartella abilitata per le app.

  • Inserisci l'identificatore del progetto monitorato nella variabileMONITORED_PROJECT_ID_OR_NUMBER. Il formato è projects/PROJECT_ID_OR_NUMBER.

Ad esempio, il seguente comando rimuove il progetto my-monitored-project dall'ambito delle metriche del progetto denominato my-staging-projects:

gcloud beta monitoring metrics-scopes delete projects/my-monitored-project --project=my-staging-projects

La risposta al comando precedente conferma che il comando è stato completato correttamente:

Deleted monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].

Quando il progetto di definizione dell'ambito non monitora il progetto specificato dalla variabile MONITORED_PROJECT_ID_OR_NUMBER, viene visualizzato il seguente errore:

NOT_FOUND: Requested entity was not found.

curl

Per rimuovere un Google Cloud progetto da un ambito delle metriche, invia una richiesta DELETE all'endpoint locations.global.metricsScopes.projects.delete:

curl -H "Authorization: Bearer ${TOKEN}" -X DELETE \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}

Nell'esempio precedente, le variabili di ambiente sono definite come segue:

  • MONITORED_PROJECT_ID_OR_NUMBER memorizza l'ID del progetto da rimuovere dall'ambito delle metriche.
  • SCOPING_PROJECT_ID_OR_NUMBER memorizza l'ID del progetto di cui viene aggiornato l'ambito delle metriche.

La risposta a questo metodo asincrono è un oggetto Operation.

Le applicazioni che chiamano questo metodo devono eseguire il polling dell'endpoint operation.get fino a quando il valore del campo Operation.done non è true. Quando il campo Operation.done è impostato su false, indica che l'operazione è in corso. Per ulteriori informazioni, consulta Comandi API asincroni.

Di seguito è riportato un esempio di risposta quando la rimozione di un progetto monitorato è andata a buon fine:

{
  "name": "operations/4367ff34-0ff0-4767-b8d3-0638e30f077c",
  "metadata": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata",
    "state": "DONE",
    ...
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Nella risposta precedente, il campo Operation.done è impostato su true. Questo valore indica che il comando è stato completato. Poiché il comando è stato completato correttamente, il campo Operation.response è impostato e contiene un campo @type.

L'invocazione di questo metodo genera una voce nei log di controllo del progetto di definizione dell'ambito. La Google Cloud console non invoca questo metodo dell'API. Pertanto, le modifiche apportate a un ambito delle metriche durante l'utilizzo della consoleGoogle Cloud non vengono registrate nei log di controllo.

Elenco di tutti gli ambiti delle metriche che includono un progetto

Se vuoi sapere quali risorse possono visualizzare i dati archiviati da un progettoGoogle Cloud , puoi elencare tutti gli ambiti delle metriche che includono il progetto e trovare i dettagli relativi a questi ambiti. Questa sezione fornisce informazioni su come elencare l'ambito delle metriche che include un progettoGoogle Cloud specifico.

gcloud

Per ottenere un elenco degli ambiti delle metriche che possono visualizzare le metriche di un Google Cloud progetto, esegui il comando gcloud beta monitoring metrics-scopes list:

gcloud beta monitoring metrics-scopes list MONITORED_PROJECT_ID_OR_NUMBER

Prima di eseguire il comando, inserisci l'identificatore del progetto monitorato nella variabile MONITORED_PROJECT_ID_OR_NUMBER. Il formato è projects/PROJECT_ID_OR_NUMBER.

Ad esempio, per elencare gli ambiti delle metriche che includono il progettomy-project, esegui il seguente comando:

gcloud beta monitoring metrics-scopes list projects/my-project

La seguente risposta indica che il progetto my-project è incluso in due ambiti delle metriche:

metricsScopes:
- createTime: '2018-08-06T17:13:42Z'
  name: locations/global/metricsScopes/012345012345
  updateTime: '2018-08-18T16:20:37.032928Z'
- createTime: '2021-04-13T15:37:26.869Z'
  name: locations/global/metricsScopes/9876543210
  updateTime: '2021-04-13T15:37:27.284239Z'

Per ottenere informazioni dettagliate su un ambito delle metriche, esegui il comando gcloud beta monitoring metrics-scopes describe.

curl

Per ottenere un elenco di ambiti delle metriche che possono visualizzare le metriche di un progetto, invia una richiesta GET all'endpoint locations.global.metricsScopes.listMetricsScopesByMonitoredProject e includi il parametro di query che specifica il progetto.

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes:listMetricsScopesByMonitoredProject?monitored_resource_container=projects/${PROJECT_ID_OR_NUMBER}

Nell'esempio precedente, la variabile di ambiente PROJECT_ID_OR_NUMBER memorizza l'ID del progetto di cui viene eseguita la query per l'inclusione nell'ambito delle metriche.

In caso di esito positivo, la risposta è un array di oggetti MetricsScope.

Questo metodo non comporta la scrittura di una voce nei log di controllo del progetto di definizione dell'ambito. Per registrare queste azioni nel log di controllo, abilita Lettura dati per l'API Cloud Resource Manager. Per maggiori informazioni, consulta la pagina Configurazione degli audit log di accesso ai dati.

Visualizzare i dettagli di un ambito delle metriche

Questa sezione mostra come trovare i dettagli di un ambito delle metriche specifico.

gcloud

Per ottenere informazioni dettagliate su un ambito delle metriche, esegui il comando gcloud beta monitoring metrics-scopes describe:

gcloud beta monitoring metrics-scopes describe METRICS_SCOPE_ID

Prima di eseguire il comando, inserisci il nome del nome completo di un ambito metrico nella variabile METRICS_SCOPE_ID. Di seguito è riportato un esempio di nome completo:

locations/global/metricsScopes/012345012345

Di seguito è riportato un esempio di risposta. In questo esempio, l'ambito delle metriche contiene un progetto e l'ID dell'ambito e del progetto è lo stesso:

createTime: '2018-08-06T17:13:42Z'
monitoredProjects:
- createTime: '2018-08-06T17:13:42Z'
  name: locations/global/metricsScopes/012345012345/projects/012345012345
name: locations/global/metricsScopes/012345012345
updateTime: '2018-08-18T16:20:37.032928Z'

Per identificare il Google Cloud progetto dal suo ID, esegui il comando gcloud projects list e filtra in base all'ID progetto. Ad esempio, per recuperare il nome del progetto 012345012345, esegui il seguente comando:

gcloud projects list --filter="012345012345" --format="value(NAME)"

curl

Per ottenere informazioni sull'ambito delle metriche, invia una richiesta GET all'endpoint locations.global.metricsScopes.get:

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}

Nell'esempio precedente, la variabile di ambiente SCOPING_PROJECT_ID_OR_NUMBER memorizza l'ID del progetto di cui viene eseguita la query sull'ambito delle metriche.

In caso di esito positivo, la risposta è un oggetto MetricsScope.

Questo metodo non comporta la scrittura di una voce nei log di controllo del progetto di definizione dell'ambito. Per registrare queste azioni nel log di controllo, abilita Lettura dati per l'API Cloud Resource Manager. Per maggiori informazioni, consulta la pagina Configurazione degli audit log di accesso ai dati.

Metodi API asincroni

Tutti i metodi di ambito delle metriche dell'API Cloud Monitoring che modificano lo stato del sistema, ad esempio il comando per aggiungere un progetto monitorato a un ambito delle metriche, sono asincroni. Per questi comandi, la risposta del comando è un oggetto Operation.

Le applicazioni che chiamano un metodo API asincrono devono eseguire il polling dell'endpoint operation.get finché il valore del campo Operation.done non è true:

  • Quando done è false, l'operazione è in corso.

    Per aggiornare le informazioni sullo stato, invia una richiesta GET all'endpoint operation.get:

    curl -H "Authorization: Bearer ${TOKEN}" \
    https://monitoring.googleapis.com/v1/${OPERATION_NAME}

    Nel comando precedente, OPERATION_NAME è una variabile di ambiente che immagazzina il valore del campo Operation.name.

  • Quando done è true, l'operazione è completata e il campo error o response è impostato:

    • error: se impostato, l'operazione asincrona non è riuscita. Il valore di questo campo è un oggetto Status che contiene un codice di errore gRPC e un messaggio di errore.
    • response: se impostato, l'operazione asincrona è stata completata correttamente e il valore riflette il risultato.

Configurazione del comando curl

Questa sezione descrive la configurazione utilizzata per creare i comandi curl in questo documento. Ogni comando curl in questa pagina include un insieme di argomenti seguito dall'URL di una risorsa API:

curl -H "Authorization: Bearer ${TOKEN}" <other_args> \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/<resource>

Imposta queste variabili di ambiente per semplificare la creazione dei comandi curl:

  1. Crea la variabile di ambiente per archiviare l'ID o il numero del progetto di ambito. Se utilizzi App Hub, imposta questa variabile sull'ID del progetto host di App Hub o sull'ID del progetto di gestione della cartella abilitata per le app:

    SCOPING_PROJECT_ID_OR_NUMBER=SCOPING_PROJECT_ID_OR_NUMBER
    
  2. Facoltativo. Se prevedi di aggiungere o rimuovere progetti monitorati, configura la variabile di ambiente con l'ID o il numero del progetto monitorato:

    MONITORED_PROJECT_ID_OR_NUMBER=MONITORED_PROJECT_ID_OR_NUMBER
    
  3. Esegui l'autenticazione in Google Cloud CLI:

    gcloud auth login
    
  4. Facoltativo. Per evitare di dover specificare l'ID progetto con ogni comando gcloud, impostalo come predefinito utilizzando gcloud CLI:

    gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
    
  5. Crea un token di autorizzazione e acquisiscilo in una variabile di ambiente:

    TOKEN=`gcloud auth print-access-token`
    

    I token sono validi per un periodo di tempo limitato. Se i comandi che funzionavano suonino improvvisamente che non hai eseguito l'autenticazione, esegui di nuovo questo comando.

  6. Per verificare di aver ricevuto un token di accesso, esegui l'istruzione echo della variabile TOKEN:

    echo ${TOKEN}
    ya29.GluiBj8o....
    

Potresti anche dover specificare altri argomenti, ad esempio per specificare il tipo di richiesta HTTP (ad esempio -X DELETE). La richiesta predefinita è GET, quindi non viene specificata negli esempi.

Passaggi successivi

Per informazioni sull'utilizzo di Google Cloud con Terraform, consulta le seguenti risorse: