Conheça um pouco mais sobre as capacidades de monitoramento de recursos computacionais oferecidas pelo Grafana, bem como o suporte a esta tecnologia oferecido pelo Microsoft Azure.


Grafana: uma visão geral e seu uso com o Azure

O Grafana é uma solução open source de grande popularidade em segmentos como SRE e DevOps, disponibilizando dashboards para a visualização e monitoramento dos mais variados tipos de recursos computacionais. A própria nuvem Microsoft não ficou alheia a este movimento, com serviços que integram o Azure contando com variados dashboards.

Mas o que motiva então o uso do Grafana com o Microsoft Azure, se já temos alternativas como o Azure Monitor, Log Analytics, queries baseadas em KQL (Kusto Query Language) ou, mesmo, serviços mais especializados como Application Insights e Container Insights?

Vale destacar que todos esses serviços na verdade funcionam como fontes de dados (Data Sources) para a exibição de informações úteis a partir de dashboards no Grafana.

Já o Grafana, por sua vez, estende as capacidades das soluções de monitoramento do Azure ao possibilitar uma visualização unificada de múltiplas fontes (podemos num mesmo dashboard ter informações até do Azure, ambientes on premise, AWS e Google Cloud combinadas!). Tais visualizações tomam por base consultas baseadas na linguagem Kusto (KQL), o que abre caminho para customizações e a criação de novos dashboards a partir do conhecimento que temos em queries deste tipo e nas soluções que compõem o Azure Monitor.

Essa integração com KQL foi inclusive o pilar para o surgimento de uma nova opção de serviço no Azure: o Azure Managed Grafana. Trata-se de uma alternativa gerenciada, voltada ao monitoramento e análise dos status de soluções em nuvem. Maiores informações sobre este serviço podem ser encontradas em:

Azure Managed Grafana | Microsoft Azure
Use Azure Managed Grafana to access a variety of data sources supported by Grafana Enterprise. Combine charts, logs, and alerts, and correlate info across multiple datasets.

Outro ponto que preocupa times da área de Segurança é quem poderá acessar ou não o Portal do Azure, devendo-se até mesmo coibir acessos a determinados recursos. Tudo isso levará à necessidade de configuração de permissões a usuários e grupos no Microsoft Entra ID, a fim de conceder os direitos adequados àqueles que acompanharão a operação dos mais variados recursos na nuvem.

Podemos dispensar o acesso direto ao Portal do Azure, concentrando as atividades de monitoramento a partir do Grafana (seja ou não através do serviço oferecido de maneira gerenciada pela Microsoft). Vale destacar que a segurança no acesso a esta experiência centralizada de monitoramento pode acontecer por meio da integração com o Microsoft Entra ID.

Nas próximas seções demonstrarei alguns exemplos de monitoramento de serviços do Azure a partir do Grafana, além de questões envolvendo a configuração desta solução no acesso a recursos que estão na nuvem Microsoft.


Dashboards gratuitos para monitoramento de recursos do Azure

O Grafana conta com um Marketplace de dashboards que podem ser utilizados gratuitamente no monitoramento de recursos, o que envolve serviços do Azure, de outras nuvens (AWS, Google Cloud...) e tecnologias cloud native (Kubernetes, Prometheus...). Para pesquisar por um dashboard acesse este link:

Clique nesta imagem para visualizar com uma melhor resolução

Vários dashboards já foram disponibilizados pelo time do Azure e também por profissionais independentes. Uma rápida consulta que informe o Azure Monitor como Data Source trará diversas alternativas (clique neste link para visualizar os resultados apresentados a seguir):

Clique nesta imagem para visualizar com uma melhor resolução

Criando um novo recurso do Grafana no Azure

Para criar um novo recurso gerenciado do Grafana em uma subscription do Azure podemos selecionar a opção Azure Managed Grafana no Marketplace:

Em Pricing Plan selecionar para testes a opção Essential (Preview):

Maiores detalhes sobre a precificação do Azure Managed Grafana podem ser encontrados em:

Pricing – Azure Managed Grafana | Microsoft Azure
View pricing for Azure Managed Grafana.

Avançando pelo wizard de criação do recurso chegaremos à seção Permissions. Será importante manter aqui as opções default marcadas:

  • Em System assigned managed identity o campo Status deverá estar marcado como On. E também o campo Add Role Assignment to this identity with 'Monitoring Reader' role on target subscription ficará marcado. Esses ajustes permitirão que a instância do Grafana tenha acesso de leitura a logs e métricas de serviços como Azure Monitor, Log Analytics e Application Insights;
  • Em Grafana administrator role o campo Include myself também estará selecionado, a fim de possibilitar que o usuário que está criando o recurso tenha acesso ao Grafana. Com o botão Add podemos também incluir outros usuários, previamente registrados no Microsoft Entra ID.

E, por fim, procederemos com a criação deste recurso:

Com o recurso já criado, podemos acessar o endpoint que foi habilitado para o Azure Managed Grafana:

Clique nesta imagem para visualizar com uma melhor resolução

