Diagramas de processos, fluxos e mapas no Grafana com Flowcharting

É comum em processo de construção de visualização de monitoramento, precisarmos incorporar, apresentar ou entregar um Diagrama de Processos ou Fluxogramas, outros pensam um pouco além, pedem para anima-los com as métricas do monitoramento.

Grafana entrega tudo que precisa quando falamos em apresentação de métricas de monitoramento e quando utilizamos o plug-in Flowcharting, permite a construção de dashboards incríveis e funcionais. O plug-in possibilita criar qualquer desenho utilizando o diagrams.net ou draw.io e em seguida incorporar em um dashboard recebendo dados proveniente de vários datasources (Atualmente o datasource do Zabbix é compatível).

Desta forma é possível construir dashboard com status real de processos de negocio, navegações e performance de APIs, navegação em Dashboards, Layout de infra (infraestrutura, Racks, disposição de APs, layout de switchs e etc) e, em seguida, mapear o textos, cores e thresholds do desenho para métricas reais vindo do datasource.

1) Pré-requisitos:

  • Instancia do Grafana já instalado (Docker, Linux, Windows, Grafana cloud-grafana.net);
  • Plugin do Zabbix-Grafana já instalado com datasource configurado;
  • Draw.io (pode ser instalado local ou utilizando a versão online).

2) Criando imagem no draw.io (diagrams.net):

Se chegou até, acredito que já tenha um breve conhecimento (ou já ouviu falar) sobre o draw.io. Nele podemos criar diagramas, imagens, fluxos e entre outros, conforme a sua necessidade. Voltando para o lado do Grafana, qualquer diagrama criado no draw.io poderá ser utilizado, desde que seja exportado e o xml/json ou criado a partir do plugin do Grafana.

Não irei mostrar como usar ou criar diagramas no draw.io, este não é a intenção deste artigo, mas no youtube é possível encontrar muito conteúdo mostrando com trabalhar com a ferramenta.

draw.io – YouTube

Deixarei disponível aqui um link de um utilizado neste post. Basta clicar no lápis e quando abrir e depois criar uma copia e importa na sua visualização.

Exemplo: Arquitetura Aplicação Ecommerce.

3) Instando plugin no Grafana

Será necessário realizar a instalação do plugin FlowCharting no ambiente que está utilizando atualmente.

Se estiver instalado em um windows ou linux, utilize o grafana-cli para realizar a instalação do plugin.

grafana-cli plugins install agenty-flowcharting-panel

Após a instalação do plugin será necessário reiniciar o serviço do grafana.

Linux:

# Depende do S.O utilizado, poderá ser.
service grafana-server restart
# ou
systemctl restart grafana-server
# ou
/etc/init.d/grafana-server restart

Windows:

Abra o gerenciamento de Serviços do Windows.
Clica com o botão direito no serviço do Grafana.
No menu contexto, clica em Restart.

Se quiser testar em de docker, basta incluir variável com a opção “GF_INSTALL_PLUGINS”, se desejar incluir mais de um plugin, separe por virgula.

docker run -d \\
  -p 3000:3000 \\
  --name=grafana \\
  -e "GF_INSTALL_PLUGINS=agenty-flowcharting-panel,alexanderzobnin-zabbix-app" \\
  grafana/grafana

Se for uma instalação do zero, pode acessar utilizando um Navegador http://localhost:3000 ou http://IP:3000, depois que visualizar o home do Grafana, basta se autenticar utilizando usuário admin e senha admin, será solicitado a troca da senha, basta definir uma nova.

Validando Coletas e Datasource.

Comece criando um dashboard, com uma query simples e depois valide se as coletas estão funcionando normalmente. Neste momento não se preocupe em utilizar um item real, pode ser um item de disponibilidade apenas para teste.

Clica em no botão para Add New Panel

Próximo passo, já do lado esquerdo clica na Tab chamada Query e cria uma nova Query com o datasource do Zabbix. Ele chamará query A, se criar para novos itens, chamará B, C, D e etc..

Agora define um Alias para identificar essa consulta, isso será utilizado mais pra frente, que definirá qual query será utilizada em qual imagem do Diagrama.

Utilizei a função SetAlias com a macro “$__zbx_host”, assim ele irá definir o hostname do host como alias, funcionará bem neste caso que estamos utilizando apenas a métrica de disponibilidade do agente. Quando utilizamos métricas diferentes, é necessário mudar a estratégica.

Você pode utilizar variáveis no dashboard para pegar o grupo ($group) do zabbix e todos os hosts ($host) daquele grupo, no host deixei a macro com a seleção de “Alll”.

Agora modifica para o tipo de Painel Gráfico e valida se possui coleta e histórico.

Pronto temos já nosso gráfico com as métricas e pronto para as modificações com o FlowCharting.

Obs: Em options, habilite a opção “Disable data alignment” e altere o time do dashboard para “last 3 hours” (Isso por conta de um bug do plugin do flowcharting onde o “Apply to metrics” fica em branco).

Salve o dashboard.

5) Alterando para visualização do plugin do FlowCharting:

Com o nosso exemplo do draw.io aberto, clique em editar e será redirecionado para a pagina onde será possível editar o desenho.

Exemplo: Arquitetura Aplicação Ecommerce.

Para exportar o diagrama, clique em Extra > Edit Diagram.

Seleciona todo o código e copie.

Volte ao Grafana (Importar).

Edite o painel de gráfico anteriormente criado, no lado direito, clica para alterar a visualização (Click to change Visualization – isso na para versões 8.x+), depois em Visualização e pesquise por FlowCharting.

No menu lateral direito ainda, expanda a Flowchart, logo abaixo da opção da sessão de Visualização. Em Source Content, substitua todo o texto pelo código copiando anteriormente.

Obs: Dependendo do tamanho, poderá ter um delay, aparentando está travado, basta aguardar.

Caso deseja realizar alguma modificação no Diagrama, poderá utilizar o botão “Edit Draw”, irá abrir um popup e será possível alterar o diagrama a qualquer momento, depois basta salvar e retornar ao grafana. Lembrando que é necessário salvar o dashboard também.

Em Advanced – Display, temos as seguintes configurações:

  • Scale: Escala do diagrama em tela;
  • Center: Se ficará no centro do painel ou em outra posição;
  • Grid: Habilita o grid no painel, linhas para orientação;
  • Bg Color: Cor do backgroud.

Em Other options:

  • Lock: Quando desativado, é possível utilizar o crlt + scroll para dar zoom no diagrama;
  • Allow draw.io source: isso permitirá que o Grafana realize o download das imagens utilizadas;  (Deixe habilitado);
  • Enable animation: Permite animar o diagrama, isso será útil mais a frente, quando iremos animar alguns elementos;
  • Toolip: É possível habilitar um tipo de popup com o gráfico da métrica no elemento selecionado.

Neste ponto já será possível visualizar a imagem que construímos como exemplo.

Utilize o esc do teclado para voltar e salva o dashboard, utilizando o botão Save do lado direito superior.

6) Configurando Querys do Grafana com os objetos de imagem do diagrams.net:

Chegamos ao ponto que iremos começar a vincular as querys com os objetos do diagrama, para isso, utilize a opção chamada Mapping, dentro da configuração do painel, no lado direito.

Expanda a sessão chamado Mapping, depois irá mostrar uma Regra (rule) já criada, identificada como MyRule, expanda essa sessão e encontrará alguma opções que podemos configurar.

Em Options, temos as seguintes configurações:

  • Rule Name: defina um nome para identificação desta regra;
  • Apply to metrics: Informa qual Alias que esta regra pegará a informação, configuramos essa opção lá em cima, na parte 4, onde colocamos a opção SetAlias com o nome do host; (Se não aparecer o Alias que criamos anteriormente, volte na ultima observação do tópico 4)
  • Aggregation: qual o tipo de valor iremos pegar, current, trend, diff e etc;
  • Type: Como iremos tratar essa informação, temos o tipo de item (type), unidade (unit) e casas decimais (Decimals).

  • Color/Tooltip Mappings: Essa opção, iremos definir qual Objeto (ID) a métrica que estamos utilizando será
  • Thresholds: Define Thresholds conforme a métrica que está vinculando a Rule.
    • Thresholds (Buttons – Collor – Number): Podemos definir cores do Thresholds parecido com o já suportado pelo Grafana, nesse exemplo 0 para Down e 1 para UP, as cores ficaram vermelho para métrica 0 e Verde para 1;
    • Icon state: habilita um ícone mostrando que teve alteração conforme o Threshold configurado;
    • Tooltips: Habilita um pop com uma breve informação do status da métrica;
    • Graph Tooltips: Habilita um pop com um pequeno gráfico em cima do elemento selecionado.
  • Color/Tooltip Mappings: Seleciona um elemento no diagrama onde é possível mudar as cores conforme o Thresholds, ideal para representação visual de mudança de status.
    • Em Buttons, temos as opções What, When e How. Para selecionar um item que irá representar aquela métrica, basta clicar no item ao lado direito do ícone em formato de olho;
    • Depois clica no elemento do diagrama que deseja utilizar para aquela métrica. Verá que o campo What será preenchido com o ID do elemento que clicou. Obs: se passar o mouse em cima desta linha, um quadrado amarelo mostrará qual elemento ela está vinculada;
    • Podemos utilizar a mesma métrica para vários elementos do diagrama.
  • Label/Text Mappings: é possível colocar a métrica em cima do elemento selecionado.
  • Link Mappings: É possível incluir uma url no elemento, tanto para quando há uma mudança conforme o status Warning/Critical ou deixar sempre a url selecionável, este recurso é muito útil quando precisa realizar um drilldown para um outro dashboard com uma informação mais detalhada daquele elemento.
  • Event/Animation Mappings: É possível aplicar animações em elementos, em Actions há diversos tipos de animações que podem ser aplicados conforme sua necessidade, útil quando precisa chamar a atenção para um elemento de maneira rápida conforme a mudança no thresholds.

Ate neste ponto criamos uma regra para um ou dois elementos específicos, agora basta repetir o passo para os demais elementos. Um exemplo de mais regras criadas e vinculadas a mais elementos do diagrama.

Visualizando agora o Painel, teremos algo parecido com isso.

Desta forma, com poucas métricas, mas utilizando recursos chaves do Grafana, é possível criar ótimas visualizações com foco em entregar informações precisas para quem consome seu monitoramento. Nesse exemplo mostramos o status e o fluxo de disponibilidade de uma aplicação web e conforme as métricas do monitoramento podemos mostrar quais os recurso estão indisponíveis e o que pode ser impactado.

7) Observações:

  1. Dependendo do tamanho do seu diagrama no draw.io, pode ser um pouco lento o tempo para carregar o dashboard e aparecer as animações.
  2. Em rules, tem momentos que não é possível selecionar a métrica no campo “Apply to metrics”, basta salvar o dashboard e realizar um refresh no navegador (F5).