Monitorare le API pubblicateMonitor published APIs

Con Monitoraggio di Azure è possibile eseguire operazioni di visualizzazione, query, instradamento, archiviazione, e quindi adottare le misure appropriate, sulle metriche o sui log provenienti da risorse di Azure.With Azure Monitor, you can visualize, query, route, archive, and take actions on the metrics or logs coming from Azure resources.

In questa esercitazione si apprenderà come:In this tutorial, you learn how to:

  • Visualizzare log di attivitàView activity logs
  • Visualizzare i log di diagnosticaView diagnostic logs
  • Visualizzare le metriche dell'APIView metrics of your API
  • Configurare una regola di avviso quando l'API riceve delle chiamate non autorizzateSet up an alert rule when your API gets unauthorized calls

Il video seguente illustra come monitorare Gestione API usando Monitoraggio di Azure.The following video shows how to monitor API Management using Azure Monitor.

prerequisitiPrerequisites

Visualizzare le metriche delle APIView metrics of your APIs

Gestione API genera le metriche ogni minuto in modo da ottenere una visibilità quasi in tempo reale dello stato e dell'integrità delle API.API Management emits metrics every minute, giving you near real-time visibility into the state and health of your APIs. Di seguito è riportato un riepilogo delle metriche disponibili:Following is a summary of some of the available metrics:

  • Capacità (anteprima): consente di decidere se eseguire l'aggiornamento o il downgrade dei servizi di Gestione API.Capacity (preview): helps you make decisions about upgrading/downgrading your APIM services. La metrica viene emessa ogni minuto e riflette la capacità del gateway nel momento in cui viene eseguito il report.The metric is emitted per minute and reflects the gateway capacity at the time of reporting. La metrica è compresa tra 0 e 100 e viene calcolata in base alle risorse gateway, come utilizzo della CPU e della memoria.The metric ranges from 0-100 calculated based on gateway resources such as CPU and memory utilization.
  • Totale richieste gateway: numero di richieste di API nel periodo.Total Gateway Requests: the number of API requests in the period.
  • Richieste gateway riuscite: numero di richieste di API che hanno ricevuto codici di risposta HTTP con esito positivo, tra cui 304, 307 e qualsiasi valore minore di 301, ad esempio 200.Successful Gateway Requests: the number of API requests that received successful HTTP response codes including 304, 307, and anything smaller than 301 (for example, 200).
  • Richieste gateway non riuscite: numero di richieste di API che hanno ricevuto codici di risposta HTTP con esito negativo, tra cui 400 e qualsiasi valore maggiore di 500.Failed Gateway Requests: the number of API requests that received erroneous HTTP response codes including 400, and anything larger than 500.
  • Richieste gateway non autorizzate: numero di richieste di API che hanno ricevuto codici di risposta HTTP tra cui 401, 403 e 429.Unauthorized Gateway Requests: the number of API requests that received HTTP response codes including 401, 403, and 429.
  • Altre richieste gateway: numero di richieste di API che hanno ricevuto codici di risposta HTTP che non appartengono a una delle categorie precedenti, ad esempio, 418.Other Gateway Requests: the number of API requests that received HTTP response codes that do not belong to any of the preceding categories (for example, 418).

Per accedere alle metriche:To access metrics:

  1. Selezionare Metriche dal menu nella parte inferiore della pagina.Select Metrics from the menu near the bottom of the page.
  2. Dall'elenco a discesa selezionare le metriche desiderate. È possibile aggiungere più metriche.From the drop-down, select metrics you are interested in (you can add multiple metrics).

    Selezionare ad esempio Totale richieste gateway e Richieste gateway non riuscite dall'elenco delle metriche disponibili.For example, select Total Gateway Requests and Failed Gateway Requests from the list of available metrics.

  3. Il grafico mostra il numero totale di chiamate API.The chart shows the total number of API calls. Viene indicato anche il numero di chiamate API non riuscite.It also shows the number of API calls that failed.

Configurare una regola di avviso per le richieste non autorizzateSet up an alert rule for unauthorized request

È possibile configurare un avviso basato sulle metriche e sui log attività.You can configure to receive alerts based on metrics and activity logs. Monitoraggio di Azure consente di configurare un avviso in modo che, se attivato, esegua queste operazioni:Azure Monitor allows you to configure an alert to do the following when it triggers:

  • Inviare una notifica via posta elettronicaSend an email notification
  • Chiamare un webhookCall a webhook
  • Richiamare un'app per la logica di AzureInvoke an Azure Logic App

Per configurare gli avvisi:To configure alerts:

  1. Selezionare Regole di avviso nella barra dei menu nella parte inferiore della pagina.Select Alert rules from the menu bar near the bottom of the page.
  2. Selezionare Aggiungi avviso per la metrica.Select Add metric alert.
  3. Immettere un nome per questo avviso.Enter a Name for this alert.
  4. Selezionare Richieste del gateway non autorizzate come metrica da monitorare.Select Unauthorized Gateway Requests as the metric to monitor.
  5. Selezionare Invia messaggio di posta elettronica a proprietari, collaboratori e lettori.Select Email owners, contributors, and readers.
  6. Premere OK.Press OK.
  7. Provare a chiamare l'API Conference senza una chiave API.Try to call the Conference API without an API key. In quanto proprietario del servizio Gestione API, l'utente riceverà un avviso di posta elettronica.As the owner of this API Management service, you receive an email alert.

    Suggerimento

    Quando viene attivata, la regola di avviso può anche chiamare un webhook o un'app per la logica di Azure.The alert rule can also call a Web Hook or an Azure Logic App when it is triggered.

    set-up-alert

Log attivitàActivity Logs

I log attività offrono informazioni dettagliate sulle operazioni eseguite nei servizi Gestione API.Activity logs provide insight into the operations that were performed on your API Management services. L'uso del log attività consente di acquisire informazioni dettagliate su qualsiasi operazione di scrittura (PUT, POST, DELETE) eseguita sui servizi Gestione API.Using activity logs, you can determine the "what, who, and when" for any write operations (PUT, POST, DELETE) taken on your API Management services.

Nota

I log attività non includono le operazioni di lettura (GET) né le operazioni eseguite nel portale di Azure o usando le API di gestione originali.Activity logs do not include read (GET) operations or operations performed in the Azure portal or using the original Management APIs.

È possibile accedere ai log attività del servizio Gestione API o ai log di tutte le risorse di Azure in Monitoraggio di Azure.You can access activity logs in your API Management service, or access logs of all your Azure resources in Azure Monitor.

Per visualizzare i log di attività:To view activity logs:

  1. Selezionare l'istanza del servizio Gestione API.Select your APIM service instance.
  2. Fare clic su Log attività.Click Activity log.

Log di diagnosticaDiagnostic Logs

I log di diagnostica offrono informazioni dettagliate sulle operazioni e gli errori importanti per il controllo e per la risoluzione dei problemi.Diagnostic logs provide rich information about operations and errors that are important for auditing as well as troubleshooting purposes. I log di diagnostica differiscono dai log attività.Diagnostics logs differ from activity logs. I log attività offrono informazioni approfondite sulle operazioni eseguite nelle risorse di Azure.Activity logs provide insights into the operations that were performed on your Azure resources. I log di diagnostica forniscono informazioni dettagliate sulle operazioni eseguite dalla risorsa.Diagnostics logs provide insight into operations that your resource performed.

Per configurare i log di diagnostica:To configure diagnostic logs:

  1. Selezionare l'istanza del servizio Gestione API.Select your APIM service instance.
  2. Fare clic su Log di diagnostica.Click Diagnostic log.
  3. Fare clic su Attiva diagnostica.Click Turn on diagnostics. I log di diagnostica possono essere archiviati con le metriche in un account di archiviazione, trasmessi a un Hub eventi o inviati a Log Analytics.You can archive diagnostic logs along with metrics to a storage account, stream them to an Event Hub, or send them to Log Analytics.