A tentativa de acesso irá requerer o login com uma conta válida. Utilizei meu próprio usuário neste caso:

Concluído o processo de autenticação, chegaremos então ao painel inicial do Azure Managed Grafana:

Clique nesta imagem para visualizar com uma melhor resolução

Acessando a opção Dashboards no painel esquerdo:

Notaremos que alguns dashboards já foram previamente adicionados (durante a criação do recurso):

Clique nesta imagem para visualizar com uma melhor resolução

Expandindo os agrupamentos Azure Monitor e Microsoft Defender for Cloud aparecerão cada um desses dashboards:

Clique nesta imagem para visualizar com uma melhor resolução

Temos ainda a possibilidade de adicionar outros dashboards do Marketplace ou mesmo proceder com a criação de novos dashboards acionando o botão New:


Um exemplo de dashboard: Azure / Insights / Storage Accounts

Continuando a navegação pelo Azure Managed Grafana podemos selecionar o dashboard Azure / Insights / Storage Accounts:

Este dashboard trará estatísticas e diversos insights de uma Storage Account dentro de nossa subscription do Azure:

Clique nesta imagem para visualizar com uma melhor resolução

Posso me conectar a recursos do Azure em uma instância do Grafana fora da nuvem Microsoft?

A resposta a esta pergunta é SIM! Precisaremos de uma App Registration criada a partir do Microsoft Entra ID (do tenant vinculado à subscription do Azure, no caso) como meio de viabilizar tal conexão, com a consequente configuração de um Data Source na instância do Grafana utilizando este elemento (App Registration).

Detalhes sobre a integração do Azure com o Grafana (incluindo a criação do Data Source) podem ser encontrados neste link da documentação oficial:

https://grafana.com/docs/grafana/latest/datasources/azure-monitor/

Alguns cuidados com as configurações no Microsoft Azure (procurei demonstrar no exemplo desta seção como conectar o Grafana a uma instância do Azure API Management – APIM):

1. Configurar na seção Authentication da App Registration para que sejam emitidos Access Tokens e ID Tokens:

Clique nesta imagem para visualizar com uma melhor resolução

2. Permissões a serem definidas em API Permissions da App Registration (sempre como Delegated):

Clique nesta imagem para visualizar com uma melhor resolução

3. No Resource Group em que se encontram o APIM, o Application Insights e o Log Analytics conceder as permissões Reader e Monitoring Reader para a App Registration:

Clique nesta imagem para visualizar com uma melhor resolução

Esses ajustes tornaram possível que o Grafana executando em um container na minha máquina (fora da nuvem, portanto) acessassem uma instância do Azure API Management. O diagrama a seguir traz uma visão geral do que fiz nesta prova de conceito, com o Grafana acessando métricas e logs do APIM a partir dos recursos do Application Insights e do Log Analytics vinculados ao mesmo:

O dashboard utilizado foi disponibilizado pelo próprio time do Azure e está disponível no seguinte link:

Azure / API Management | Grafana Labs

Alguns resultados ao acessar este dashboard:

Clique nesta imagem para visualizar com uma melhor resolução

Este mesmo dashboard foi apresentado em uma live recente do canal AzureBrasil Cloud no YouTube (clique neste link para acessar o vídeo):

Para a criação da instância (container) do Grafana executei o comando:

docker run -d -p 3000:3000 --name=grafana grafana/grafana-enterprise

Todo o conteúdo apresentado nesta seção foi disponibilizado anteriormente como um guia gratuito, em um repositório que criei no GitHub:

GitHub - renatogroffe/AzureAzureAPIM-Grafana-Integration: Instruções sobre configurações para tornar possível o monitoramento de um recurso do Azure API Managament a partir de uma instância do Grafana fora da nuvem Microsoft.
Instruções sobre configurações para tornar possível o monitoramento de um recurso do Azure API Managament a partir de uma instância do Grafana fora da nuvem Microsoft. - renatogroffe/AzureAzureAPIM…

Conclusão

A capacidade de conexão a múltiplas fontes de dados, aliada à possibilidade de criação e customização de dashboards gerando sofisticadas análises, são excelentes motivos para a adoção do Grafana em variados cenários de monitoramento. Procurei mostrar neste primeiro artigo que o próprio Azure não ficou alheio a tais fatos, contando com inúmeros dashboards, um serviço gerenciado que simplifica o uso do Grafana e até mesmo a possibilidade de que instâncias desta solução que não se encontrem na nuvem Microsoft se conectem à mesma (trazendo assim uma grande flexibilidade).

Finalizo este primeiro artigo agradecendo ao amigo Rafael dos Santos pelo convite para eu participasse com artigos aqui no blog da AzureBrasil.cloud. Devo retomar esse assunto (uso do Grafana no Azure) muito em breve, através de novas postagens neste espaço. Deixo também um muitíssimo obrigado ao amigo Daniel Dias Assumpção por todo aprendizado proporcionado sobre Grafana ao longo dos últimos meses.

💡
Podemos te ajudar com uma revisão 100% gratuita do seu ambiente cloud.
Share this post