Microsoft Azure
Juan José Díaz Antuña Lead of Cloud Solutions

Azure Advisor: buenas prácticas para implementaciones de Microsoft Azure

Microsoft Azure Advisor es un servicio gratuito que nos ayuda a seguir buenas prácticas y recomendaciones de optimización de nuestras implementaciones de Microsoft Azure, no solo de diseño o rendimiento, sino también de seguridad y costes. Concretamente, Advisor nos permite:

  • Recibir recomendaciones personalizadas y mejores prácticas que sean procesables y proactivas.
  • Encontrar formas de reducir los costes relacionados con las suscripciones al servicio de Azure.
  • Mejorar el rendimiento, la seguridad y la disponibilidad de los recursos utilizados.

Las recomendaciones de Azure Advisor se encuadran en las siguientes 5 categorías:

Coste

Muestra recomendaciones que nos permiten reducir los costes asociados a nuestros servicios. El conjunto de directivas que se aplican son:

  • Optimizar el gasto de la máquina virtual cambiando el tamaño o apagando las instancias infrautilizadas.
  • Reducir los costos al eliminar los circuitos ExpressRoute no aprovisionados.
  • Reducir los costos eliminando o reconfigurando las puertas de enlace de redes virtuales inactivas.
  • Comprar instancias de máquinas virtuales reservadas para ahorrar dinero en los costos de pago por uso.
  • Eliminar las direcciones IP públicas no asociadas para ahorrar dinero.
  • Eliminar las canalizaciones de Azure Data Factory que fallan.
  • Usar instantáneas estándar para discos administrados.
  • Utilizar la gestión del ciclo de vida.
  • Crear una recomendación de disco de SO efímero.

Como ejemplo: 

Azure Advisor considera el apagado de las máquinas virtuales cuando se cumplen todas estas condiciones:

  • El percentil 95 del valor máximo del uso de CPU es inferior al 3 %.
  • El uso de la red es inferior al 2 % en un período de siete días.
  • La presión de la memoria es menor que los valores del umbral.

Advisor tiene en cuenta el cambio de tamaño de las máquinas virtuales cuando es posible ajustar la carga actual en una SKU más pequeña (dentro de la misma familia de SKU) o en un número menor de instancias, de modo que:

  • La carga actual no supere el 80 % de uso para cargas de trabajo que no están dirigidas al usuario.
  • La carga no supere el 40 % para las cargas de trabajo orientadas al usuario.

De forma adicional a la recomendación tenemos el plan de acción. Cuando seleccionas Quickfix nos muestra un conjunto de recomendaciones que podemos ejecutar de forma rápida seleccionando el servicio y pulsando Quickfix.

 

Seguridad 

Muestra recomendaciones de seguridad al detectar amenazas y vulnerabilidades de seguridad en los servicios desplegados. Advisor conecta con Security Center para mostrar las recomendaciones de seguridad. Security Center proporciona las reglas bajo las que se rige Advisor para mostrar sus advertencias.

Podemos seleccionar una de las recomendaciones para ver detalles y pasos a seguir para remediar la posible incidencia o seguir la recomendación.

Uno de los puntos que me parecen más interesantes, es que nos muestra la Query de Azure Resource Graph y la directiva aplicada, con lo que podemos reutilizarlo para nuestro día a día.

 

Confiabilidad o alta disponibilidad 

Muestra recomendaciones para asegurar la alta disponibilidad de las aplicaciones de la organización.

Las recomendaciones, igual que en las anteriores dependen del servicio de Azure desplegado. Así, en el siguiente ejemplo nos presenta recomendaciones sobre nuestro almacenamiento.

Otro ejemplo en el que nos ayuda Advisor es cuando tenemos un servicio web en App Service. Advisor, en términos de disponibilidad, nos recomendará el poner un servicio de Traffic Manager para garantizar la disponibilidad del site entre 2 o más servicios de aplicaciones. Alguna de las reglas que se evalúan dentro de Advisor son:

  • Garantizar la tolerancia a fallos de la máquina virtual
  • Garantizar la disponibilidad, establecer la tolerancia a fallos
  • Usar Managed Disks para mejorar la confiabilidad de los datos
  • Problema conocido con la versión de imagen de Check Point Network Virtual Appliance
  • Garantizar la tolerancia a fallos de la puerta de enlace de aplicaciones
  • Proteger los datos de su máquina virtual de una eliminación accidental
  • Crear alertas de estado del servicio de Azure para recibir notificaciones cuando los problemas de Azure le afecten
  • Configurar los puntos finales de Traffic Manager para la resiliencia
  • Utilizar la eliminación temporal en su cuenta de Azure Storage para guardar y recuperar datos después de una sobreescritura o eliminación accidental
  • Configurar su puerta de enlace VPN en activoactivo para la resistencia de la conexión
  • Utilizar puertas de enlace VPN de producción para ejecutar sus cargas de trabajo de producción
  • Reparar reglas de alerta de registro no válidas
  • Configure el modo de indexación coherente en su colección de Cosmos DB
  • Configure sus contenedores de Azure Cosmos DB con una clave de partición
  • Actualice su SDK .NET de Azure Cosmos DB a la última versión de Nuget
  • Actualice su SDK de Java de Azure Cosmos DB a la última versión de Maven
  • Actualice su conector Spark de Azure Cosmos DB a la última versión de Maven
  • Habilitar la replicación de máquinas virtuales

 

Rendimiento 

Muestra alertas y recomendaciones de rendimiento de los servicios.  El rendimiento se reduce a algo más que CPU, memoria, IOPS o red. Necesitamos tener en cuenta todas las métricas y los elementos de configuración que podrían perjudicar la experiencia del usuario final.

Las comprobaciones de rendimiento se componen de las siguientes reglas:

  • Reducir el tiempo de vida de DNS en su perfil de Traffic Manager para conmutar por error a puntos finales en buen estado más rápido.
  • Mejorar el rendimiento de la base de datos con SQL DB Advisor.
  • Actualizar su Storage Client Library a la última versión para una mejor confiabilidad y rendimiento.
  • Mejorar el rendimiento y la confiabilidad de App Service.
  • Use Managed Disks para evitar la limitación de E / S del disco.
  • Mejorar el rendimiento y la confiabilidad de los discos de máquinas virtuales mediante el uso de Premium Storage
  • Eliminar el sesgo en tu SQL Data Warehouse para aumentar el rendimiento de las consultas.
  • Crear o actualizar estadísticas de tablas obsoletas en SQL Data Warehouse para aumentar el rendimiento de las consultas.
  • Escalar para optimizar la utilización de la caché en sus tablas de SQL Data Warehouse para aumentar el rendimiento de las consultas.
  • Convertir las tablas de SQL Data Warehouse en tablas replicadas para aumentar el rendimiento de las consultas
  • Migrar tu cuenta de almacenamiento a Azure Resource Manager para obtener todas las funciones más recientes de Azure.
  • Diseñar sus cuentas de almacenamiento para evitar alcanzar el límite máximo de suscripción
  • Aumentar el tamaño de su SKU de VNet Gateway para abordar el uso elevado de P2S
  • Aumentar el tamaño de su SKU de VNet Gateway para abordar la CPU alta
  • Aumentar el batch size al cargar para maximizar el rendimiento de la carga, la compresión de datos y el rendimiento de las consultas.
  • Coubique la cuenta de almacenamiento dentro de la misma región para minimizar la latencia durante la carga
  • Se detectó una versión de Kubernetes no compatible
  • Optimizar el rendimiento de sus servidores Azure MySQL, Azure PostgreSQL y Azure MariaDB
  • Corrija el consumo de la CPU de sus servidores Azure MySQL, Azure PostgreSQL y Azure MariaDB para evitar cuellos de botella de la CPU
  • Reduzca las limitaciones de memoria en sus servidores Azure MySQL, Azure PostgreSQL y Azure MariaDB o cambie a una SKU optimizada para memoria
  • Usar una réplica de lectura de Azure MySQL o Azure PostgreSQL para escalar las lecturas para cargas de trabajo de lectura intensiva
  • Escalar su servidor Azure MySQL, Azure PostgreSQL o Azure MariaDB a un SKU superior para evitar restricciones de conexión
  • Escalar su caché a un tamaño o SKU diferente para mejorar el rendimiento de la caché y las aplicaciones
  • Agregar regiones con tráfico a su cuenta de Azure Cosmos DB
  • Configurar su directiva de indexación de Azure Cosmos DB con rutas incluidas o excluidas del cliente
  • Configure el tamaño de la página de consulta de Azure Cosmos DB (MaxltemCount) en -1

 

Automatización 

Una de las principales capacidades que tiene Azure Advisor es la posibilidad de programar informes y crear alertas para notificar a aquellos usuarios claves responsables de la infra alojada en Azure.

Para ello dentro de Advisor podemos irnos a Recommendation Digest.

Desde aquí seleccionamos la suscripción, frecuencia, categoría de Advisor y grupo de acción para la notificación.

El Action Group es la parte interesante y es que, además, de poder hacer que envíe un informe por correo electrónico u otras múltiples formas como SMS, etc.

También puedes crear una acción como la integración con un ITSM, un Runbook, Logic App, etc., lo que nos permite llamar a acciones automáticas de remediación.

Recibirás correos como este, informándote del nuevo informe.

De la misma forma puedes crear una alerta, aunque en este caso está en modo Preview. Para ello, seleccionamos Alerts – Create Alert.

Y completamos el ámbito, condiciones, grupo de acción y nombre de regla.

Ahora solo te queda empezar a utilizar Advisor y hacerlo formar parte de ese modelo de responsabilidad compartido de las soluciones Cloud.