Lançamento do Zabbix 4.2

Nossa equipe está muito feliz em compartilhar a notícia de que o lançamento do sistema de monitoramento de código aberto gratuito Zabbix 4.2 !



A versão 4.2 é a resposta para a principal questão da vida, do universo e do monitoramento em geral? Vamos ver!

Lembre-se de que o Zabbix é um sistema universal para monitorar o desempenho e a disponibilidade de servidores, equipamentos de engenharia e rede, aplicativos, bancos de dados, sistemas de virtualização, contêineres, serviços de TI e serviços da Web.

O Zabbix implementa um ciclo completo de coleta de dados, processamento e conversão, análise dos dados recebidos e finalização do armazenamento desses dados, visualização e envio de alertas usando regras de escalação. O sistema também oferece opções flexíveis para expandir métodos de coleta de dados e alertas, além de recursos de automação por meio da API. Uma única interface da web fornece gerenciamento centralizado de configurações de monitoramento e distribuição de direitos de acesso a vários grupos de usuários. O código do projeto é distribuído gratuitamente sob a licença GPLv2 .

O Zabbix 4.2 é uma nova versão não LTS com um período de suporte oficial reduzido. Recomenda-se que os usuários guiados por um longo ciclo de operação de produtos de software usem versões LTS, como 3.0 e 4.0.

Então, vamos falar sobre as atualizações mais recentes e os principais aprimoramentos da versão 4.2:

Mais plataformas oficiais



Além dos pacotes oficiais existentes, também oferecemos novas compilações para:

  • RaspberryPi, Mac OS / X, Servidor SUSE Enterprise Linux 12
  • Agente MSI para Windows
  • Imagens do Docker

Suporte interno do Prometheus para monitoramento de aplicativos


O Zabbix pode coletar dados de várias maneiras (push / pull) de diferentes fontes de dados. São JMX, SNMP, WMI, HTTP / HTTPS, RestAPI, XML Soap, SSH, Telnet, agentes e scripts e outras fontes. Agora conheça o suporte do Prometheus!

A rigor, a coleta de dados dos exportadores do Prometheus foi possível anteriormente, graças ao tipo de elemento de dados HTTP / HTTPS e às expressões regulares.

No entanto, a nova versão permite trabalhar com o Prometheus da maneira mais eficiente possível, devido ao suporte interno à linguagem de consulta do PromQL. E o uso de métricas dependentes permite que você colete e processe dados de maneira mais eficiente: depois de solicitar os dados e distribuí-los de acordo com as métricas necessárias.


Obter o valor de uma métrica específica

É importante observar que agora a descoberta de baixo nível pode usar os dados coletados para criar métricas automaticamente. Nesse caso, o Zabbix converte os dados recebidos no formato JSON, o que é muito conveniente para trabalhar.


Encontre métricas usando um filtro na linguagem de consulta PromQL

No momento, existem mais de 300 integrações e receitas para monitorar serviços e aplicativos de terceiros usando o Zabbix. O suporte ao Prometheus adicionará toda uma gama de aplicativos que têm exportadores oficiais ou apoiados pela comunidade do Prometheus. Este é um monitoramento de serviços populares, contêineres e recursos em nuvem.

Monitoramento eficiente de alta frequência


Queremos detectar problemas o mais rápido possível? Claro, sem dúvida! Na maioria das vezes, essa abordagem leva ao fato de que precisamos interrogar dispositivos e coletar dados com muita frequência, o que leva a uma carga maior no sistema de monitoramento. Como evitar isso?

Implementamos o mecanismo de limitação nas regras de pré-processamento. Trotar, de fato, nos permite pular os mesmos valores.

Suponha que monitoremos o status de um aplicativo crítico. A cada segundo, verificamos se nosso aplicativo está funcionando ou não. Nesse caso, o Zabbix recebe um fluxo contínuo de dados de 1 (funciona) e 0 (não funciona). Por exemplo: 111111111111000111111111111111 ...

