En el mundo actual, las métricas desempeñan un papel clave para ayudarnos a comprender el rendimiento de nuestras aplicaciones, servicios y la infraestructura en la que se ejecutan. Pueden ayudarnos a detectar, investigar y diagnosticar problemas incluso antes de que surjan. Azure Monitor permite supervisar el comportamiento de nuestros recursos disponibles. Sin embargo, muchos de nosotros necesitamos recopilar métricas adicionales.
Con Azure Monitor no solo podemos monitorizar las métricas que llegan procedentes de los diferentes recursos administrados. También es posible enviar nuestras propias métricas a medida desde nuestras aplicaciones a Azure Monitor usando su REST API.
Para verlo más claro en este artículo vamos a dibujar un sencillo ejemplo. Una vez que las métricas están ya en Azure Monitor, podemos hacer todas las cosas con ellas que solemos hacer con las métricas estándar. Como por ejemplo, la creación de gráficos, alertas y el enrutamiento a otras herramientas externas.
En los siguientes enlaces encontrarás muy buena y detallada información en relación a las Custom Metrics y cómo podemos interactuar con Azure Monitor mediante su API Rest:
También para este ejemplo necesitamos crear un nuevo recurso. Por ejemplo, yo he creado una nueva instancia de WordPress, que será más que suficiente para nuestro propósito:
En este ejemplo, crearemos y registramos una aplicación con Azure AD y crearemos un servicio:
Necesitaremos tomar nota de los valores de ID de aplicación y de inquilino (tenant) para iniciar sesión. Una vez hecho esto, en la hoja de registros de la aplicación de Azure, seleccionaremos nuestra aplicación y tomaremos nota de los valores que aparecen a continuación. Posteriormente, necesitamos los datos relacionados con la identificación del inquilino y la identificación del cliente.
En la misma sección, nos desplazamos hacia abajo hasta la sección Manage, hacemos clic en Certificates & secrets y hacemos clic en "New Client Secret" de la siguiente manera.
Hay que tener en cuenta que una vez que se genera la clave secreta del cliente, debemos tomar nota del valor y la Secret ID de inmediato. La razón de esto es porque solo tenemos esa oportunidad de tomar nota de estos valores.
El siguiente paso consiste en asignar un rol a nuestra aplicación. Esto es importante porque de este modo asignaremos los permisos necesarios.
Una vez aquí, haremos de nuevo scroll down y en la sección Overview haremos click en Access control (IAM), y click en Add role assignment.
Una vez salvemos los cambios ya podemos continuar con los siguientes pasos.
Ahora necesitamos obtener el token de autorización. Una forma para obtenerlo es abrir el Azure cloud shell y abrir una sesión en bash.
Tomando el siguiente comando como ejemplo generamos un ID de token de autorización para permitir la comunicación en nuestra aplicación con Azure.
curl -X POST https://login.microsoftonline.com/<yourtenantid>/oauth2/token -F "grant_type=client_credentials" -F "client_id=<insert clientId from earlier step>" -F "client_secret=<insert client secret from earlier step>" -F "resource=https://monitoring.azure.com/"
Por ejemplo, de los pasos anteriores ya disponemos de los siguientes datos:
curl -X POST https://login.microsoftonline.com/5cf0dbcf-c2cd-463d-9346-xxxxxxxxxxxxxx/oauth2/token -F "grant_type=client_credentials" -F "client_id=fb31425b-10e7-xxxx-xxxxxxxxxxxxxxxxxxx" -F "client_secret=J43mY0FUXu5Tb_96q~zB_Hcz9.iR-.d3Bb" -F "resource=https://monitoring.azure.com/"
Ahora que lo tenemos todo listo, el siguiente paso pasa por poner todas las piezas en su lugar y verificar que todo funciona. Para ello, copia el siguiente código Json en tu bloc de notas y editamos la marca de tiempo “time” y lo guardaremos como custommetric.json
{
"time": "2021-06-04T10:12:20",
"data": {
"baseData": {
"metric": "QueueDepth",
"namespace": "QueueProcessing",
"dimNames": [
"QueueName",
"MessageType"
],
"series": [
{
"dimValues": [
"ImagesToProcess",
"JPEG"
],
"min": 3,
"max": 20,
"sum": 28,
"count": 3
}
]
}
}
}
Desde la Shell, subiremos el fichero. Podemos editarlo más tarde usando el editor pico o resubiendo el json de nuevo con los cambios que hubiéramos hecho.
En la ventana del símbolo del sistema, publique los datos de la métrica:
Emitiremos nuestra la métrica customizada siguiendo el ejemplo a continuación:
curl -X POST https://<azureRegion>.monitoring.azure.com/<resourceId>/metrics -H "Content-Type: application/json" -H "Authorization: Bearer <AccessToken>" -d @custommetric.json
Completamos los campos requeridos antes de ejecutar el comando en bash. En este ejemplo:
azureRegion. westeurope
resourceID. 92c88879-6a81-4196-a088-1f369fa0ffbf/resourceGroups/webapptest/providers/Microsoft.Web/serverfarms/wordpressapp986
curl -X POST https://westeurope.monitoring.azure.com/subscriptions/92c88879-6a81-4196-a088-1f369fa0ffbf/resourceGroups/webapptest/providers/Microsoft.Web/serverfarms/wordpressapp986/metrics -H "Content-Type: application/json" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyIsImtpZCI6Im5PbzNaRHJPRFhFSzFqS1doWHNsSFJfS1hFZyJ9.eyJhdWQiOiJodHRwczovL21vbml0b3JpbmcuYXp1cmUuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzVjZjBkYmNmLWMyY2QtNDYzZC05MzQ2LWQ3NWNhNDY3NzZjNy8iLCJpYXQiOjE2MjI4MTM0MzksIm5iZiI6MTYyMjgxMzQzOSwiZXhwIjoxNjIyODE3MzM5LCJhaW8iOiJFMlpnWUpoVGJaM0ZyL09wZk1LQzVHL0haancyQndBPSIsImFwcGlkIjoiZmIzMTQyNWItMTBlNy00OWI3LTlhODktODQxZGZhMThkNzk2IiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNWNmMGRiY2YtYzJjZC00NjNkLTkzNDYtZDc1Y2E0Njc3NmM3LyIsIm9pZCI6ImI3ZjcyOGJmLWQyMjAtNDI4MS1iZWZhLTA5MWJhM2U5NjQ0NyIsInJoIjoiMC5BWUlBejl2d1hNM0NQVWFUUnRkY3BHZDJ4MXRDTWZ2bkVMZEptb21FSGZvWTE1YUNBQUEuIiwic3ViIjoiYjdmNzI4YmYtZDIyMC00MjgxLWJlZmEtMDkxYmEzZTk2NDQ3IiwidGlkIjoiNWNmMGRiY2YtYzJjZC00NjNkLTkzNDYtZDc1Y2E0Njc3NmM3IiwidXRpIjoia1BYQUE5NFJCa2F3UFpDeXpjWDVBZyIsInZlciI6IjEuMCJ9.kOWOgL2-YPeBfAshM743wkNmKHE7OJifFXlkn1_kMrlDQWK5OfAh0cpOqGmxnCf42WgWFZ5XiowOPPruXQ3_4iYvEH3OiRLDNvuPfXcAD6-hVL9cu-48Oe1grxqOAdR_OK967aqBtpYjXEXWiP8B2BdJkE5l-emNswdPKaQSt9W8TTqrLsLXpoX-C3A0yGzU80CiFC7DVcEtLb11njYWVPpLktJi40U5nfC86AjUA5zyhF3C34ONHWM3V4UkSXK-1w7WuCYQ3MEDmPezAva1DYo2MBjTEDuEreOXj6cIv2_ZSdZ5VJHKtzyFVv-fvJLPKJki9R-D3YazAFKkGk4iAQ" -d @custommetric.json
Ahora cambiamos la marca de tiempo y los valores en el archivo JSON. Repetiremos los dos pasos anteriores unas cuantas veces, de modo que tengamos datos durante varios minutos.
Si todo ha ido bien, ahora toca el momento de verificar que las métricas han sido correctamente introducidas y añadidas a Azure Monitoring.
Si recibimos un mensaje de error en alguna parte del proceso, debemos considerar los siguientes puntos: