Utilizza le API delle metriche

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Apigee Edge registra un'ampia varietà di dati operativi e aziendali che passano per le API. Le metriche derivate da questi dati sono utile per il monitoraggio operativo e aziendale. Con l'analisi delle API Edge, puoi, ad esempio, Ad esempio, stabilire quali API hanno prestazioni soddisfacenti o scarse, quali sviluppatori offrono di valore più elevato e le app che causano il maggior numero di problemi per i tuoi servizi di backend.

Per facilitare l'accesso ai dati di queste metriche, Edge espone un'API RESTful. Puoi Utilizzare l'API Metrics quando devi automatizzare determinate funzioni di Analytics, ad esempio il recupero delle metriche periodicamente utilizzando un client o uno script per l'automazione. Puoi anche utilizzare l'API per creare il tuo visualizzazioni sotto forma di widget personalizzati che puoi incorporare in portali o app personalizzate.

Per scoprire come utilizzare Analytics nell'API Consulta la panoramica dell'analisi delle API per UI di gestione perimetrale.

Informazioni sulle API delle metriche

Edge fornisce due API per le metriche:

  • Visualizza metriche restituisce metriche per un'organizzazione e un ambiente per un determinato periodo di tempo, ad esempio un'ora, un giorno o una settimana.

    Ad esempio, per la settimana precedente, vuoi ottenere:

    • Il numero di errori dei criteri
    • Il tempo di risposta medio
    • Il traffico totale
  • Organizzare le metriche per dimensioni restituisce le metriche relative a un periodo di tempo per un'organizzazione e un ambiente raggruppati per dimensione.

    Ad esempio, per la settimana precedente utilizzi le dimensioni per raggruppare le metriche per prodotto API, proxy API, e l'email dello sviluppatore per ottenere:

    • Il numero di errori relativi alle norme per prodotto API
    • Il tempo di risposta medio per proxy API
    • Il traffico totale per email dello sviluppatore

    La scheda Organizzare le metriche per dimensioni L'API supporta funzionalità aggiuntive non supportate da Ottieni metriche API, tra cui:

Informazioni sulle quote dell'API Metrics

Edge applica le quote seguenti a queste chiamate. La quota si basa sul sistema di backend gestisce la chiamata:

  • Postgres: 40 chiamate al minuto
  • BigQuery: 12 chiamate al minuto

Determina il sistema di backend che gestisce la chiamata esaminando l'oggetto di risposta. Ogni oggetto risposta contiene una proprietà metaData che elenca il servizio che ha gestito la chiamata nella proprietà Source. Ad esempio, per Postgres:

{
  ...
  "metaData": {
    "errors": [],
    "notices": [
      "Source:Postgres",
      "Table used: xxxxxx.yyyyy",
      "query served by:111-222-333"
    ]
  }
}

Per BigQuery, la proprietà Source è:

"Source:Big Query"

Se superi la quota di chiamate, l'API restituisce una risposta HTTP 429.

Recupero delle metriche con l'API di gestione

La differenza principale tra le due API è che l'opzione Ottieni metriche restituisce metriche non elaborate per l'intera organizzazione e l'intero ambiente, mentre Organizzare le metriche in base alle dimensioni ti consente di raggruppare le metriche in base a diversi tipi di entità, come prodotto API, sviluppatore e app.

L'URL della richiesta per l'API Get Metrics è:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats

Per Organizzare le metriche per dimensioni API, includi una risorsa aggiuntiva nell'URL dopo /stats che specifica la dimensione desiderata:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/dimension

Ad esempio, per ottenere le metriche raggruppate per proxy API, utilizzerai il seguente URL per chiamare l'API di gestione:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/apiproxy

Specifica le metriche da restituire

Per entrambi i tipi Ottieni metriche e Organizzare le metriche in base alle dimensioni API che usano il parametro di query select per specificare le metriche da recuperare e una funzione di aggregazione facoltativa, nella forma:

?select=metric

oppure:

?select=aggFunction(metric)

Dove:

  • metric specifica i dati che vuoi restituire. Ad esempio: il numero di richieste API, i successi della cache o gli errori dei criteri. Consulta le metriche 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 sulla metrica. Ad esempio, puoi utilizzare le seguenti funzioni di aggregazione con la metrica della latenza di elaborazione:

    • avg: restituisce la latenza media di elaborazione.
    • min: restituisce la latenza di elaborazione minima.
    • max: restituisce la latenza massima di elaborazione.
    • sum: restituisce la somma di tutte le latenze di elaborazione.

    Non tutte le metriche supportano tutte le funzioni di aggregazione. La documentazione su 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 al secondo, ovvero richieste proxy API:

?select=tps

Tieni presente che questo esempio non richiede una funzione di aggregazione. Il prossimo esempio 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. a ottenere metriche con la somma degli errori dei criteri e la dimensione media della richiesta, imposta il parametro di query select utilizzando elenco di metriche:

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

Specificare il periodo di tempo

L'API Metrics restituisce i dati relativi a un periodo di tempo specificato. Usa timeRange parametro di query per specificare il periodo di tempo, nella forma seguente:

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

Osserva %20 prima di HH:MM. Il parametro timeRange richiede uno spazio con codifica 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 le 24:00 come ora perché finiscono per le 00:00. Usa invece 23:59.

Utilizzo di un delimitatore

Per separare più dimensioni in una chiamata API, utilizza una virgola (,) come delimitatore. Ad esempio, nella chiamata API

curl https://api.enterprise.apigee.com/v1/o/myorg/e/prod/stats/apis,apps?select=sum(message_count)&timeRange=9/24/2018%2000:00~10/25/2018%2000:00&timeUnit=day

le dimensioni apis e apps sono separate da ,.

Chiamate API di esempio

Questa sezione contiene esempi che utilizzano gli strumenti Ottieni metriche e Organizzare le metriche in base alle dimensioni su quelle di livello inferiore. Per ulteriori esempi, consulta gli esempi di API Metrics.

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

Per visualizzare il numero totale di chiamate effettuate a tutte le API nella tua organizzazione e nel tuo ambiente in un mese, utilizza API Get Metrics:

curl -v "https://api.enterprise.apigee.com/v1/o/{org}/e/{env}/stats/?select=sum(message_count)&timeRange=03/01/2018%2000:00~03/31/2018%2023:59" \
-u email:password

Esempio di risposta:

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

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

In questo esempio, vengono restituite metriche per il numero di richieste ricevute da tutti i proxy API nell'arco di due giorni. Il parametro di query select definisce la funzione aggregata sum per la metrica message_count sulla 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/6/2018 e la fine del 21/6/2018, in Ora UTC:

curl  https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59" \
-u email:password

Esempio di risposta:

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

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

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

curl  https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/developer_app?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59&timeUnit=day" \
-u email:password

Esempio di 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

Spesso, quando visualizzi le metriche, vuoi ottenere risultati solo per un sottoinsieme dell'insieme totale e i dati di Google Cloud. Di solito, è necessario ottenere i risultati per le "primi 10", ad esempio i "primi 10 più lenti API", le "10 app più attive". Puoi farlo utilizzando il parametro di query topk nell'ambito della richiesta.

Ad esempio, potrebbe interessarti sapere chi sono i tuoi migliori sviluppatori, misurati in termini di velocità effettiva, o gli elementi con il rendimento peggiore (ad es. le API di destinazione "più lente") sono per latenza.

topk (ovvero le entità "top k") consente di generare report sulle entità associate con il valore più alto per una determinata metrica. In questo modo puoi filtrare le metriche per un elenco entità che rappresentano una particolare condizione. Ad esempio, per trovare l'URL di destinazione con il maggiore rischio di errori nell'ultima settimana, il parametro topk viene aggiunto alla richiesta, con il valore 1:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{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" \
  -u email:password
{
  "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 mostra che l'URL di destinazione più bug http://api.company.com.

Puoi anche utilizzare il parametro topk per ordinare in base alle API con il tasso e la velocità effettiva effettiva. L'esempio seguente recupera le metriche nell'API con il ranking più alto, definita dal criterio dell'ultima settimana:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{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" \
-u email:password

Esempio di 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 risultati

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

Ad esempio, supponiamo che tu debba recuperare un conteggio di errori dai servizi di backend e viene filtrato in base al verbo HTTP della richiesta. Il tuo obiettivo è scoprire quante richieste POST e PUT generando errori per ogni servizio di backend. Per farlo, devi utilizzare la dimensione target_url insieme al filtro request_verb:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{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')" \
-u email:password

Esempio di risposta:

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

Impaginazione dei risultati

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

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

Ad esempio, è probabile che la seguente richiesta restituisca un set di dati di grandi dimensioni, poiché recupera le metriche relative a tutti gli errori relativi a tutte le API nell'ambiente del prodotto per l'ultima settimana.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)" \
-u email:password

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

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{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" \
-u email:password

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

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{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" \
-u email:password