Quando tudo está em ordem com a nossa aplicação, o Zabbix recebe um fluxo de apenas uma unidade. Preciso processá-los? Em geral, não, porque estamos interessados ​​apenas em alterar o estado do aplicativo, não queremos coletar e armazenar tantos dados. Portanto, trotar permite que você pule um valor se for idêntico ao anterior. Como resultado, obtemos apenas dados sobre a alteração de estado, por exemplo, 01010101 ... Há informações suficientes para detectar problemas!

O Zabbix simplesmente ignora os valores ausentes, eles não são gravados no histórico e não afetam os gatilhos de forma alguma. Do ponto de vista do Zabbix, os valores ausentes não existem.


Ignorar valores duplicados

Uau! Agora, muitas vezes podemos pesquisar dispositivos, detectando problemas instantaneamente sem armazenar informações desnecessárias no banco de dados.

Mas e os gráficos? Eles estarão vazios devido à falta de dados! E como você sabe se o Zabbix coleta dados se a maioria deles é ignorada?

Nós pensamos sobre isso! O Zabbix oferece outro tipo de aceleração, aceleração com batimentos cardíacos.


A cada minuto, verificamos se a métrica está ativa

Nesse caso, o Zabbix, apesar do fluxo repetido de dados, salvará pelo menos um valor no intervalo de tempo especificado. Se os dados forem coletados uma vez por segundo e o intervalo for definido em um minuto, o Zabbix transformará um fluxo de um segundo em um fluxo de um minuto. É fácil ver que isso leva a uma compactação de 60 vezes dos dados recebidos.

Agora temos certeza de que os dados estão sendo coletados, a função de gatilho nodata () funciona e tudo está em ordem com os gráficos!

Validação de dados coletados e tratamento de erros


Nenhum de nós deseja coletar dados incorretos ou imprecisos. Por exemplo, sabemos que um sensor de temperatura deve retornar dados entre 0 ° C e 100 ° C e qualquer outro valor deve ser considerado incorreto e / ou ignorado.

Agora é possível com a ajuda de regras de pré-processamento integradas para validação de dados para corresponder ou não a expressões regulares, intervalo de valores, JSONPath e XMLPath.

Agora podemos controlar a resposta ao erro. Se a temperatura estiver fora da faixa, podemos simplesmente ignorar esse valor, definir o valor padrão (por exemplo, 0 ° C) ou definir nossa própria mensagem de erro, por exemplo, "O sensor está danificado" ou "Substitua a bateria".


A temperatura deve ser de 0 a 100, ignore o resto

Um bom exemplo do uso da validação é a capacidade de verificar a entrada quanto à presença de uma mensagem de erro e definir esse erro para a métrica inteira. Esse é um recurso muito útil ao recuperar dados de APIs externas.

Qualquer transformação de dados usando JavaScript


Se as regras internas de pré-processamento não forem suficientes para nós, agora oferecemos total liberdade usando scripts JavaScript arbitrários!


Apenas uma linha de código para converter graus Fahrenheit em graus Celsius

Isso abre inúmeras possibilidades para o processamento de dados recebidos. O benefício prático dessa funcionalidade é que agora não precisamos de scripts externos que usamos para nenhuma operação de dados. Agora tudo isso pode ser feito usando JavaScript.

Agora, transformação de dados, agregação, filtros, operações aritméticas e lógicas e muito mais são possíveis!


Extraímos informações úteis da saída do Apache mod_status!

Testando o pré-processamento


Agora não precisamos nos perguntar como nossos scripts complexos de pré-processamento funcionam. Houve uma verificação conveniente da correção do pré-processamento diretamente da interface!




Processamos milhões de métricas por segundo!


Antes do Zabbix 4.2, apenas o servidor Zabbix estava envolvido no pré-processamento, o que limitava a possibilidade de usar proxies para o balanceamento de carga.

