
Salve rapa!
No post de hoje, vou mostrar como integrar o Azure Monitor ao Grafana, uma das ferramentas mais importantes no campo da observabilidade.
Então bora lá…
Observação: durante o tutorial, algumas partes das imagens serão borradas por questões de segurança.
1° Etapa – Configurar App registration no Microsoft Entra ID
O App Registration no Microsoft Entra ID é utilizado para permitir que aplicações, como o Grafana, acessem de forma segura os recursos e serviços do Azure. Através dele, geramos uma identidade única com permissões específicas, que autoriza o Grafana a consultar métricas e logs do Azure Monitor.
Após fazer login no portal do Azure, acesse o Microsoft Entra ID.

Acesse Registro de Aplicativos e crie um novo aplicativo.


Crie um nome que facilite a identificação da finalidade do aplicativo.
Defina se o aplicativo será usado apenas para o tenant atual ou será multi-tenant. Neste caso, vou criar apenas para o tenant atual.

Após concluir o registro do aplicativo, acesse-o e, na seção Overview, anote as informações do ID do Aplicativo (Cliente) e ID do Diretório, pois elas serão necessárias para concluir a integração com o Grafana.

Agora, vamos criar uma secret.
A secret criada dentro do App Registration no Microsoft Entra ID atua como uma credencial, permitindo a autenticação segura entre o Grafana e o Azure. Ela funcionará como uma ‘senha’ para o aplicativo.
Acesse Certificados e Segredos e clique em Novo segredo do Cliente.

Nomeie a secret e defina seu período de validade.

Agora, anote o valor da secret, que também será utilizado na integração. É importante destacar que o valor da secret só pode ser visualizado no momento de sua criação e não poderá ser consultado novamente após sair da tela.

2° Etapa – Liberar Permissão no Recurso
Agora, vamos conceder as permissões ao aplicativo criado para o recurso ao qual nosso Grafana precisa ter acesso. Neste exemplo, vou liberar as permissões para toda a minha assinatura.
Acesse o recurso escolhido e vá em IAM (Controle de Acesso).

Clique em Adicionar e selecione a opção Atribuição de Função.

Na aba Função, selecione as permissões que o aplicativo precisará para executar sua função. Neste exemplo, a função Leitor será suficiente, pois o Grafana apenas precisará ler os dados para criar os dashboards.

Na aba Membros, procure pelo nome que você atribuiu ao aplicativo.
Após selecionar o aplicativo, avance para a última etapa e conclua a atribuição.


Com essa etapa concluída, seu aplicativo agora tem permissão de leitura em toda a assinatura.
3° Etapa – Configurar Data Source do Azure no Grafana
Agora, vamos para a última etapa, que é configurar o Data Source do Azure Monitor no Grafana para usá-lo como fonte dos painéis.
Após fazer login no Grafana, vá em Connections > Data Source.

Clique em Add new data source.

Pesquise por ‘Azure’ e selecione a opção Azure Monitor.

Agora, configure o Data Source da seguinte forma:
- Name: Nome do Data Source que será utilizado.
- Directory (tenant) ID: ID do Diretório coletado na 1ª etapa.
- Application (client) ID: ID do Aplicativo coletado na 1ª etapa.
- Client Secret: O valor da Secret gerada e coletada na 1ª etapa.
Clique em Load Subscription para carregar sua assinatura. Se a assinatura não aparecer, isso pode indicar dois possíveis problemas:
- As informações fornecidas estão incorretas.
- O aplicativo criado não tem as permissões necessárias.
Se a assinatura aparecer, clique em Salvar e Testar.

Se tudo estiver correto, uma mensagem de sucesso será exibida, e você estará pronto para criar dashboards utilizando o Data Source do Azure Monitor.
Observação: Em alguns casos, o teste pode retornar um erro indicando que não foi encontrado nenhum Log Analytics. Isso não significa, necessariamente, que a conexão está incorreta, mas apenas que o Data Source não encontrou logs na assinatura para usar como fonte de dados. Outros itens que não dependem disso ainda podem ser monitorados normalmente.

Otimo artigo @vitor