Supervisión de las API publicadasMonitor published APIs

Con Azure Monitor, puede visualizar, consultar, enrutar, archivar y realizar acciones en las métricas o los registros procedentes de los recursos de Azure.With Azure Monitor, you can visualize, query, route, archive, and take actions on the metrics or logs coming from Azure resources.

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Visualización de registros de actividadView activity logs
  • Visualización de los registros de diagnósticoView diagnostic logs
  • Visualización de las métricas de las APIView metrics of your API
  • Configurar una regla de alerta cuando la API recibe llamadas no autorizadasSet up an alert rule when your API gets unauthorized calls

En el vídeo siguiente se muestra cómo supervisar API Management con Azure Monitor.The following video shows how to monitor API Management using Azure Monitor.

Requisitos previosPrerequisites

DisponibilidadAvailability

Importante

Esta característica está disponible en los niveles Premium, Estándar, Básico y Desarrollador de API Management.This feature is available in the Premium, Standard, Basic and Developer tiers of API Management.

Visualización de las métricas de las APIView metrics of your APIs

API Management emite métricas cada minuto, lo que le ofrece visibilidad casi en tiempo real sobre el estado y el mantenimiento de las API.API Management emits metrics every minute, giving you near real-time visibility into the state and health of your APIs. El siguiente es un resumen de algunas de las métricas disponibles:Following is a summary of some of the available metrics:

  • Capacidad (versión preliminar): ayuda a tomar decisiones acerca de cómo actualizar o degradar los servicios de APIM.Capacity (preview): helps you make decisions about upgrading/downgrading your APIM services. La métrica se emite por minuto y refleja la capacidad de la puerta de enlace en el momento del informe.The metric is emitted per minute and reflects the gateway capacity at the time of reporting. La métrica oscila entre 0 y 100, y se calcula en función de los recursos de la puerta de enlace, como el uso de la CPU y de la memoria.The metric ranges from 0-100 calculated based on gateway resources such as CPU and memory utilization.
  • Solicitudes de puerta de enlace en total: el número de solicitudes API en el período.Total Gateway Requests: the number of API requests in the period.
  • Solicitudes de puerta de enlace correctas: el número de solicitudes de API que recibieron códigos de respuesta HTTP correctos, como 304, 307 y los menores de 301 (por ejemplo, 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).
  • Solicitudes de puerta de enlace con error: el número de solicitudes de API que recibieron códigos de respuesta HTTP erróneos, como 400 y cualquiera mayor que 500.Failed Gateway Requests: the number of API requests that received erroneous HTTP response codes including 400, and anything larger than 500.
  • Solicitudes de puerta de enlace no autorizadas: el número de solicitudes API que recibieron códigos de respuesta HTTP, incluidos 401, 403 y 429.Unauthorized Gateway Requests: the number of API requests that received HTTP response codes including 401, 403, and 429.
  • Otras solicitudes de puerta de enlace: el número de solicitudes API que recibieron códigos de respuesta HTTP que no pertenecen a ninguna de las categorías anteriores (por ejemplo, 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).

gráfico de métricas

Para acceder a la métrica:To access metrics:

  1. Seleccione Métricas en el menú situado cerca de la parte inferior de la página.Select Metrics from the menu near the bottom of the page.

    Métricas

  2. En la lista desplegable, seleccione las métricas que le interesen.From the drop-down, select metrics you are interested in. Por ejemplo, Requests.For example, Requests.

  3. El gráfico muestra el número total de llamadas API.The chart shows the total number of API calls.

  4. El gráfico se puede filtrar mediante las dimensiones de la métrica de Solicitudes.The chart can be filtered using the dimensions of the Requests metric. Por ejemplo, haga clic en Agregar filtro, elija Backend Response Code (Código de respuesta de back-end), escriba 500 como valor.For example, click on Add filter, choose Backend Response Code, enter 500 as the value. Ahora el gráfico muestra el número de solicitudes erróneas en el back-end de la API.Now the chart shows the number of requests that were failed in the API backend.

Configuración de una regla de alerta para solicitudes no autorizadasSet up an alert rule for unauthorized request

Puede configurar la recepción de alertas en función de métricas y registros de actividad.You can configure to receive alerts based on metrics and activity logs. Azure Monitor permite configurar una alerta que haga lo siguiente cuando se desencadena:Azure Monitor allows you to configure an alert to do the following when it triggers:

  • Enviar una notificación por correo electrónicoSend an email notification
  • Llamar a un webhookCall a webhook
  • Invocar una aplicación lógica de AzureInvoke an Azure Logic App

Para configurar alertas:To configure alerts:

  1. Seleccione Alertas en la barra de menús cerca de la parte inferior de la página.Select Alerts from the menu bar near the bottom of the page.

    alerts

  2. Haga clic en una Nueva regla de alerta para esta alerta.Click on a New alert rule for this alert.

  3. Haga clic en Agregar condición.Click on Add condition.

  4. Seleccione Métricas en el cuadro desplegable del tipo de señal.Select Metrics in the Signal type drop down.

  5. Seleccione Unauthorized Gateway Requests (Solicitudes de puerta de enlace no autorizadas) como la señal que se desea supervisar.Select Unauthorized Gateway Request as the signal to monitor.

    alerts

  6. En la vista Configurar lógica de señal, especifique un umbral después del cual debe activarse la alerta y haga clic en Hecho.In the Configure signal logic view, specify a threshold after which the alert should be triggered and click Done.

    alerts

  7. Seleccione un grupo de acciones existente o cree uno nuevo.Select an existing Action Group or create a new one. En el ejemplo siguiente, se enviará un correo electrónico a los administradores.In the example below, an email will be sent to the admins.

    alerts

  8. Escriba un nombre y la descripción para la regla de alertas y elija el nivel de gravedad.Provide a name, description of the alert rule and choose the severity level.

  9. Presione Crear regla de alertas.Press Create alert rule.

  10. Ahora, intente llamar a Conference API sin una clave de API.Now, try to call the Conference API without an API key. La alerta se desencadenará y se enviará un correo electrónico a los administradores.The alert will be triggered and email will be sent to the admins.

Registros de actividadActivity Logs

Los registros de actividad proporcionan información sobre las operaciones llevadas a cabo en los servicios API Management.Activity logs provide insight into the operations that were performed on your API Management services. Con los registros de actividades, puede determinar los interrogantes “qué, quién y cuándo” de las operaciones de escritura (PUT, POST, DELETE) llevadas a cabo en los servicios API Management.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

Los registros de actividad no incluyen las operaciones de lectura (GET) ni las realizadas en Azure Portal o mediante las API de administración originales.Activity logs do not include read (GET) operations or operations performed in the Azure portal or using the original Management APIs.

Puede acceder a registros de actividad en el servicio API Management o a los registros de todos los recursos de Azure en Azure Monitor.You can access activity logs in your API Management service, or access logs of all your Azure resources in Azure Monitor.

registros de actividad

Para ver los registros de actividad:To view activity logs:

  1. Seleccione la instancia del servicio APIM.Select your APIM service instance.

  2. Haga clic en Registro de actividad.Click Activity log.

    registro de actividad

  3. Seleccione el ámbito de filtrado que desee y haga clic en Aplicar.Select desired filtering scope and click Apply.

Registros de diagnósticoDiagnostic Logs

Los registros de diagnóstico proporcionan información valiosa acerca de las operaciones y los errores que son importantes para la auditoría, así como para solucionar problemas.Diagnostic logs provide rich information about operations and errors that are important for auditing as well as troubleshooting purposes. Los registros de diagnóstico son diferentes de los registros de actividad.Diagnostics logs differ from activity logs. Los registros de actividad proporcionan información sobre las operaciones llevadas a cabo en los recursos de Azure.Activity logs provide insights into the operations that were performed on your Azure resources. Los registros de diagnóstico proporcionan información detallada acerca de las operaciones que el recurso ha realizado.Diagnostics logs provide insight into operations that your resource performed.

Para configurar registros de diagnóstico:To configure diagnostic logs:

  1. Seleccione la instancia del servicio APIM.Select your APIM service instance.

  2. Haga clic en Configuración de diagnóstico.Click Diagnostic settings.

    registros de diagnóstico

  3. Haga clic en Activar diagnóstico.Click Turn on diagnostics. Los registros de diagnóstico se pueden archivar junto con las métricas en una cuenta de almacenamiento, transmitirlos en secuencias a un centro de eventos o enviarlos a los registros de Azure Monitor.You can archive diagnostic logs along with metrics to a storage account, stream them to an Event Hub, or send them to Azure Monitor logs.