Começando com a versão Zabbix 4.2, obtemos um escalonamento de carga incrivelmente eficiente devido ao suporte ao processamento pró no lado do proxy. Agora proxies estão fazendo isso!



Em combinação com a otimização, essa abordagem permite o monitoramento em larga escala de alta frequência e milhões de verificações por segundo, sem carregar o servidor Zabbix central. Os proxies processam grandes quantidades de dados, enquanto apenas uma pequena fração deles chega ao servidor Zabbix devido à limitação, uma ou duas ordens de magnitude a menos.

Detecção mais simples de baixo nível


Lembre-se de que a detecção de baixo nível (LLD) é um mecanismo muito poderoso para detectar automaticamente qualquer tipo de recurso de monitoramento (sistemas de arquivos, processos, aplicativos, serviços etc.) e criar automaticamente elementos de dados, gatilhos e nós de rede com base em seus dados. e outros objetos. Isso economiza muito tempo, simplifica a configuração e permite que você use um modelo para hosts que possuem diferentes recursos de monitoramento.

A descoberta de baixo nível exigiu entrada JSON especialmente criada. É isso aí, não será mais!

O Zabbix 4.2 permite que a descoberta de baixo nível (LLD) use dados arbitrários no formato JSON. Por que isso é importante? Isso permite, sem recorrer a scripts, se comunicar, por exemplo, com APIs externas e usar as informações recebidas para criar automaticamente nós da rede, elementos de dados e acionadores.

Juntamente com o suporte a JavaScript, isso cria oportunidades fantásticas para a criação de modelos para trabalhar com várias fontes de dados, como, por exemplo, APIs de nuvem, APIs de aplicativos, dados em XML, formatos CSV e assim por diante.


Associar JSON às informações do processo com LLD

As possibilidades são realmente infinitas!

Suporte para TimescaleDB





O que é o TimescaleDB? Este é um módulo de extensão PostgreSQL plus regular da equipe TimescaleDB. O TimescaleDB promete melhor desempenho com algoritmos e estruturas de dados mais eficientes.

Além disso, outra vantagem do TimescaleDB é o particionamento automático de tabelas com histórico. TimescaleDB é velocidade e facilidade de manutenção! Embora, devo observar que nossa equipe ainda não fez uma comparação séria de desempenho com o PostgreSQL comum.

No momento, o TimescaleDB é um produto relativamente jovem e de rápido crescimento. Use com cuidado!

Fácil gerenciamento de tags


Se as tags anteriores pudessem ser controladas apenas no nível do acionador, agora o gerenciamento de tags é muito mais flexível. O Zabbix suporta tags para modelos e hosts!

Todos os problemas detectados recebem tags não apenas do acionador, mas também do host, bem como os modelos desse host.


Defina as tags para o host

Registro automático mais flexível


O Zabbix 4.2 permite filtrar hosts por nome usando expressões regulares. Isso torna possível criar scripts de descoberta diferentes para diferentes grupos de hosts. É especialmente conveniente se usarmos regras complexas de nomeação de dispositivos.

Descoberta de rede mais flexível


Outra melhoria é a nomeação de hosts. Agora você pode gerenciar nomes de dispositivos durante a descoberta de rede e obter o nome do dispositivo a partir do valor da métrica.

Essa é uma funcionalidade muito necessária, especialmente para descoberta de rede usando o agente SNMP e Zabbix.


Atribuir automaticamente o nome do host local ao nome visível

Verificando a operacionalidade dos métodos de notificação


Agora, diretamente da interface da Web, você pode enviar uma mensagem de teste e verificar se o método de notificação funciona. Essa funcionalidade é especialmente útil para verificar scripts combinando o Zabbix com vários sistemas de aviso, sistemas de tarefas e outros programas e APIs externos.



Monitoramento remoto de componentes de infraestrutura do Zabbix


Agora você pode monitorar remotamente as métricas internas do servidor e proxy do Zabbix (métricas de desempenho e integridade dos componentes do Zabbix).

Para que é isso? A funcionalidade permite monitorar métricas internas de servidores e proxies a partir do exterior, permite detectar e notificar rapidamente sobre problemas, mesmo que os componentes estejam sobrecarregados ou, por exemplo, uma grande quantidade de dados não enviados seja enviada ao proxy.

Suporte ao formato HTML para mensagens de email


Agora não estamos limitados ao texto simples e podemos formar lindas mensagens de email, graças ao suporte do formato HTML. É hora de aprender HTML + CSS!


As mensagens são mais fáceis de ler, mesmo com o uso mínimo de HTML

Acesso a sistemas externos a partir de placas de interface de rede


Há suporte para todo um conjunto de novas macros em URLs personalizados para melhor integração de mapas com sistemas externos. Isso permite que um ou dois cliques no ícone do host abram, por exemplo, um ticket no sistema de tarefas.


Um clique para abrir um ticket em Jira

A regra de descoberta pode ser um item de dados dependente.


Por que você precisa disso - você pergunta. Isso permite o uso de dados métricos básicos para detecção e coleta direta de dados. Por exemplo, no caso de coletar dados do exportador de Prometheus, o Zabbix fará uma solicitação HTTP e imediatamente usará as informações recebidas para todos os elementos de dados dependentes: valores métricos e regras de descoberta de baixo nível.

Uma nova maneira de visualizar problemas nos mapas


O suporte para imagens GIF animadas em mapas apareceu para uma visualização mais visível dos problemas.


Dispositivos problemáticos se tornam mais visíveis

Recuperando Dados de Cabeçalhos HTTP no Monitoramento da Web


No monitoramento da Web, a capacidade de selecionar dados do cabeçalho HTTP recebido foi adicionada.

Isso permite criar scripts de várias etapas para monitorar a Web ou monitorar APIs de terceiros usando o token de autorização obtido em uma das etapas.


Extrair AuthID do cabeçalho HTTP

O Zabbix Sender usa todos os endereços IP


O Zabbix Sender agora envia dados para todos os endereços IP a partir do parâmetro ServerActive do arquivo de configuração do agente.



Novo filtro conveniente na configuração do acionador


A página de configuração do acionador possui um filtro avançado para seleção rápida e conveniente de acionadores, de acordo com os critérios especificados.


Escolha gatilhos relacionados ao serviço K8S

Mostramos a hora exata


É simples, agora o Zabbix mostra a hora exata em que você passa o mouse sobre o gráfico.



Outras inovações


  • Implementou um algoritmo mais previsível para alterar a ordem dos widgets no painel (painel)
  • A capacidade de alterar em massa parâmetros de protótipos de elementos de dados
  • Suporte IPv6 para verificações de DNS: "net.dns" e "new.dns.record"
  • Adicionado parâmetro skip para verificações de vmware.eventlog
  • O erro de execução da etapa de pré-processamento inclui o número da etapa

Como atualizar?


Para migrar de versões anteriores, você só precisa instalar novos arquivos binários (servidor e proxy) e uma nova interface. O Zabbix atualizará automaticamente o banco de dados. A instalação de novos agentes não é necessária.

Realizamos seminários on-line gratuitos para aqueles que desejam aprender mais sobre o Zabbix 4.2 e poder fazer perguntas à equipe do Zabbix. Inscreva-se!

Não se esqueça do popular canal Telegram da comunidade Zabbix, onde você sempre pode obter conselhos e respostas para suas perguntas em russo de colegas mais experientes e, se tiver sorte, dos próprios desenvolvedores do Zabbix. Para iniciantes, recomendamos um grupo para iniciantes .

Links úteis


- Notas de versão
- Notas de atualização
- Artigo original

Source: https://habr.com/ru/post/pt444894/


All Articles