Conforme o prometido no artigo anterior continuamos aqui o aprendizado sobre o que considero ser o núcleo de otimização do Zabbix: os templates.
No artigo anterior você aprendeu a construir templates simples que coletam dados a partir de um agente. Neste artigo vamos demonstrar como transformar estes dados em novas informações, como criar representações gráficas dos dados coletados, importação e exportação de templates e sobre conceitos de herança entre templates.
As Triggers
A tradução correta de trigger para o português seria gatilho, entretanto, este termo tem um tom muito pejorativo e remete a algo feito “nas coxas”, “sem qualidade” e por isso a comunidade optou por manter o termo original.
O conceito de trigger (gatilho) nos remete a banco de dados, é esta a nomenclatura adotada para a execução automatizada de procedimentos sempre que um evento acontecer. No Zabbix não é diferente, as triggers são como uma “marca d´agua”, limites configuráveis para representar situações que temos que estar atentos.
Quando uma trigger é acionada automaticamente o Zabbix replica esta informação para todos os mapas, telas e dashboards onde o host ou os grupos ao qual o host está associado estejam representados. Além da apresentação gráfica do incidente é possível a representação sonora (beep) e a configuração de Ações específicas (veremos isso em um artigo posterior) visando notificar os administradores ou até mesmo executar procedimentos automatizados visando mitigar o incidente.
Voltemos ao listagem de templates e cliquemos no link Triggers (0) do template 103_Apache. Será apresentada a lista de triggers configuradas para este template que, neste momento, deve estar vazia. Clique no botão Criar Trigger para abrir o formulário de cadastro de triggers o preenchendo conforme a tabela 1.
Nome | Não existe processo do apache sendo executado |
Expressão | {103_Apache:proc.num[{$APACHE_PROCESSO}].last(0)}=0 |
Severidade | Alta |
Existem duas formas de preencher a expressão no formulário, você pode digitar manualmente ela no campo ou utilizar o botão Adicionar para, através de uma sequência de passos, ir selecionando o que deseja. A segunda forma é muito boa quando está se iniciando pois reduz a curva de aprendizado uma vez que todas as principais formas de construção da expressão estão previstas nas telas. A imagem abaixo apresenta a sequência de passos para construir a mesma expressão descrita na tabela 1.
Uma vez que os dados estejam preenchidos você deve clicar no nível de severidade desejado (observe que ele irá mudar de cor para confirmar o nível de severidade selecionado) e clicar no botão Salvar.
Pronto! Viu como é simples criar uma trigger no Zabbix ? Neste momento temos uma trigger capaz de detectar caso o apache não esteja rodando pois quando o apache não estiver rodando não haverá processo dele executando em memória.
Mas sabemos que existem situações mais complexas, que exigirão expressões não tão simples e iremos tratar isso em artigo posterior.
Neste momento você pode estar pensando, e com razão, que tem um template mas ainda não o testou… não tem como ter certeza de que ele funciona! Vamos então tirar esta dúvida cadastrando um host simples e o configurando para utilizar o template.
Acesse a tela de Hosts (Configuração -> Hosts) e clique no botão Criar Host. Será exibido o formulário de cadastramento de host e você deverá preenche-lo conforme a tabela 2 define.
Nome | Servidor_Teste_1 |
Novo Grupo de Hosts | TESTES |
Interfaces do Agente -> Endereço IP | 127.0.0.1 |
Como você deve ter percebido o IP do servidor de testes é o endereço de loopback do próprio servidor Zabbix, usamos esta abordagem para facilitar os testes. Além dos dados básicos do host precisamos associa-lo ao template 103_Apache para que ele possa executar o plano de monitoração lá definido.
Para associar o host a um template clique na aba Templates, clique no link Adicionar, selecione o template desejado na janela de seleção (no nosso caso o template 103_Apache) e clique no botão Selecionar. A tela de host será recarregada ficando conforme imagem abaixo.
Agora é clicar no botão Salvar e aguardar a coleta dos dados. Enquanto aguardamos a coleta dos dados vamos criar gráficos em nosso template, neste momento serão gráficos simples pois os itens são poucos e sem muita variação esperada.
Vamos criar um gráfico para representar o consumo de memória dos processos do apache. Para criarmos gráficos no nosso template precisamos retornar à tela de templates (Configuração -> Templates) e clicar no link Graficos (0) do template 103_Apache. Clique no botão Criar Gráfico para abrir o formulário de cadastro de gráficos.
Nome | Apache – Uso de memória |
Tipo do Gráfico | Normal |
Item 1 | Processo do Apache |
Após informar o tipo e o nome do gráfico clique no link Adicionar existente na caixa Itens e selecione o item Processo do Apache. A sua tela será modificada exibindo configurações adicionais para o item.
Ajuste o Estilo para “Área Gradiente” e mude a cor para um tom de verde, na sequência clique no botão Salvar e terá um novo gráfico definido para todos os hosts associados ao template 103_Apache.
Vamos consultar os dados recentes e verificar se os dados estão sendo coletados com sucesso?
Para consultar os dados coletados é necessário ir até a tela de Dados Recentes (Monitoração -> Dados Recentes), selecionar o host desejado (dependendo das telas que você visitou nesta sessão com o Zabbix pode ser necessária a seleção do grupo também).
Ao clicar no botão + existente antes do grupo Apache podemos verificar que os dois itens definidos estão sendo coletados e que o item Quantidade de Memória Utilizada pelo Apache está representando os dados coletados em usa unidade básica (byte) o que o torna pouco agradável para lermos uma vez que é padrão do mercado usar a notação em Megas ou em Gigas para representar esta informação. Retornemos então à definição do item para que possamos ajustar esta representação.
Retorne a tela de itens (Configuração -> Templates -> Itens (2)) abrindo a tela de itens do template 103_Apache e clique no nome do item desejado para edita-lo, conforme exemplifica a imagem abaixo.
Você deve alterar o campo Unidades informando o valor “B” (Letra B maiúscula) e clicar no botão Salvar para que o Zabbix entenda corretamente qual tabela de notação deverá ser utilizada. Retorne à tela de dados recentes e verifique a diferença.
Importação de templates
Neste momento temos um primeiro template construído e precisamos de mais outro para que eu possa explicar de forma mais didática o conceito de herança. Vou resolver este problema ao ensinar uma técnica que você utilizará muito no Zabbix: a importação de templates.
O processo de importação (e de exportação) do Zabbix utiliza um arquivo XML (arquivo texto com tags padronizadas). Através deste arquivo de texto é possível se transferir entre servidores Zabbix os perfis de monitoração desejados.
Vamos testar este processo ao importar arquivo XML existente aqui neste blog. Este arquivo XML tem as configurações de um template simples para monitoração de disponibilidade de um servidor MySQL.
Quantidade de Itens | 3 |
Quantidade de Triggers | 2 |
Quantidade de gráficos | 1 |
Para importar o template execute as tarefas abaixo:
- Baixe o arquivo do template (usando o link de download logo abaixo);
- Acesse a tela de templates (Configuração -> Templates);
- Clique no botão Importar situado no alto da tela;
- Será aberto formulário de importação de dados, clique em Escolher Arquivo e selecione o template que você baixou no primeiro passo;
- Cerfifique-se que o formulário está similar à imagem abaixo e clique no botão Importar;
[wpdm_file id=9]
Ao final da importação deverá aparecer mensagem (com fundo verde) informando que a importação foi concluída com sucesso. Retorne à tela de templates (Configuração -> Templates) e certifique-se que no grupo “100 – Linux” existe o template 102_MySQL pois para os próximos exercícios iremos utilizar recurso de herança e ele será utilizado.
Herança entre templates
Poder criar perfis de monitoração para aplicação em múltiplos elementos a serem monitorados (hosts) já acelera consideravelmente o processo de configuração da monitoração, além de padronizar as técnicas de gerência.
Mas várias vezes temos situações onde precisamos agrupar perfis ou então criar novos perfis estendendo as características de monitoração, definindo novos limites, etc. O Zabbix possibilita isso através da aba Associado aos templates.
Vamos exercitar esta funcionalidade então através da junção de dois templates em um novo template. Acredito que em seu ambiente seja comum ter servidores com o famoso kit Linux+Apache+PHP+MySQL (LAMP). Nós já temos aqui templates para monitorar o Apache e para monitorar o MySQL mas não temos nada que monitore o PHP.
Sabemos que, por via de regra, não é usual ter o PHP sem ter um apache (ou um outro servidor de páginas). Vamos então criar um novo template e associa-lo aos templates de monitoração do Apache e do MySQL, ele terá as características definidas na tabela 5.
Nome | 105_Apache_PHP_MySQL |
Associação 1 | 102_MySQL |
Associação 2 | 103_Apache |
Para criar o novo template execute as tarefas abaixo:
- Use o botão Criar Template para abrir o formulário de cadastro de templates;
- Informe o Nome;
- Clique na aba Associado aos Templates;
- Clique no link Adicionar;
- Selecione os dois templates informados na tabela 5;
O seu formulário deverá estar similar à imagem abaixo.
Salve o registro e observe a listagem de templates: o novo template tem a soma das propriedades dos outros dois templates.
Clique no link Itens (5) do template 105 e observe que os itens deste template são um pouco diferentes dos itens que você cadastra normalmente. Antes do nome de cada item tem a indicação da origem do mesmo (que é externa…). Temos aqui um padrão bom de recordarmos.
Nas listagens do menu configuração temos então três padrões:
- Linhas com nome precedido de identificador de origem na cor cinza – ele é um item herdado de um template;
- Linhas com nome precedido de identificador de origem na cor amarela – item foi criado automaticamente através do processo de descoberta de baixo nível (LLD – será visto num próximo artigo);
- Item sem nenhum indicador de origem – item convencional;
Os itens convencionais (que você criou no primeiro artigo sobre templates) são aqueles que você tem total controle… pode mudar qualquer característica… pode excluir até.
Itens do tipo 1 e do tipo 2 por outro lado você tem um controle restrito. Você pode modificar algumas informações. As figuras abaixo exemplificam estas restrições, os campos com fundo cinza não podem ser modificados por pertencerem a um elemento herdado de outro template.