Actualmente, API Management proporciona registros de diagnóstico (de los que se crean lotes cada hora) de una solicitud de API individual con cada entrada que tenga el esquema siguiente: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" : ""
        } 
    }      
}  
PropiedadProperty EscribaType DESCRIPCIÓNDescription
isRequestSuccessisRequestSuccess booleanboolean True si la solicitud HTTP se completó con el código de estado de respuesta dentro del intervalo 2xx o 3xxTrue if the HTTP request completed with response status code within 2xx or 3xx range
timetime date-timedate-time Marca de tiempo de la recepción de la solicitud HTTP por parte de la puerta de enlaceTimestamp of receiving the HTTP request by the gateway
operationNameoperationName stringstring Valor constante "Microsoft.ApiManagement/GatewayLogs"Constant value 'Microsoft.ApiManagement/GatewayLogs'
categorycategory stringstring Valor constante "GatewayLogs"Constant value 'GatewayLogs'
durationMsdurationMs integerinteger Número de milisegundos transcurridos desde el momento en que la puerta de enlace recibió la solicitud hasta que se envió toda la respuestaNumber of milliseconds from the moment gateway received request until the moment response sent in full
callerIpAddresscallerIpAddress stringstring Dirección IP del llamador inmediato de la puerta de enlace (puede ser un intermediario)IP address of immediate Gateway caller (can be an intermediary)
correlationIdcorrelationId stringstring Identificador único de la solicitud HTTP asignado por API ManagementUnique http request identifier assigned by API Management
locationlocation stringstring Nombre de la región de Azure donde se encontraba la puerta de enlace que procesó la solicitudName of the Azure region where the Gateway that processed the request was located
httpStatusCodeCategoryhttpStatusCodeCategory stringstring Categoría del código de estado de respuesta HTTP: Correcto (301 o menos, 304 o 307), No autorizado (401, 403, 429), Erróneo (400, entre 500 y 600), OtroCategory 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 stringstring Identificador del recurso de API Management /SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<name>ID of the API Management resource /SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<name>
propertiesproperties objetoobject Propiedades de la solicitud actualProperties of the current request
methodmethod stringstring Método HTTP de la solicitud entranteHTTP method of the incoming request
urlurl stringstring Dirección URL de la solicitud entranteURL of the incoming request
clientProtocolclientProtocol stringstring Versión del protocolo HTTP de la solicitud entranteHTTP protocol version of the incoming request
responseCoderesponseCode integerinteger Código de estado de la respuesta HTTP enviada a un clienteStatus code of the HTTP response sent to a client
backendMethodbackendMethod stringstring Método HTTP de la solicitud enviada a un back-endHTTP method of the request sent to a backend
backendUrlbackendUrl stringstring Dirección URL de la solicitud enviada a un back-endURL of the request sent to a backend
backendResponseCodebackendResponseCode integerinteger Código de la respuesta HTTP recibida de un back-endCode of the HTTP response received from a backend
backendProtocolbackendProtocol stringstring Versión del protocolo HTTP de la solicitud enviada a un back-endHTTP protocol version of the request sent to a backend
requestSizerequestSize integerinteger Número de bytes recibidos de un cliente durante el procesamiento de solicitudesNumber of bytes received from a client during request processing
responseSizeresponseSize integerinteger Número de bytes enviados a un cliente durante el procesamiento de solicitudesNumber of bytes sent to a client during request processing
cachecache stringstring Estado de participación de la caché de API Management en el procesamiento de la solicitud (es decir, acierto, error, ninguno)Status of API Management cache involvement in request processing (i.e., hit, miss, none)
cacheTimecacheTime integerinteger Número de milisegundos empleados en la E/S de la caché global de API Management (conexión, envío y recepción de bytes)Number of milliseconds spent on overall API Management cache IO (connecting, sending, and receiving bytes)
backendTimebackendTime integerinteger Número de milisegundos empleados en la E/S global de back-end (conexión, envío y recepción de bytes)Number of milliseconds spent on overall backend IO (connecting, sending and receiving bytes)
clientTimeclientTime integerinteger Número de milisegundos empleados en la E/S global del cliente (conexión, envío y recepción de bytes)Number of milliseconds spent on overall client IO (connecting, sending and receiving bytes)
apiIdapiId stringstring Identificador de la entidad de la API de la solicitud actualAPI entity identifier for current request
operationIdoperationId stringstring Identificador de la entidad de la operación de la solicitud actualOperation entity identifier for current request
productIdproductId stringstring Identificador de la entidad del producto de la solicitud actualProduct entity identifier for current request
userIduserId stringstring Identificador de la entidad del usuario de la solicitud actualUser entity identifier for current request
apimSubscriptionIdapimSubscriptionId stringstring Identificador de la entidad de la suscripción de la solicitud actualSubscription entity identifier for current request
backendIdbackendId stringstring Identificador de la entidad del back-end de la solicitud actualBackend entity identifier for current request
lastErrorLastError objetoobject Último error de procesamiento de la solicitudLast request processing error
elapsedelapsed integerinteger Número de milisegundos transcurridos desde que la puerta de enlace recibió una solicitud hasta el momento en que se produjo el errorNumber of milliseconds elapsed since Gateway received request the moment the error occurred
sourcesource stringstring Nombre del controlador interno del procesamiento o de la directiva que produjo el errorName of the policy or processing internal handler caused the error
scopescope stringstring Ámbito del documento de directiva que contiene la directiva que produjo el errorScope of the policy document containing the policy that caused the error
sectionsection stringstring Sección del documento de directiva que contiene la directiva que produjo el errorSection of the policy document containing the policy that caused the error
reasonreason stringstring Motivo del errorError reason
messagemessage stringstring Mensaje de errorError message

Pasos siguientesNext steps

En este tutorial aprendió lo siguiente:In this tutorial, you learned how to:

  • Visualización de registros de actividadView activity logs
  • Visualización de los registros de diagnósticoView diagnostic logs
  • Visualización de las métricas de las APIView metrics of your API
  • Configurar una regla de alerta cuando la API recibe llamadas no autorizadasSet up an alert rule when your API gets unauthorized calls

Avance hasta el siguiente tutorial:Advance to the next tutorial: