Descomplicando Zabbix + Grafana + BoomTable

bernardolankheet
Zabbix Brasil
Published in
11 min readJan 6, 2021

Por muito tempo procurava uma forma que pudesse montar uma tabela que pudesse entregar dados específicos de serviços em uma única tela e entregar de uma forma mais simples para comparar status e recursos.

Tinha que ficar configurando vários painéis diferentes e para comparar dados tabulares provenientes de diferentes fontes, era muito trabalhoso e de difícil visualização.

Então comecei a pesquisar uma forma que pudesse visualizar todos os itens que tinha necessidade na mesma dashboard, por exemplo, conseguisse colocar a saúde e métricas de todo o parque de um determinado grupo de host, ou de servidores de um determinado cliente, em apenas uma única pagina, sem a necessidade de ficar rolando pagina ou navegando entre dashboards.

Fazendo pesquisas descobrir que o “ Boom Table”, um plugin para painel que poderia atender minha demanda. Pesquisando e lendo documentações, surgiu a primeira dificuldade, pouco material, ou nenhum sobre como utilizar o plugin com datasource do zabbix. A documentação dele é simples, acredito que a documentação não evoluiu desde que o plugin foi lançado. Então comecei testes na tentativa e erro e conseguir evoluir bem com a utilização do plugin a forma de entregar aos usuários uma experiência melhor de visualização para a demanda que precisava.

Vou montar um case de uso e em cima dele explicar como funciona e configura o plugin.

Imagina que precisamos entregar no mesmo painel, as seguintes informações para todos os hosts de um determinado grupo do zabbix:

  • Disponibilidade
  • Uptime
  • Uso CPU %
  • Uso Memoria %
  • Espaço Utilizado nos Discos

Então tentaremos chegar o mais perto desse resultado:

Exemplo de um painel com Boom Table

Lindo né? Agora fica a duvida, é difícil? sim, muito, pesquisando na documentação e não achando nada, fica bem chato de configurar um painel desse, mas com minhas dicas de hoje, será possível chegar bem perto desse resultado e sem perder diversas horas com isso.

Instalando Plugin

Vou partir do ponto que esteja já com o Grafana instalado e também o plug-in do Zabbix, se chegou ate este artigo e nesse ponto, acredito que conheça a ferramenta a fundo.

Se sua instalação do Grafana for em Linux, pode instalar como qualquer outro plugin, utilizando o grafana-cli. É possível verificar o processo mais a fundo de instalação na wiki do plugin.

grafana-cli plugins install yesoreyeram-boomtable-panel systemctl restart grafana-server

Se utiliza docker ou outro orquestrador de container, incluir a variável com o nome do plugin. Ou alterar seu dockerfile/compose.

docker run -d -p 3000:3000 --name=grafana -e "GF_INSTALL_PLUGINS=yesoreyeram-boomtable-panel,alexanderzobnin-zabbix-app" grafana/grafana

Após isso, já será possível visualiza-lo em Configuration > Plugins.

Plugins instalados

Obs: Caso não tenha o plugin do Zabbix instalado, basta repetir o processo e instala-lo.

grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server

Lembre que nas versões mais recentes, Grafana 7+ e o plugin do zabbix 4+. Há necessidade de incluir o parâmetro abaixo no arquivo de configuração grafana.ini (normalmente em /etc/grafana), abaixo da sessão [plugins].

[plugins]
allow_loading_unsigned_plugins = alexanderzobnin-zabbix-datasource

Depois será apenas preciso habilita-lo na pagina de plugin do Grafana e criar a conexão com o zabbix server.

Criando o Dashboard

Crie um dashboard, processo padrão. Nas configurações do dashboard, crie as variáveis para filtrar os Grupos conforme seu ambiente. Obs: Cada ambiente é diferente, sua configuração não necessariamente será igual a minha.

Criando as Variáveis

Adicione um novo Panel, Inclua suas Querys conforme o seu ambiente. Neste ponto preferir separar cada consulta em uma nova query, porem justamente para facilitar depois o trabalho dentro do Boom Table. Se fizer através de regex não há problema, mas poderá enfrentar desafios na hora de configurar as colunas posteriormente.

Cadastrando as metricas do Zabbix

Dica: acompanhe pelo gráfico se todas as métricas que precisa para um determinado painel está sendo apresentada, ou mude para a visualização de tabela normal e acompanhe por lá, facilita muito no debug.

Feito isso, na configuração do painel, em Visualization, selecione o Boom Table.

Alterando o painel para visualização do Boom Table

Logo abaixo aparecerá uma opção chamada Patterns, todo o trabalho a partir deste ponto será feito nela.

Patterns

Antes vamos a alguns pontos importantes…. O painel conta com dois pré-requisitos:

1. É necessário renomear a time series com o mesmo nome nas várias consultas que você faz para obter todos os dados.

