Photo par NASA

Ajoutez Azure Managed Grafana pour monitorer votre Azure Container Apps avec Terraform

Monitor your environments

Créé par Damien Aicheh le 11/05/2023 · 6 mins

Dans ce tutoriel, vous allez déployer Azure Managed Grafana pour monitorer vos Azure Container Apps définies dans le tutoriel précédent. Le code source est disponible dans ce répertoire Github.

Ce tutoriel fait partie d’une série complète de tutoriel sur l’utilisation d’Azure Container Apps avec Terraform.

Configurez votre souscription Azure

Avant de pouvoir déployer Azure Managed Grafana, vous devez configurer votre souscription Azure pour l’utiliser. Pour ce faire, vous devez enregistrer le provider de ressources Microsoft.Dashboard.

Pour enregistrer le provider de ressources Microsoft.Dashboard, vous pouvez utiliser l’Azure CLI:

# Register
az provider register --namespace 'Microsoft.Dashboard'
# Check the registration status
az provider show -n Microsoft.Dashboard

Déployer Azure Managed Grafana

Le déploiement d’Azure Managed Grafana est assez simple. Il vous suffit d’ajouter la ressource suivante à votre définition Terraform :

resource "azurerm_dashboard_grafana" "this" {
  name                              = format("amg-%s", local.resource_suffix_kebabcase)
  resource_group_name               = azurerm_resource_group.this.name
  location                          = azurerm_resource_group.this.location
  api_key_enabled                   = false
  deterministic_outbound_ip_enabled = false
  public_network_access_enabled     = true

  identity {
    type = "SystemAssigned"
  }

  tags = local.tags
}

Configurer Azure Managed Grafana

Pour pouvoir accéder à l’instance Azure Managed Grafana, vous devez gérer les identités. En effet, vous devez donner le rôle Grafana Viewer, Grafana Editor et Monitoring Reader à l’instance Azure Managed Grafana.

Pour ce faire, créez un nouveau fichier appelé roles.tf et ajoutez :

resource "azurerm_role_assignment" "grafana_viewer" {
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Grafana Viewer"
  principal_id         =  azurerm_dashboard_grafana.this.identity[0].principal_id
}

resource "azurerm_role_assignment" "grafana_editor" {
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Grafana Editor"
  principal_id         =  azurerm_dashboard_grafana.this.identity[0].principal_id
}

resource "azurerm_role_assignment" "monitor_reader" {
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Monitoring Reader"
  principal_id         =  azurerm_dashboard_grafana.this.identity[0].principal_id
}

Et pour chaque utilisateur auquel vous souhaitez accorder l’accès et la possibilité de configurer Azure Managed Grafana, vous devez également attribuer les rôles Grafana Viewer, Grafana Editor et Monitoring Reader.

Dans votre fichier locals.tf, déclarez une liste d’identités d’utilisateur :

users_identities = ["USE-YOUR-OWN-IDENTITY-HERE"]

Revenez ensuite au fichier roles.tf et ajoutez la ressource suivante :

resource "azurerm_role_assignment" "users_grafana_viewer" {
  for_each             = toset(local.users_identities)
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Grafana Viewer"
  principal_id         = each.key
}

resource "azurerm_role_assignment" "users_grafana_editor" {
  for_each             = toset(local.users_identities)
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Grafana Editor"
  principal_id         = each.key
}

resource "azurerm_role_assignment" "users_monitor_reader" {
  for_each             = toset(local.users_identities)
  scope                = azurerm_resource_group.this.id
  role_definition_name = "Monitoring Reader"
  principal_id         = each.key
}

Lancer Terraform

Il est maintenant temps de déployer Azure Managed Grafana. Exécutez simplement la commande Terraform plan et appliquez-la :

terraform plan --out=plan.out

Puis:

terraform apply plan.out

Accéder et configurer Azure Managed Grafana

Accédez au portail Azure puis à l’instance Azure Managed Grafana avec l’un des utilisateurs auxquels vous avez donné accès. Ensuite, configurez-le en ajoutant ces deux tableaux de bord :

Pour ce faire, dans le panneau de gauche, cliquez sur Dashboard, puis sur import. Copiez-collez l’URL et cliquez sur Load. Sélectionnez ensuite Azure Monitor et cliquez sur Import.

Import dashboard

Répéter l’opération pour le deuxième tableau de bord.

Maintenant, si vous accédez au premier tableau de bord, vous verrez la liste de vos container apps : Dashboard 1

Et si vous cliquez sur l’un d’entre eux, vous serez redirigé vers le deuxième tableau de bord pour voir les détails de votre container App : Dashboard 2

Touche finale

L’instance Azure Managed Grafana est déployée et configurée. Vous pouvez maintenant commencer à monitorer votre Azure Container Apps. Vous trouverez le code source complet dans ce répertoire Github.

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !