Utilizzo dell'API delle metriche

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Apigee registra un'ampia varietà di dati operativi e aziendali che passano attraverso le API. Le metriche derivate da questi dati sono utili per il monitoraggio operativo e il monitoraggio aziendale. Utilizzando Apigee Analytics, puoi, ad esempio, determinare quali API hanno prestazioni ottimali o scarse, quali sviluppatori offrono il traffico di maggior valore e quali app causano il maggior numero di problemi per i tuoi servizi di backend.

Per accedere facilmente a questi dati delle metriche, utilizza l'API Metrics quando devi automatizzare determinate funzioni di analisi, come il recupero periodico delle metriche utilizzando un client o uno script di automazione. Puoi anche utilizzare l'API per creare le tue visualizzazioni sotto forma di widget personalizzati che puoi incorporare in portali o app personalizzate.

Per scoprire come utilizzare Analytics nell'interfaccia utente di Apigee, consulta la panoramica sull'analisi di Apigee.

Informazioni sull'API delle metriche

Puoi utilizzare l'API Metrics in due modi:

  • Visualizza le metriche per un'organizzazione e un ambiente in un determinato periodo di tempo, ad esempio un'ora, un giorno o una settimana. Questo metodo restituisce metriche non elaborate per l'intera organizzazione e l'intero ambiente.

    Ad esempio, per la settimana precedente vuoi ottenere:

    • Numero di errori dei criteri
    • Tempo medio di risposta
    • Traffico totale
  • Visualizza le metriche organizzate per dimensione per un periodo di tempo per un'organizzazione e un ambiente.

    Ad esempio, per la settimana precedente puoi utilizzare le dimensioni per raggruppare le metriche per prodotto API, proxy API ed email dello sviluppatore per ottenere:

    • Numero di errori delle norme per prodotto API
    • Tempo di risposta medio per proxy API
    • Traffico totale per email sviluppatore

    Per gestire il risultato restituito, l'API Metrics supporta le seguenti funzionalità:

    Per saperne di più, consulta la documentazione di riferimento dell'API Metrics.

    Inizia a utilizzare l'API Metrics

    L'URL della richiesta per l'API delle metriche è:

    https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats[dimension]

    Ad esempio, per ottenere metriche raggruppate per proxy API, utilizza il seguente URL per chiamare l'API Apigee:

    https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?timeRange=07/21/2018+00:00:00~08/23/2018+00:00:00

    Ometti la dimensione per restituire metriche non elaborate per l'intera organizzazione e l'ambiente per il periodo di tempo specificato:

    https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats?timeRange=07/21/2019+00:00:00~08/23/2018+00:00:00

    Specificare le metriche da restituire

    Utilizza il parametro di query select per specificare le metrics da recuperare e una funzione di aggregazione facoltativa nel formato:

    ?select=metric

    oppure:

    ?select=aggFunction(metric)

    Dove:

    • metric specifica i dati che vuoi restituire. Ad esempio, il numero di richieste API, hit della cache o errori dei criteri. Consulta la sezione metrics per una tabella che specifica il nome della metrica da utilizzare con il parametro di query select.
    • aggFunction specifica la funzione di aggregazione facoltativa eseguita in base alla metrica. Ad esempio, puoi utilizzare le seguenti funzioni di aggregazione con la metrica della latenza di elaborazione:

      • avg: restituisce la latenza di elaborazione media.
      • min: restituisce la latenza di elaborazione minima.
      • max: restituisce la latenza di elaborazione massima.
      • sum: restituisce la somma di tutte le latenze di elaborazione.
      • p50: restituisce il 50° percentile per le latenze di elaborazione.
      • p95: restituisce il 95° percentile per le latenze di elaborazione.
      • p99: restituisce il 99° percentile per le latenze di elaborazione.

      Non tutte le metriche supportano tutte le funzioni di aggregazione. La documentazione sulle metrics contiene una tabella che specifica il nome della metrica e la funzione (sum, avg, min, max) supportata dalla metrica.

    Ad esempio, per restituire il numero medio di transazioni, ovvero richieste proxy API, al secondo:

    ?select=tps

    Tieni presente che questo esempio non richiede una funzione di aggregazione. L'esempio successivo utilizza una funzione di aggregazione per restituire la somma degli hit della cache:

    ?select=sum(cache_hit)

    Puoi restituire più metriche per una singola chiamata API. Per ottenere metriche per la somma degli errori dei criteri e della dimensione media delle richieste, imposta il parametro di query select utilizzando un elenco di metriche separate da virgole:

    ?select=sum(policy_error),avg(request_size)

    Specificare il periodo di tempo

    L'API Metrics restituisce i dati per un periodo di tempo specificato. Utilizza il parametro di query timeRange (massimo 6 mesi) per specificare il periodo di tempo nel formato:

    ?timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM

    Osserva il %20 prima di HH:MM. Il parametro timeRange richiede uno spazio codificato nell'URL prima di HH:MM o un carattere +, ad esempio MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM.

    Ad esempio:

    ?timeRange=03/01/2018%2000:00~03/30/2018%2023:59

    Non usare 24:00 come ora, perché termina le 00:00. Utilizza invece 23:59.

    Esempi di chiamata all'API Metrics

    Questa sezione fornisce esempi sull'utilizzo dell'API Metrics. Per ulteriori esempi, consulta gli esempi dell'API Metrics.

    Restituisci il numero totale di chiamate effettuate alle tue API in un mese

    Per restituire il numero totale di chiamate effettuate a tutte le API nella tua organizzazione e nel tuo ambiente per un mese, utilizza una chiamata simile alla seguente:

    curl -v "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/?select=sum(message_count)&timeRange=03/01/2018%2000:00~03/31/2018%2023:59" \
      -H "Authorization: Bearer $TOKEN"

    Dove $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta Utilizzare curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

    Di seguito è riportato un esempio della risposta:

    {
      "environments": [
        {
          "metrics": [
            {
              "name": "sum(message_count)",
              "values": [
                "7.44944088E8"
              ]
            }
          ],
          "name": "prod"
        }
      ],
    ...
    }
    

    Restituire il numero totale di messaggi per proxy API per due giorni

    In questo esempio, restituisca le metriche relative al numero di richieste ricevute da tutti i proxy API in un periodo di due giorni. Il parametro di query select definisce la funzione aggregata sum per la metrica message_count nella dimensione apiproxy. Il report restituisce la velocità effettiva dei messaggi di richiesta per tutte le API per il traffico ricevuto tra l'inizio del 20/06/2018 e la fine del 21/6/2018, nel fuso orario UTC:

    curl  https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59" \
      -H "Authorization: Bearer $TOKEN"

    Dove $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta Utilizzare curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

    Di seguito è riportato un esempio della risposta:

    {
      "environments" : [ {
        "dimensions" : [ {
          "metrics" : [ {
            "name" : "sum(message_count)",
            "values" : [ {
              "timestamp" : 1498003200000,
              "value" : "1100.0"
            } ]
          } ],
          "name" : "target-reroute"
        } ],
        "name" : "test"
      } ]...
    }
    

    Questa risposta indica che un proxy API chiamato "target-reroute" in esecuzione nell'ambiente di test ha ricevuto 1100 messaggi tra l'inizio del 20/06/2018 e la fine del 21/06/2018.

    Per visualizzare le metriche per altre dimensioni, specifica una dimensione diversa come parametro URI. Ad esempio, puoi specificare la dimensione developer_app per recuperare le metriche per le app dello sviluppatore. La seguente chiamata API restituisce la velocità effettiva totale (messaggi ricevuti) da qualsiasi app per l'intervallo di tempo specificato:

    curl  https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/developer_app?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59&timeUnit=day" \
      -H "Authorization: Bearer $TOKEN"

    Di seguito è riportato un esempio della risposta:

    {
      "environments": [
        {
          "dimensions": [
            {
              "metrics": [
                {
                  "name": "sum(message_count)",
                  "values": [
                    {
                      "timestamp": 1498003200000,
                      "value": "886.0"
                    }
                  ]
                }
              ],
              "name": "Test-App"
            },
            {
              "metrics": [
                {
                  "name": "sum(message_count)",
                  "values": [
                    {
                      "timestamp": 1498003200000,
                      "value": "6645.0"
                    }
                  ]
                }
              ],
              "name": "johndoe_app"
            },
            {
              "metrics": [
                {
                  "name": "sum(message_count)",
                  "values": [
                    {
                      "timestamp": 1498003200000,
                      "value": "1109.0"
                    }
                  ]
                }
              ],
              "name": "marys_app"
            }
      ]...
    }
    

    Ordinamento dei risultati per ranking relativo

    Molte volte, quando ottieni metriche, vuoi ottenere risultati solo per un sottoinsieme del set totale di dati. In genere, è necessario ottenere i risultati per le "prime 10", ad esempio le "10 API più lente", le "10 app più attive". Puoi farlo utilizzando il parametro di query topk come parte della richiesta.

    Ad esempio, ti potrebbe interessare sapere chi sono i tuoi migliori sviluppatori, misurati in base alla velocità effettiva o quali sono i tuoi peggiori sviluppatori (ad es. le API target "più lente") sono per latenza.

    topk (ovvero entità "top k") consente di generare report sulle entità associate con il valore più alto per una determinata metrica. Ciò consente di filtrare le metriche per un elenco di entità che esemplificano una determinata condizione.

    Ad esempio, per trovare quale URL di destinazione è stato più soggetto a errori nell'ultima settimana, il parametro topk viene aggiunto alla richiesta, con un valore di 1:

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&topk=1" \
      -H "Authorization: Bearer $TOKEN"

    Dove $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta Utilizzare curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

    Di seguito è riportato un esempio della risposta:

    {
      "environments": [
        {
          "dimensions": [
            {
              "metrics": [
                {
                  "name": "sum(is_error)",
                  "values": [
                    {
                      "timestamp": 1494201600000,
                      "value": "12077.0"
                    }
                  ]
                }
              ],
              "name": "http://api.company.com"
            }
          ]...
    }
    

    Il risultato di questa richiesta è un insieme di metriche che mostrano che l'URL di destinazione più errato è http://api.company.com.

    Puoi anche utilizzare il parametro topk per ordinare le API che utilizzano la velocità effettiva più elevata. L'esempio seguente recupera le metriche sull'API con il ranking più alto, definita dalla velocità effettiva più elevata nell'ultima settimana:

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV}/stats/apiproxy?"select=sum(message_count)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=day&sortby=sum(message_count)&sort=DESC&topk=1" \
      -H "Authorization: Bearer $TOKEN"

    Di seguito è riportato un esempio della risposta:

    {
      "environments": [
        {
          "dimensions": [
            {
              "metrics": [
                {
                  "name": "sum(message_count)",
                  "values": [
                    {
                      "timestamp": 1494720000000,
                      "value": "5750.0"
                    },
                    {
                      "timestamp": 1494633600000,
                      "value": "5752.0"
                    },
                    {
                      "timestamp": 1494547200000,
                      "value": "5747.0"
                    },
                    {
                      "timestamp": 1494460800000,
                      "value": "5751.0"
                    },
                    {
                      "timestamp": 1494374400000,
                      "value": "5753.0"
                    },
                    {
                      "timestamp": 1494288000000,
                      "value": "5751.0"
                    },
                    {
                      "timestamp": 1494201600000,
                      "value": "5752.0"
                    }
                  ]
                }
              ],
              "name": "testCache"
            }
          ],
          "name": "test"
        }
      ]...
    }
    

    Filtro dei risultati

    Per una maggiore granularità, puoi filtrare i risultati per limitare i dati restituiti. Quando utilizzi i filtri, devi utilizzare le dimensioni come proprietà filtro.

    Ad esempio, supponiamo che tu debba recuperare un conteggio degli errori dei servizi di backend filtrati dal verbo HTTP della richiesta. Il tuo obiettivo è scoprire quante richieste POST e PUT generano errori per servizio di backend. Per farlo, utilizza la dimensione target_url insieme al filtro request_verb:

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&filter=(request_verb%20in%20'POST','PUT')" \
      -H "Authorization: Bearer $TOKEN"

    Dove $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta Utilizzare curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

    Di seguito è riportato un esempio della risposta:

    {
      "environments" : [
        {
          "dimensions" : [
            {
              "metrics" : [
                {
                  "name" : "sum(is_error)",
                  "values" : [
                    {
                      "timestamp" : 1519516800000,
                      "value" : "1.0"
                    }
                  ]
              }
            ],
            "name" : "testCache"
            }
          ],
          "name" : "test"
        }
      ]...
    }

    Risultati dell'impaginazione

    Negli ambienti di produzione, alcune richieste all'API Apigee Analytics restituiscono set di dati molto grandi. Per semplificare la visualizzazione di set di dati di grandi dimensioni nel contesto di un'applicazione basata su UI, l'API supporta in modo nativo l'impaginazione.

    Per impaginare i risultati, utilizza i parametri di ricerca offset e limit, insieme al parametro di ordinamento sortby per garantire un ordine coerente degli elementi.

    Ad esempio, la richiesta seguente potrebbe restituire un set di dati di grandi dimensioni, poiché recupera le metriche per tutti gli errori su tutte le API nell'ambiente del prodotto per l'ultima settimana.

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)" \
      -H "Authorization: Bearer $TOKEN"

    Dove $TOKEN è impostato sul token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta Utilizzare curl. Per una descrizione delle variabili di ambiente utilizzate, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

    Se la tua applicazione basata su UI può visualizzare ragionevolmente 50 risultati per pagina, puoi impostare il limite su 50. Poiché 0 viene conteggiato come primo elemento, la seguente chiamata restituisce gli elementi da 0 a 49 in ordine decrescente (sort=DESC è il valore predefinito).

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=0" \
      -H "Authorization: Bearer $TOKEN"

    Per la seconda "pagina" di risultati, utilizza il parametro di query offset come indicato di seguito. Tieni presente che il limite e l'offset sono identici. Questo perché 0 viene conteggiato come primo elemento. Con un limite di 50 e un offset di 0, vengono restituiti gli elementi da 0 a 49. Con un offset di 50, vengono restituiti gli articoli da 50 a 99.

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=50" \
      -H "Authorization: Bearer $TOKEN"