2. A forma que define o “Patterns” será fundamental, então tente padronizar a nomenclatura dos seus itens. O mesmo nome de item que utiliza no Zabbix, utilizará para identificar a métrica na coluna X ou Y.

Voltando para as configurações, Clique em Options e depois Habilite o modo Debug, isso facilitará sua configuração e também ajudará a entender o funcionamento de todo o processo. Do lado esquerdo, será possível visualizar as métricas e todas as outras informações.

Patterns

Em Patterns, clique agora em Default, vamos começar a configurar os padrões que seguirão as colunas, quais métricas ficarão em quais colunas..

Um ponto antes de continuarmos, olhe na primeira coluna, em Metric, será que os dados coletados segue um padrão, HOSTNAME:ITEM, partindo deste ponto, podemos notar que o delimitador será definido como dois pontos “:”, guarde essa informação!!!

Criando patterns

No campo Delimiter, altere de ponto “.” para dois pontos “:”.

Podemos notar na parte esquerda, que possui um botão para “Add Pattern”, clique nele e será adicionado um novo Pattern. Configure ele para a métrica de CPU.

Criando patterns

Pontos importantes aqui:

1)Delimiter: Lembre-se do dois pontos, A métrica bem do Zabbix com dois pontos;

2) Name of the pattern: É apenas para identificação, você pode colocar qualquer nome para identificar;

3) Row Name: Será o nome apresentado na linha, a métrica vem do zabbix no Padrão HOSTNAME:ITEM:VALOR, queremos mostrar na linha o Hostname, então pegaremos a primeira parte. Utilizaremos 0, se fosse o nome do item, seria 1 e por ai vai. Seguindo a sintax abaixo.

HOSTNAME:ITEM:VALOR

_0_:_1_:_2_

4) Pattern: Esse item é importante, lembra que comentei que deveria “renomear a time series com o mesmo nome”, pois bem, aqui devemos indicar qual o item será mostrado nessa coluna. Você pode copiar e colar o mesmo nome de item do Zabbix, ou pode utilizar regex.

5) Col Name: Nome de identificação da Coluna. No Boom Table não conseguir uma forma de indicar as posições das colunas, uma dica que dou é seguir um padrão de nome entre elas, pelo que percebi ele segue em ordem alfabética, então basta escolher os nomes chaves.

6) Stats: Seleciona com o será tratado esse item, mesma base dos outros paineis (formato da metrica, tipo de item, e casas decimais que irá mostrar).

7) Thresholds: Como será os limites dessa métrica, alteração de cores ou inclusão de “fontawesome” (icones baseado em fontes) de conforme os limites definidos, assim podemos colocar de icones conforme seu threshold, recurso bem interessante.

8) Tem muitos outros configurações disponiveis, dá para brincar bastante.

Configure um Pattern para cada Query que definiu anteriormente. No final verá a tabela começando a se formar e cada coluna separada conforme configuramos no Pattern.

Obs: lembre que devemos colocar em todos os Pattern o delimitador dois pontos.

Conjunto de Patterns criado

Nesse ponto você pode desabilitar o modo debug. E veja como ficará sua tabela.

Apresentação dos Dados

Se quiser formatar os as métricas e centralizar, basta ir em Options e procurar as opções “Text alignment for …”.

Alinhamento dos textos

Stats

Nessa parte podemos definir o estado da metrica, se iremos utilizar valor min, max, current e etc… Também qual formato será apresentando este valor, quantas casas decimais entre outros.

Thresholds

Se voce curte colorir o texto, transformar as métricas ou colocar “icones” para mostrar status, você pode utilizar as opções de Transform dentro de Thresholds. Os Thresholds são importantes quando você quer ter uma visão mais simples e pratica em um dashboard, conforme a cor de uma métrica, você consegue assimilar rapidamente a sua integridade.

Vamos brincar um pouco com os Thresholds, pegue o Uso de Memoria. Vamos definir para que sempre que o uso de memoria estiver acima de 60% ele já aparece em Laranja e acima de 85% altere para vermelho.

Cor Verde < 59%

Cor Laranja 60~84,99%

Cor Vermelha > 85%

Defina no campo Thresholds o valor 60,85

Configurando Thresholds

Marque o box “Change BG Color based on thresholds?” e já aparecerá as opções para definir a cor do background. Pode deixar default ou personalizar. Também já um botão para alterar a opções, caso queira utilizar outro threshold.

O mesmo método pode ser utilizado para mudar as cores do texto. Basta marcar o box “Change Text Color based on thresholds?”.

Se quiser colocar as Font Awesome, igual no meu exemplo, marque o box “Change display value based on thresholds?” e incluir as chamadas Font Awesome no campo que se torna disponível. Essas são chamadas para um ícone incrível de fonte, uma cor, um único elemento e um tubo para delimitar o próximo limite.

Utilizando Font Awesome nos thresholds

Nesse exemplo utilizei um de bateria, indicando cheio, metade e vazia. Em “Transform Values for Thresholds” coloque a seguinte informação.

_fa-battery-full,green_ _value_|_fa-battery-quarter,yellow_ _value_|_fa-battery-empty,red_ _value_

E se quiser, desmarque a opção de BG Collors. Será apresentado somente os Ícones.

Agora faça outro teste, para a Coluna de Uso de Disco, vamos colocar para em cada porcentagem ele mostrar uma barra com as cores representando o volume usado. No Pattern de Uso de Disco, mude o thresholds para:

10,20,30,40,50,60,70,80,90

Marque o box “Change display value based on thresholds?” e em “Transform Values for Thresholds” coloque a seguinte informação.

_fa-square,green,1_ _fa-square,gray,9_|_fa-square,green,2_ _fa-square,gray,8_|_fa-square,green,3_ _fa-square,gray,7_|_fa-square,green,4_ _fa-square,gray,6_|_fa-square,yellow,5_ _fa-square,gray,5_|_fa-square,yellow,6_ _fa-square,gray,4_|_fa-square,yellow,7_ _fa-square,gray,3_|_fa-square,red,8_ _fa-square,gray,2_|_fa-square,red,9_ _fa-square,gray,1_|_fa-square,red,10_ _fa-square,gray,0_

Com isso, teremos o resultado abaixo.

Overrides

Overrrides podemos transformar métricas em texto. Mesma logica que o Mapeamento de Valores do Zabbix. Vamos mudar o Status de Disponibilidade (Ping) para ficar como UP (verde) e DOWN (Vermelho).

Habilite os box “Enable BG Color overrides for specific values?” e “Enable value transform overrides for specific values?” E realize as seguintes alterações:

BG Color Overrides" defina: 0->red|1->green
Value transform Overrides: 0->DOWN|1->UP
Overrrides

Terá o seguinte resultado, onde se o valor for 1 é aparecerá UP e em verde, se for 0, será DOWN e vermelho.

Null Handling

Essa opção podemos utilizar quando tratamos de valores nulos, em alguns tipos de monitoramento, não podemos descartar essas métricas, então temos essas opções para decidir como iremos mostra-las quando temos esses valores.

Null Handling
Null BG Color — Cor do fundo da célula
Null Text Color — Cor do Texto
Null Value — Qual valor será mostrado quando temos uma metrica nula.

Cell Links & Tooltip

Essa opção, você pode montar uma forma de “legenda” para cada célula da tabela e também para habilitar links, muito útil quando queremos abrir outro dashboard ou levar para uma URL de um equipamento especifico.

Quando passar o mouse em cima, aparecerá uma caixa conforme abaixo.

Pattern Management

Aqui podemos gerenciar o pattern, há opção para habilitar/desabilitar, ordem de apresentação na caixa de gerenciamento e remover.

Gerenciamento do pattern

General

Na guia geral, temos algumas configurações que serem de modo geral para nossa tabela. Aqui podemos habilitar o modo debug, facilitando muito a configuração inicial, Esconder a primeira coluna e titulo de todas, configurar alinhamento de texto, colocação de forma geral e também incluir links na primeira coluna, assim você poderá por exemplo clicar em uma de um Host e abrir uma Dashboard especifica.

General

Problemas Comuns

1)Quando temos apenas um Host para pegar métricas, os dados não são distribuídos corretamente nas colunas, eles ficam separados por linhas. Isso devido não seguir o padrão HOSTNAME:ITEM:VALOR. É apresentado apenas o nome do item e o valor, quebrando a formatação da tabela.

Tabela com 1 host:

Tabela com múltiplos hosts:

2) Ate o momento não conseguir achar uma forma mais fácil de colocar em ordem as colunas, tive que encontrar um padrão de nome (Col Name) para definir qual coluna ficaria em qual posição.

Considerações Finais

O Boom Table é um painel que pode ser muito útil em diversos, aqui fiz um apanhado geral de como podemos configurar e apresenta-lo de uma forma simples, mas existem N possibilidades de configurações.

Exemplo de visualização com varios hosts.

Exemplos de implementações que podem ser atingidos, basta pensar fora da caixa.

Boom Table plugin for Grafana | Grafana Labs

Espero que ate este ponto, você seja capaz de conseguir replicar em um ambiente e ver funcionando, é potencializar ainda mais suas métricas e criar dashboads fantásticos.

Teste, homologa e brinque, tem muitas funcionalidades que não descrevi aqui. Fiz focado muito na utilização com Zabbix, mas acredito que nada te impeça de utilizar outros Data Sources.

Gostou? Deixe um comentário.

--

--