Supervisar el estado de la aplicación para la confiabilidad de AzureMonitoring application health for reliability in Azure

La supervisión y el diagnóstico son fundamentales para proporcionar resistencia.Monitoring and diagnostics are crucial for resiliency. Si algo va mal, deberá saber que ha sucedido, cuando que no se pudo — y ¿por qué.If something fails, you need to know that it failed, when it failed — and why.

Supervisión no es igual a detección de errores.Monitoring is not the same as failure detection. Por ejemplo, la aplicación podría detectar un transient error e inténtelo de nuevo, evitar el tiempo de inactividad.For example, your application might detect a transient error and retry, avoiding downtime. Pero también debe iniciar la operación de reintento para que pueda supervisar la tasa de errores para obtener una perspectiva general del estado de la aplicación.But it should also log the retry operation so that you can monitor the error rate to get an overall picture of application health.

Piense en el proceso de supervisión y diagnóstico como una canalización con cuatro fases distintas: Instrumentación, recopilación y almacenamiento, análisis y diagnóstico y visualización y alertas.Think of the monitoring and diagnostics process as a pipeline with four distinct stages: Instrumentation, collection and storage, analysis and diagnosis, and visualization and alerts.

InstrumentaciónInstrumentation

No es práctico supervisar la aplicación directamente, por lo que la instrumentación es la clave.It's not practical to monitor your application directly, so instrumentation is key. Puede ejecutar un sistema distribuido a gran escala en docenas de máquinas virtuales (VM), que se agregan y quitan con el tiempo.A large-scale distributed system might run on dozens of virtual machines (VMs), which are added and removed over time. Del mismo modo, una aplicación de nube podría utilizar un número de almacenes de datos y una acción de usuario único puede abarcar varios subsistemas.Likewise, a cloud application might use a number of data stores and a single user action might span multiple subsystems.

Proporcionar instrumentación enriquecida:Provide rich instrumentation:

  • Para los errores que es probable que pero aún no ha se ha producido, proporcionar suficientes datos para determinar la causa, mitigar la situación y asegúrese de que el sistema sigue estando disponible.For failures that are likely but have not yet occurred, provide enough data to determine the cause, mitigate the situation, and ensure that the system remains available.
  • Para los errores que ya se han producido, la aplicación debe devolver un mensaje de error adecuado al usuario pero intentará continuar ejecutándose, aunque con funcionalidad reducida.For failures that have already occurred, the application should return an appropriate error message to the user but should attempt to continue running, albeit with reduced functionality.

Sistemas de supervisión deben capturar información completa para que las aplicaciones se pueden restaurar de forma eficaz y, si es necesario, los diseñadores y desarrolladores pueden modificar el sistema para evitar que la situación periódica.Monitoring systems should capture comprehensive details so that applications can be restored efficiently and, if necessary, designers and developers can modify the system to prevent the situation from recurring.

Los datos sin procesar de supervisión pueden proceder de diversos orígenes, incluidos:The raw data for monitoring can come from a variety of sources, including:

Servicios de Azure más tienen las métricas y diagnóstico que se puede configurar para analizar y determinar la causa de problemas.Most Azure services have metrics and diagnostics that you can configure to analyze and determine the cause of problems. Para obtener más información, consulte datos de supervisión recopilados por Azure Monitor.To learn more, see Monitoring data collected by Azure Monitor.

Recopilación y almacenamientoCollection and storage

Datos de instrumentación sin procesar se pueden mantener en diferentes ubicaciones y formatos, incluidos:Raw instrumentation data can be held in various locations and formats, including:

  • Registros de seguimiento de aplicacionesApplication trace logs
  • Registros IISIIS logs
  • contadores de rendimientoPerformance counters

Estos orígenes dispares se recopilan, consolidados y colocan en almacenes de datos confiable en Azure, como Application Insights, las métricas de Azure Monitor, estado del servicio, cuentas de almacenamiento y Azure Log Analytics.These disparate sources are collected, consolidated, and placed in reliable data stores in Azure, such as Application Insights, Azure Monitor metrics, Service Health, storage accounts, and Azure Log Analytics.

Análisis y diagnósticoAnalysis and diagnosis

Analizar los datos consolidados en estos almacenes de datos para solucionar problemas y obtener una visión general del estado de la aplicación.Analyze data consolidated in these data stores to troubleshoot issues and gain an overall view of application health. Por lo general, puede buscar y analizar los datos de Application Insights y Log Analytics mediante consultas de Kusto o gráficos vista preconfigurada mediante soluciones de administración.Generally, you can search for and analyze the data in Application Insights and Log Analytics using Kusto queries or view preconfigured graphs using management solutions. O utilice Azure Advisor para ver las recomendaciones con un enfoque en resistencia y rendimiento.Or use Azure Advisor to view recommendations with a focus on resiliency and performance.

Visualización y alertasVisualization and alerts

Presentar datos de telemetría en un formato que facilita a un operador debe tener en cuenta los problemas o tendencias rápidamente, por ejemplo, una alerta de correo electrónico o el panel.Present telemetry data in a format that makes it easy for an operator to notice problems or trends quickly, such as a dashboard or email alert.

Obtener una vista de pila completa del estado de la aplicación mediante el uso de paneles de Azure para crear una vista consolidada de gráficos de Application Insights, Log Analytics, las métricas de Azure Monitor y estado del servicio de supervisión.Get a full-stack view of application state by using Azure dashboards to create a consolidated view of monitoring graphs from Application Insights, Log Analytics, Azure Monitor metrics, and Service Health. Y use alertas de Azure Monitor para crear notificaciones de estado del servicio, el estado de los recursos, las métricas de Azure Monitor, los registros de Log Analytics y Application Insights.And use Azure Monitor alerts to create notifications on Service Health, resource health, Azure Monitor metrics, logs in Log Analytics, and Application Insights.

Para obtener más información sobre la supervisión y diagnóstico, consulte supervisión y diagnóstico.For more information about monitoring and diagnostics, see Monitoring and diagnostics.

Los sondeos de estado y las funciones de comprobaciónHealth probes and check functions

El estado y el rendimiento de una aplicación pueden reducirse con el tiempo y degradación podría no ser apreciable hasta que se produce un error en la aplicación.The health and performance of an application can degrade over time, and degradation might not be noticeable until the application fails.

Implemente sondeos o funciones de comprobación y ejecútelos con regularidad desde fuera de la aplicación.Implement probes or check functions, and run them regularly from outside the application. Estas comprobaciones pueden ser tan simples como la medición del tiempo de respuesta para la aplicación como un todo, las partes individuales de la aplicación, los servicios específicos que utiliza la aplicación o componentes independientes.These checks can be as simple as measuring response time for the application as a whole, for individual parts of the application, for specific services that the application uses, or for separate components.

Funciones de comprobación pueden ejecutar procesos para garantizar que producen resultados válidos, medir la latencia y comprobar la disponibilidad y extraer información del sistema.Check functions can run processes to ensure that they produce valid results, measure latency and check availability, and extract information from the system.

Errores de flujo de trabajo de larga ejecuciónLong-running workflow failures

Los flujos de trabajo de larga ejecución suelen incluyen varios pasos, cada uno de los cuales debe ser independiente.Long-running workflows often include multiple steps, each of which should be independent.

Realizar un seguimiento del progreso de los procesos de larga ejecución para minimizar la probabilidad de que todo el flujo de trabajo deberá revertirse o que varias transacciones de compensación debe ejecutarse.Track the progress of long-running processes to minimize the likelihood that the entire workflow will need to be rolled back or that multiple compensating transactions will need to be executed.

Sugerencia

Supervise y administre el progreso de los flujos de trabajo de larga ejecución implementando un patrón como Scheduler Agent Supervisor.Monitor and manage the progress of long-running workflows by implementing a pattern such as Scheduler Agent Supervisor.

Registros de aplicaciónApplication logs

Los registros de aplicación constituyen un origen importante de datos de diagnóstico.Application logs are an important source of diagnostics data. Para obtener información detallada cuando lo necesite más, siga las prácticas recomendadas para el registro de aplicación.To gain insight when you need it most, follow best practices for application logging.

Datos de registro en el entorno de producciónLog data in the production environment

Capturar datos de telemetría eficaz mientras la aplicación se ejecuta en el entorno de producción, por lo que tiene suficiente información para diagnosticar la causa de problemas en el estado de producción.Capture robust telemetry data while the application is running in the production environment, so you have sufficient information to diagnose the cause of issues in the production state.

Eventos de registro en los límites del servicioLog events at service boundaries

Incluya un identificador de correlación que traspase los límites del servicio.Include a correlation ID that flows across service boundaries. Si una transacción fluye a través de varios servicios y uno de ellos se produce un error, la correlación ID le ayuda a realizar un seguimiento de solicitudes a través de la aplicación e indica por qué falló la transacción.If a transaction flows through multiple services and one of them fails, the correlation ID helps you track requests across your application and pinpoints why the transaction failed.

Utilizar el registro semántico (estructurado)Use semantic (structured) logging

Con los registros estructurados, es más fácil automatizar el consumo y el análisis de los datos de registro, lo que es especialmente importantes a escala de nube.With structured logs, it's easier to automate the consumption and analysis of the log data, which is especially important at cloud scale. Por lo general, se recomienda almacenar los datos de las métricas y diagnóstico de recursos de Azure en un área de trabajo de Log Analytics en lugar de una cuenta de almacenamiento.Generally, we recommend storing Azure resources metrics and diagnostics data in a Log Analytics workspace rather than in a storage account. De este modo, puede usar las consultas de Kusto para obtener los datos que desea rápidamente y en un formato estructurado.This way, you can use Kusto queries to obtain the data you want quickly and in a structured format. También puede usar las API de Azure Monitor y las API de Azure Log Analytics.You can also use Azure Monitor APIs and Azure Log Analytics APIs.

Usar llamadas asincrónicasUse asynchronous logging

Las operaciones de registro sincrónico bloqueen a veces el código de aplicación, la causa de las solicitudes de copia de seguridad como los registros se escriben.Synchronous logging operations sometimes block your application code, causing requests to back up as logs are written. Usar llamadas asincrónicas para conservar la disponibilidad durante el registro de la aplicación.Use asynchronous logging to preserve availability during application logging.

Registro de aplicación independiente de la auditoríaSeparate application logging from auditing

Los registros de auditoría se mantienen normalmente para los requisitos normativos o de cumplimiento y deben completas.Audit records are commonly maintained for compliance or regulatory requirements and must be complete. Para evitar transacciones quitadas, mantener los registros de auditoría por separado de los registros de diagnóstico.To avoid dropped transactions, maintain audit logs separately from diagnostic logs.

Estadísticas de llamadas remotasRemote call statistics

Seguimiento e informe remoto llame a las estadísticas en tiempo real y proporcionan una manera fácil de leer esta información, por lo que el equipo de operaciones tiene una visión instantánea del estado de la aplicación.Track and report remote call statistics in real time and provide an easy way to review this information, so the operations team has an instantaneous view into the health of your application. Resuma las métricas de la llamada remota, como la latencia, rendimiento y errores en los percentiles 99 y 95.Summarize remote call metrics, such as latency, throughput, and errors in the 99 and 95 percentiles.

Excepciones transitorias y reintentosTransient exceptions and retries

Seguimiento del número de excepciones transitorias y vuelve a intentarlo con el tiempo para revelar problemas o errores en la lógica de reintento de la aplicación.Track the number of transient exceptions and retries over time to uncover issues or failures in your application's retry logic. Puede indicar una tendencia creciente de excepciones con el tiempo que el servicio tiene un problema y puede producir un error.A trend of increasing exceptions over time may indicate that the service is having an issue and may fail. Para más información, consulte Vuelva a intentar la orientación específica del servicio.For more information, see Retry service specific guidance.

Sistema de advertencia prematuraEarly warning system

Supervise la aplicación en busca de indicios de advertencia que pueden requerir una intervención proactiva.Monitor your application for warning signs that might require proactive intervention. Las herramientas que evaluación el estado general de la aplicación y sus dependencias le ayudan a reconocer rápidamente cuando un sistema o sus componentes dejan repentinamente de estar disponible.Tools that assess the overall health of the application and its dependencies help you to recognize quickly when a system or its components suddenly become unavailable. Puede usarlos para implementar un sistema de advertencia temprana.Use them to implement an early warning system.

  1. Identifique los indicadores clave de rendimiento de mantenimiento de la aplicación, como las excepciones transitorias y la latencia de la llamada remota.Identify the key performance indicators of your application's health, such as transient exceptions and remote call latency.
  2. Establecer umbrales a niveles que identifiquen los problemas antes de que se conviertan en críticos y requieran una respuesta de recuperación.Set thresholds at levels that identify issues before they become critical and require a recovery response.
  3. Envíe una alerta a las operaciones cuando se alcanza el valor de umbral.Send an alert to operations when the threshold value is reached.

Considere la posibilidad de Microsoft System Center 2016 o herramientas de terceros para proporcionar funcionalidades de supervisión.Consider Microsoft System Center 2016 or third-party tools to provide monitoring capabilities. La mayoría de las soluciones de supervisión principales hacen un seguimiento de los contadores de rendimiento clave y de la disponibilidad del servicio.Most monitoring solutions track key performance counters and service availability. Estado de los recursos de Azure proporciona comprobaciones de estado, que pueden ayudar a diagnosticar la limitación de los servicios de Azure de algún estado integrada.Azure resource health provides some built-in health status checks, which can help diagnose throttling of Azure services.

Limitaciones de la suscripción y serviciosSubscription and service limitations

Las suscripciones de Azure tienen límites en determinados tipos de recursos, como el número de grupos de recursos, núcleos y las cuentas de almacenamiento.Azure subscriptions have limits on certain resource types, such as number of resource groups, cores, and storage accounts. Para asegurarse de que la aplicación no se ejecuta con límites de suscripción de Azure, crear alertas que sondear en busca de servicios acercando a sus límites y cuotas.To ensure that your application doesn't run up against Azure subscription limits, create alerts that poll for services nearing their limits and quotas.

Abordar los límites de suscripción siguientes con las alertas.Address the following subscription limits with alerts.

Servicios individualesIndividual services

Servicios de Azure individuales tienen límites de consumo de almacenamiento, el rendimiento, el número de conexiones, solicitudes por segundo y otras métricas.Individual Azure services have consumption limits on storage, throughput, number of connections, requests per second, and other metrics. La aplicación se producirá un error si intenta utilizar recursos más allá de estos límites, lo que resulta en tiempo de inactividad posible y limitación de servicio.Your application will fail if it attempts to use resources beyond these limits, resulting in service throttling and possible downtime.

Dependiendo del servicio específico y requisitos de su aplicación, a menudo puede mantenerse dentro de estos límites, escalar verticalmente (eligiendo otro plan de tarifa, por ejemplo) o escalado horizontal (agregar nuevas instancias).Depending on the specific service and your application requirements, you can often stay under these limits by scaling up (choosing another pricing tier, for example) or scaling out (adding new instances).

Objetivos de escalabilidad y rendimiento de almacenamiento de AzureAzure storage scalability and performance targets

Azure permite a un número máximo de cuentas de almacenamiento por suscripción.Azure allows a maximum number of storage accounts per subscription. Si la aplicación requiere más cuentas de almacenamiento que están actualmente disponibles en su suscripción, cree una nueva suscripción con cuentas de almacenamiento adicionales.If your application requires more storage accounts than are currently available in your subscription, create a new subscription with additional storage accounts. Para más información, consulte Límites, cuotas y restricciones de suscripción y servicios de Microsoft Azure.For more information, see Azure subscription and service limits, quotas, and constraints.

Si supera los objetivos de escalabilidad y rendimiento de almacenamiento de Azure, la aplicación experimentará una limitación de almacenamiento.If you exceed Azure storage scalability and performance targets, your application will experience storage throttling. Para más información, consulte Objetivos de escalabilidad y rendimiento de Azure Storage.For more information, see Azure Storage scalability and performance targets.

Objetivos de escalabilidad para discos de máquinas virtualesScalability targets for virtual machine disks

Una infraestructura como servicio (IaaS) VM de Azure permiten asociar un número de discos de datos, dependiendo de varios factores, incluidos el tamaño de máquina virtual y el tipo de cuenta de almacenamiento.An Azure infrastructure as a service (IaaS) VM supports attaching a number of data disks, depending on several factors, including the VM size and the type of storage account. Si la aplicación supera los objetivos de escalabilidad para los discos de máquinas virtuales, aprovisione cuentas de almacenamiento adicionales y cree allí los discos de máquinas virtuales.If your application exceeds the scalability targets for virtual machine disks, provision additional storage accounts and create the virtual machine disks there. Para obtener más información, consulte objetivos de escalabilidad y rendimiento para discos de máquinas virtuales en Windows.For more information, see Scalability and performance targets for VM disks on Windows.

Tamaño de VMVM size

Si la CPU, memoria, disco y E/S de las máquinas virtuales real enfocar los límites de tamaño de la máquina virtual, la aplicación puede experimentar problemas de capacidad.If the actual CPU, memory, disk, and I/O of your VMs approach the limits of the VM size, your application may experience capacity issues. Para corregir los problemas, aumentar el tamaño de máquina virtual.To correct the issues, increase the VM size. Tamaños de máquina virtual se describen en tamaños de máquinas virtuales en Azure.VM sizes are described in Sizes for virtual machines in Azure.

Si la carga de trabajo fluctúa con el tiempo, considere la posibilidad de usar escalado de máquinas virtuales conjuntos para escalar automáticamente el número de instancias de máquina virtual.If your workload fluctuates over time, consider using virtual machine scale sets to automatically scale the number of VM instances. En caso contrario, deberá aumentar o reducir el número de máquinas virtuales manualmente.Otherwise, you need to manually increase or decrease the number of VMs. Para obtener más información, consulte el información general de conjuntos de escalado de máquinas virtuales.For more information, see the virtual machine scale sets overview.

Azure SQL DatabaseAzure SQL Database

Si el nivel de base de datos de SQL Azure no es adecuado para controlar los requisitos de unidad de transacción de base de datos (DTU) de la aplicación, se limitará el uso de datos.If your Azure SQL Database tier isn't adequate to handle your application's Database Transaction Unit (DTU) requirements, your data use will be throttled. Para obtener más información sobre cómo seleccionar el plan de servicio correcto, consulte modelos de compra de Azure SQL Database.For more information on selecting the correct service plan, see Azure SQL Database purchasing models.

Servicios de tercerosThird-party services

Si la aplicación tiene dependencias de servicios de terceros, identifique cómo pueden producir un error de estos servicios y lo que tendrá errores efecto en la aplicación.If your application has dependencies on third-party services, identify how these services can fail and what effect failures will have on your application.

Un servicio de terceros podría no incluir supervisión y diagnóstico.A third-party service might not include monitoring and diagnostics. Registrar las llamadas a estos servicios y correlacionarlos con estado y el registro de diagnóstico con un identificador único de la aplicación.Log calls to these services and correlate them with your application's health and diagnostic logging using a unique identifier. Para obtener más información sobre las prácticas probadas para la supervisión y diagnóstico, consulte Guía de supervisión y diagnóstico.For more information on proven practices for monitoring and diagnostics, see Monitoring and diagnostics guidance.

Pasos siguientesNext steps