Azure Resource Graph: explora tus recursos a escala

Como llevo varios días hablándote de gobernanza y de cómo tener tus recursos bajo control, creo que también es importante que conozcas Azure Resource Graph, el servicio que te permite consultar tus recursos a escala, de varias suscripciones incluso, pudiendo hacer uso de filtrados complejos, agrupaciones y ordenaciones. De hecho, es el servicio que utiliza la barra de búsqueda del portal de Azure para localizar tus recursos.

La barra de búsqueda del portal de Azure utiliza Azure Resource Graph

¿Pero no teníamos ya Azure Resource Managener (ARM) para esto? Sí, pero en algunas ocasiones el tipo de consultas que podemos hacer con ARM se nos quedan ya cortas, ya que, por ejemplo, sólo admite consultas sobre campos básicos de los recursos (nombre del recurso, identificador, tipo, grupo de recursos, suscripción y ubicación). De hecho, con ARM necesitas llamar a cada uno de los proveedores por separado para poder obtener propiedades detalladas de los recursos. Gracias a que Azure Resource Graph cachea todo lo que ocurre en Microsoft Azure todo esto se simplifica, ya que puedes acceder a todo ello directamente, sin necesidad de realizar una llamada individual a cada uno de los proveedores. Hoy vamos a ver algunos ejemplos para tus scripts.

Cómo empezar

Existen varias formas de comenzar con Azure Resource Graph. La más sencilla es a través de Azure Resource Graph Explorer, apartado que puedes encontrar en All services en la sección MANAGEMENET + GOVERNANCE.

Azure Resource Graph Explorer

Desde aquí puedes lanzar todas tus consultas, sin necesidad de instalar nada.

Azure Resource Graph Explorer Preview

Otra opción es utilizar Azure CLI, ya sea desde local o desde un contenedor de usar y tirar, o incluso en Azure Cloud Shell. Si eliges esta opción, antes de poder ejecutar cualquier comando necesitas tener habilitada la extensión de Azure Resource Graph. Puedes añadirla utilizando este comando:

az extension add --name resource-graph

El resultado será parecido al siguiente (a día de hoy todavía está en preview).

Por último, ejecuta el comando az login para iniciar sesión con el usuario que tiene acceso a los recursos en Microsoft Azure.

Consultando nuestros recursos

El lenguaje para realizar las consultas es Kusto, el cual ya conocerás si has trabajado con Azure Data Explorer o Log Analytics. Aquí te dejo algunos ejemplos de consultas, para que te hagas una idea de qué información puedes obtener, de una forma súper clara.

Número de recursos desplegados:

az graph query -q "summarize count()"

Número de máquinas virtuales por ubicación:

az graph query -q "where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by location"

Número de máquinas virtuales por sistema operativo:

az graph query -q "where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"

Recuperar todos los tags:

az graph query -q "project tags | summarize buildschema(tags)"

Recuperar recursos por tag:

az graph query -q "where tags.owner=~'Gisela Torres' | project name, tags, kind"

Número de recursos por grupo de recursos:

az graph query -q "project resourceGroup | summarize count() by resourceGroup"

Para comenzar, te recomiendo utilizar el explorador dentro del portal de Azure, ya que gracias al él puedes visualizar los tipos de recursos, así como sus propiedades. Además, en la propia documentación tienes algunos ejemplo de consultas más sencillas y más avanzadas.

¡Saludos!