Carlos Aguni

Highly motivated self-taught IT analyst. Always learning and ready to explore new skills. An eternal apprentice.


Mapa do Brasil no Grafana

15 Apr 2020 » monitoring

Imagem de https://www.pexels.com/photo/brazil-geography-globe-journey-269851/

Atualmente com o avanço tecnológico e maior transparência do governo nos são proporcionados dados atualizados com cada vez mais frequência e por isso podemos criar dashboards reativos em tempo real.

Sendo assim, trago nesse post experimentos com vários plugins de mapa feitos no Grafana uma ferramenta opensource que possibilita a construção de dashboards muito utilizado para monitoramento de infraestrutura.

Exemplo de dashboard retirado de https://play.grafana.org/d/000000012/grafana-play-home?orgId=1

Dito isso, nesse post irei explorar os seguintes plugins:

  • WorldMap
  • SVG Panel
  • FlowCharting

Vamos começar.

WorldMap Plugin

https://grafana.com/grafana/plugins/grafana-worldmap-panel/installation

Retirado de https://grafana.com/grafana/plugins/grafana-worldmap-panel

WorldMap Plugin é um tipo de mapa que já carrega o Mapa Mundi e os locais são configurados à partir de coordenadas latitude e longitude.

Em 1 centralizamos o Brasil no centro do mapa e em 2 precisamos oferecer ao painel quais os locais em [latitude, longitude] cada métrica estamos nos referindo.

O arquivo em 2 pode ser encontrado aqui oferecido pelo Isaque Profeta.

Em seguida é preciso correlacionar o campo “key” no arquivo.

e os pontos irão aparecer no mapa:

SVG Panel

SVG Panel é outra forma de se obter um mapa já que com SVG podemos desenhar qualquer forma geométrica. Mais informações sobre aqui.

A utilização desse painel é um pouco mais complexa pois envolve o conhecimento de SVG e javascript.

Para o SVG panel é preciso primeiro encontrar o mapa do Brasil em formato SVG. Para isso uma simples busca no google por “brasil svg” já nos traz o que precisamos. Por exemplo esse aqui.

A versão que estou utilizando pode ser encontrada aqui.

Em seguida podemos utilizar o seguinte código em javascript para configurar a transição de cores.

var s = Snap(svgnode);
const media = arr => arr.reduce((a,b) => a+b, 0)/arr.length
ctrl.series.forEach((item) => {
    let minha_media = media(item.datapoints.map((d) => d[0]))
    let color
    if (minha_media < 30) {
        color = '#ffe1e0'
    }else if (minha_media < 60){
        color = '#eb4d55'
    }else {
        color = '#d0021b'
    }
    s.select('path[state="'+item.alias+'"]').attr('style', 'fill: '+color)
})

Utilizando o código acima podemos definir cores de acordo com a média.

Sendo o formato da query o mesmo do WorldMap:

Dessa forma podemos obter algo do tipo:

FlowCharting

O projeto do flowcharting também está opensource no github aqui.

Flowcharting baseia seus diagramas no formato da ferramenta online Draw.io Image de https://www.youtube.com/watch?v=ZEXubfaUBco

Nele montamos o diagrama do layout desejado e exportamos em XML.

O arquivo utilizado acima pode ser encontrado aqui.

Para o mapa funcionar no flowcharting 3 passos são necessários:

  1. Adicionar o XML
  2. Mapear os itens do XML (adicionar um ID)
  3. Mapear os Alias obtidos pela Query aos IDs configurados em 2

Vamos aos passos.

Passo 1.

Copiando o conteúdo do XML na caixa ilustrada por 1 na imagem acima.

Passo 2.

Desça até encontrar “Graph inspect Id” e assimile os ids.

Passo 3.

Edite o “Mapping” das “rules” certifique-se de rastrear o Alias da query até o mapping e configuração das cores como mostra a imagem abaixo.

Faça isso para cada estado e no final terá algo do tipo.

Transições

Transições de cores a cada atualização também funciona.

Conclusão

As formas de configuracão de tecnologias dos 3 plugins são muito diferentes um do outro. Como sempre se um trouxer maior flexibilidade de customização será, também, mais complexo. A tabela abaixo categoriza os processos seguidos onde configuração descreve o trabalho de customização em configurar métricas, mudança de cores, etc.

Lembrando que o foco do flowcharting volta-se para diagramas de rede, componentes Cloud, plantas baixa de construções. Recomendo uma visita à página do projeto.

Link para o mapa: https://grafana.com/grafana/dashboards/12082.

Link para mapa2: https://grafana.com/grafana/dashboards/12092

Appendix:
Mapa Brasil v2
Mapa Brasil v2 + Painel

Obrigado!