Attualmente Gestione API offre log di diagnostica (in batch orari) sulle singole richieste API, dove ogni voce ha la struttura seguente:API Management currently provides diagnostics logs (batched hourly) about individual API request with each entry having the following schema:

{  
    "isRequestSuccess" : "",
    "time": "",
    "operationName": "",
    "category": "",
    "durationMs": ,
    "callerIpAddress": "",
    "correlationId": "",
    "location": "",
    "httpStatusCodeCategory": "",
    "resourceId": "",
    "properties": {   
        "method": "", 
        "url": "", 
        "clientProtocol": "", 
        "responseCode": , 
        "backendMethod": "", 
        "backendUrl": "", 
        "backendResponseCode": ,
        "backendProtocol": "",  
        "requestSize": , 
        "responseSize": , 
        "cache": "", 
        "cacheTime": "", 
        "backendTime": , 
        "clientTime": , 
        "apiId": "",
        "operationId": "", 
        "productId": "", 
        "userId": "", 
        "apimSubscriptionId": "", 
        "backendId": "",
        "lastError": { 
            "elapsed" : "", 
            "source" : "", 
            "scope" : "", 
            "section" : "" ,
            "reason" : "", 
            "message" : ""
        } 
    }      
}  
ProprietàProperty typeType DESCRIZIONEDescription
isRequestSuccessisRequestSuccess booleanboolean True se la richiesta HTTP è stata completata con codice di stato risposta compreso nell'intervallo 2xx o 3xxTrue if the HTTP request completed with response status code within 2xx or 3xx range
timetime datetimedate-time Timestamp di ricezione della richiesta HTTP dal gatewayTimestamp of receiving the HTTP request by the gateway
operationNameoperationName stringastring Valore costante 'Microsoft.ApiManagement/GatewayLogs'Constant value 'Microsoft.ApiManagement/GatewayLogs'
categorycategory stringastring Valore costante 'GatewayLogs'Constant value 'GatewayLogs'
durationMsdurationMs numero interointeger Numero di millisecondi dal momento in cui il gateway ha ricevuto la richiesta al momento dell'invio della risposta completaNumber of milliseconds from the moment gateway received request until the moment response sent in full
callerIpAddresscallerIpAddress stringastring Indirizzo IP del chiamante gateway immediato (può essere un intermediario)IP address of immediate Gateway caller (can be an intermediary)
correlationIdcorrelationId stringastring Identificatore richiesta http univoco assegnato da Gestione APIUnique http request identifier assigned by API Management
locationlocation stringastring Nome dell'area di Azure in cui si trovava il gateway che ha elaborato la richiestaName of the Azure region where the Gateway that processed the request was located
httpStatusCodeCategoryhttpStatusCodeCategory stringastring Categoria del codice di stato della risposta HTTP: richiesta riuscita (minore o uguale a 301 oppure 304 o 307), richiesta non autorizzata (401, 403, 429), errore (400, valore compreso tra 500 e 600), altroCategory of http response status code: Successful (301 or less or 304 or 307), Unauthorized (401, 403, 429), Erroneous (400, between 500 and 600), Other
ResourceIdresourceId stringastring "Id della risorsa di Gestione API /SUBSCRIPTIONS//RESOURCEGROUPS//PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/"Id of the API Management resource /SUBSCRIPTIONS//RESOURCEGROUPS//PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/
propertiesproperties objectobject Proprietà della richiesta correnteProperties of the current request
staticomethod stringastring Metodo HTTP della richiesta in ingressoHTTP method of the incoming request
URLurl stringastring URL della richiesta in ingressoURL of the incoming request
clientProtocolclientProtocol stringastring Versione del protocollo HTTP della richiesta in ingressoHTTP protocol version of the incoming request
responseCoderesponseCode numero interointeger Codice di stato della risposta HTTP inviata a un clientStatus code of the HTTP response sent to a client
backendMethodbackendMethod stringastring Metodo HTTP della richiesta inviata a un back-endHTTP method of the request sent to a backend
backendUrlbackendUrl stringastring URL della richiesta inviata a un back-endURL of the request sent to a backend
backendResponseCodebackendResponseCode numero interointeger Codice della risposta HTTP ricevuta da un back-endCode of the HTTP response received from a backend
backendProtocolbackendProtocol stringastring Versione del protocollo HTTP della richiesta inviata a un back-endHTTP protocol version of the request sent to a backend
requestSizerequestSize numero interointeger Numero di byte ricevuti da un client durante l'elaborazione della richiestaNumber of bytes received from a client during request processing
responseSizeresponseSize numero interointeger Numero di byte inviati a un client durante l'elaborazione della richiestaNumber of bytes sent to a client during request processing
cachecache stringastring Stato di intervento della cache di Gestione API nell'elaborazione della richiesta (hit, miss, none)Status of API Management cache involvement in request processing (i.e., hit, miss, none)
cacheTimecacheTime numero interointeger Numero di millisecondi impiegati complessivamente per l'I/O della cache di Gestione API (connessione, invio e ricezione byte)Number of milliseconds spent on overall API Management cache IO (connecting, sending, and receiving bytes)
backendTimebackendTime numero interointeger Numero di millisecondi impiegati complessivamente per l'I/O del back-end (connessione, invio e ricezione byte)Number of milliseconds spent on overall backend IO (connecting, sending and receiving bytes)
clientTimeclientTime numero interointeger Numero di millisecondi impiegati complessivamente per l'I/O del client (connessione, invio e ricezione byte)Number of milliseconds spent on overall client IO (connecting, sending and receiving bytes)
apiIdapiId stringastring Identificatore dell'entità API per la richiesta correnteAPI entity identifier for current request
operationIdoperationId stringastring Identificatore dell'entità operazione per la richiesta correnteOperation entity identifier for current request
productIdproductId stringastring Identificatore dell'entità prodotto per la richiesta correnteProduct entity identifier for current request
userIduserId stringastring Identificatore dell'entità utente per la richiesta correnteUser entity identifier for current request
apimSubscriptionIdapimSubscriptionId stringastring Identificatore dell'entità sottoscrizione per la richiesta correnteSubscription entity identifier for current request
backendIdbackendId stringastring Identificatore dell'entità back-end per la richiesta correnteBackend entity identifier for current request
LastErrorLastError objectobject Errore di elaborazione dell'ultima richiestaLast request processing error
elapsedelapsed numero interointeger Numero di millisecondi trascorsi da quando il gateway ha ricevuto la richiesta fino al momento in cui si è verificato l'erroreNumber of milliseconds elapsed since Gateway received request the moment the error occurred
una sezione sourcesource stringastring Nome del criterio o del gestore interno di elaborazione che ha causato l'erroreName of the policy or processing internal handler caused the error
scopescope stringastring Ambito del documento dei criteri contenente il criterio che ha causato l'erroreScope of the policy document containing the policy that caused the error
sectionsection stringastring Sezione del documento dei criteri contenente il criterio che ha causato l'erroreSection of the policy document containing the policy that caused the error
reasonreason stringastring Motivo dell'erroreError reason
Messagemessage stringastring Messaggio di erroreError message

Passaggi successiviNext steps

Questa esercitazione illustra come:In this tutorial, you learned how to:

  • Visualizzare log di attivitàView activity logs
  • Visualizzare i log di diagnosticaView diagnostic logs
  • Visualizzare le metriche dell'APIView metrics of your API
  • Configurare una regola di avviso quando l'API riceve delle chiamate non autorizzateSet up an alert rule when your API gets unauthorized calls

Passare all'esercitazione successiva:Advance to the next tutorial: