Nossa equipe tem o prazer de compartilhar a notícia de que um sistema de monitoramento gratuito e de código aberto foi lançado
A versão 4.2 é a resposta para a questão principal da vida, do universo e do monitoramento em geral? Vamos dar uma olhada!
Lembremos que Zabbix é um sistema universal para monitorar o desempenho e disponibilidade de servidores, equipamentos de engenharia e rede, aplicações, bancos de dados, sistemas de virtualização, containers, serviços de TI e serviços web.
O Zabbix implementa um ciclo completo desde a coleta de dados, processamento e transformação, análise dos dados recebidos, e finalização com armazenamento desses dados, visualização e envio de alertas utilizando regras de escalonamento. O sistema também oferece opções flexíveis para expandir a coleta de dados e métodos de alerta, bem como recursos de automação via API. Uma única interface web implementa o 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 uma licença
Zabbix 4.2 é uma nova versão não LTS com um período de suporte oficial reduzido. Para usuários que estão focados em um longo ciclo de vida de produtos de software, recomendamos o uso de versões LTS, como 3.0 e 4.0.
Então, vamos falar sobre os novos recursos e principais melhorias 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, SUSE Enterprise Linux Server 12
- Agente MSI para Windows
- Imagens Docker
Suporte integrado ao 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 era possível no passado 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 integrado para a linguagem de consulta PromQL. E o uso de métricas dependentes permite coletar e processar dados de forma mais eficiente: você solicita os dados uma vez e então nós os classificamos de acordo com as métricas necessárias.
É importante observar que a descoberta de baixo nível agora pode usar os dados coletados para gerar métricas automaticamente. Neste caso, o Zabbix converte os dados recebidos para o formato JSON, o que é muito conveniente de trabalhar.
No momento há mais
Monitoramento eficaz de alta frequência
Queremos detectar problemas o mais rápido possível? Claro, sem dúvida! Na maioria das vezes, esta abordagem resulta na necessidade de pesquisar dispositivos e recolher dados com demasiada frequência, o que coloca uma carga maior no sistema de monitorização. Como evitar isso?
Implementamos um mecanismo de limitação nas regras de pré-processamento. A limitação, em essência, nos dá a oportunidade de pular valores idênticos.
Vamos supor que estamos monitorando o estado de um aplicativo crítico. A cada segundo verificamos se nosso aplicativo está funcionando ou não. Ao mesmo tempo, o Zabbix recebe um fluxo contínuo de dados de 1 (funcionando) e 0 (não funciona). Por exemplo: 1111111111110001111111111111…
Quando tudo estiver em ordem com nossa aplicação, então o Zabbix recebe um fluxo de apenas uns. Eles precisam ser processados? Em geral não, porque só estamos interessados em alterar o estado da aplicação, não queremos coletar e armazenar tantos dados. Portanto, a limitação permite pular um valor se ele for idêntico ao anterior. Como resultado, receberemos apenas dados sobre a mudança de estado, por exemplo, 01010101... São informações suficientes para detectar problemas!
O Zabbix simplesmente ignora os valores ausentes, eles não são registrados no histórico e não afetam os gatilhos de forma alguma. Do ponto de vista do Zabbix, não há valores faltantes.
Ótimo! Agora podemos pesquisar dispositivos com muita frequência e detectar problemas instantaneamente, sem armazenar informações desnecessárias em um banco de dados.
E os gráficos? Eles ficarão vazios por falta de dados! E como saber se o Zabbix está coletando dados se a maior parte desses dados está faltando?
Também pensamos nisso! O Zabbix oferece outro tipo de aceleração, a aceleração com batimentos cardíacos.
Neste caso, o Zabbix, apesar do fluxo de dados repetido, irá armazenar pelo menos um valor no intervalo de tempo especificado. Se os dados forem coletados uma vez por segundo e o intervalo for definido para um minuto, o Zabbix transformará o fluxo de unidades a cada segundo em um fluxo a cada minuto. É fácil ver que isso leva a uma compactação de 60 vezes dos dados recebidos.
Agora estamos confiantes de que os dados estão sendo coletados, a função de gatilho nodata() está funcionando e está tudo bem com os gráficos!
Validação dos dados coletados e tratamento de erros
Nenhum de nós deseja coletar dados errados ou não confiáveis. Por exemplo, sabemos que um sensor de temperatura deve retornar dados entre 0°C e 100°C e qualquer outro valor deve ser considerado falso e/ou ignorado.
Agora isso é possível usando regras de validação de dados incorporadas ao pré-processamento para conformidade ou falta de conformidade com expressões regulares, intervalos de valores, JSONPath e XMLPath.
Agora podemos controlar a reação ao erro. Se a temperatura estiver fora da faixa, podemos simplesmente ignorar esse valor, definir um valor padrão (por exemplo, 0°C) ou definir nossa própria mensagem de erro, por exemplo, “Sensor danificado” ou “Substitua a bateria”.
Um bom exemplo do uso da validação é a capacidade de verificar os dados de entrada quanto à presença de uma mensagem de erro e definir esse erro para toda a métrica. Esta é uma funcionalidade muito útil ao recuperar dados de APIs externas.
Qualquer transformação de dados usando JavaScript
Se as regras de pré-processamento integradas não fossem suficientes para nós, agora oferecemos total liberdade usando scripts JavaScript personalizados!
Isso abre possibilidades infinitas para o processamento de dados recebidos. O benefício prático dessa funcionalidade é que não precisamos mais dos scripts externos que usávamos para fazer qualquer manipulação de dados. Agora tudo isso pode ser feito usando JavaScript.
Agora são possíveis transformação de dados, agregação, filtros, operações aritméticas e lógicas e muito mais!
Testando pré-processamento
Agora não precisamos adivinhar como funcionam nossos complexos scripts de pré-processamento. Agora existe uma maneira conveniente de verificar se o pré-processamento está funcionando corretamente diretamente na interface!
Processamos milhões de métricas por segundo!
Antes do Zabbix 4.2, o pré-processamento era feito exclusivamente pelo servidor Zabbix, o que limitava a capacidade de usar proxies para distribuição de carga.
A partir do Zabbix 4.2, obtemos um escalonamento de carga incrivelmente eficiente por meio do suporte ao pré-processamento do lado do proxy. Agora os proxies fazem isso!
Em combinação com o throttling, esta abordagem permite monitoramento em grande escala e alta frequência e milhões de verificações por segundo, sem carregar o servidor Zabbix central. Os proxies processam volumes gigantescos de dados, enquanto apenas uma pequena parte deles chega ao servidor Zabbix devido ao afogamento, uma ou duas ordens de magnitude a menos.
Descoberta de baixo nível mais fácil
Lembre-se de que a descoberta de baixo nível (LLD) é um mecanismo muito poderoso para descobrir automaticamente qualquer tipo de recursos de monitoramento (sistemas de arquivos, processos, aplicativos, serviços, etc.) e criar automaticamente itens de dados, gatilhos, nós de rede baseados neles e outros. objetos. Isso economiza um tempo incrível, simplifica a configuração e permite que um modelo seja usado em hosts com diferentes recursos de monitoramento.
A descoberta de baixo nível exigia JSON especialmente formatado como entrada. É isso, não vai mais acontecer!
O Zabbix 4.2 permite descoberta de baixo nível (LLD) para usar dados arbitrários no formato JSON. Por que isso é importante? Isto permite comunicar, por exemplo, com APIs externas sem recorrer a scripts e utilizar as informações recebidas para criar automaticamente hosts, elementos de dados e gatilhos.
Juntamente com o suporte a JavaScript, isso cria oportunidades fantásticas para a criação de modelos para trabalhar com diversas fontes de dados, como, por exemplo, APIs de nuvem, APIs de aplicativos, dados em XML, formatos CSV e assim por diante.
As possibilidades são infinitas!
Suporte TimescaleDB
O que é TimescaleDB? Este é o PostgreSQL normal mais um módulo de extensão da equipe TimescaleDB. TimescaleDB promete melhor desempenho devido a algoritmos e estrutura de dados mais eficientes.
Além disso, outra vantagem do TimescaleDB é o particionamento automático de tabelas com histórico. TimescaleDB é rápido e fácil de manter! Porém, devo observar que nossa equipe ainda não fez uma comparação séria de desempenho com o PostgreSQL normal.
No momento, o TimescaleDB é um produto bastante jovem e em rápido desenvolvimento. Use com cuidado!
Fácil gerenciamento de tags
Se anteriormente as tags só podiam ser gerenciadas no nível do acionador, agora o gerenciamento de tags é muito mais flexível. Zabbix suporta tags para templates e hosts!
Todos os problemas detectados recebem tags não só do trigger, mas também do host, bem como dos templates deste host.
Definindo tags para um nó de rede
Registro automático mais flexível
O Zabbix 4.2 permite filtrar hosts por nome usando expressões regulares. Isto torna possível criar diferentes cenários de detecção para diferentes grupos de nós da rede. É especialmente conveniente se usarmos regras complexas de nomenclatura de dispositivos.
Descoberta de rede mais flexível
Outra melhoria diz respeito à nomenclatura dos nós da rede. Agora é possível gerenciar nomes de dispositivos durante a descoberta de rede e obter o nome do dispositivo a partir de um valor métrico.
Esta é uma funcionalidade muito necessária, especialmente para descoberta de rede usando SNMP e agente Zabbix.
Verificando a funcionalidade dos métodos de notificação
Agora você pode enviar uma mensagem de teste diretamente da interface da Web e verificar se o método de notificação funciona. Esta funcionalidade é especialmente útil para testar scripts para combinar o Zabbix com vários sistemas de alerta, sistemas de tarefas e outros programas e APIs externos.
Monitoramento remoto de componentes da infraestrutura Zabbix
Agora é possível monitorar remotamente métricas internas do servidor e proxy Zabbix (métricas de desempenho e saúde dos componentes Zabbix).
Para que serve? A funcionalidade permite monitorar métricas internas de servidores e proxies de fora, permite detectar e notificar rapidamente sobre problemas mesmo se os próprios componentes estiverem sobrecarregados ou, por exemplo, houver uma grande quantidade de dados não enviados no proxy.
Suporte ao formato HTML para mensagens de e-mail
Agora não estamos limitados ao texto simples e podemos criar lindas mensagens de e-mail, graças ao suporte do formato HTML. É hora de aprender HTML + CSS!
Acesso a sistemas externos a partir de placas 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 abrir, por exemplo, um ticket no sistema de tarefas com um ou dois cliques no ícone de um nó da rede.
Uma regra de descoberta pode ser um item de dados dependente
Por que isso é necessário - você pergunta. Isso permite que os dados métricos subjacentes sejam usados tanto para descoberta quanto para coleta direta de dados. Por exemplo, no caso de coletar dados de um exportador Prometheus, o Zabbix fará uma solicitação HTTP e usará imediatamente as informações recebidas para todos os elementos de dados dependentes: valores de métricas e regras de descoberta de baixo nível.
Uma nova maneira de visualizar problemas em mapas
Agora há suporte para imagens GIF animadas em mapas para uma visualização mais visível dos problemas.
Extraindo dados de cabeçalhos HTTP no monitoramento da Web
No Web Monitoring, foi adicionada a capacidade de selecionar dados do cabeçalho HTTP recebido.
Isso permite que você crie cenários de monitoramento da Web em várias etapas ou de monitoramento de API de terceiros usando o token de autorização obtido em uma das etapas.
Zabbix Sender usa todos os endereços IP
O Zabbix Sender agora envia dados para todos os endereços IP do parâmetro ServerActive no arquivo de configuração do agente.
Novo filtro conveniente na configuração do gatilho
A página de configuração de gatilhos agora possui um filtro expandido para seleção rápida e conveniente de gatilhos com base em critérios especificados.
Mostrar a hora exata
Tudo é simples aqui, agora o Zabbix mostra a hora exata quando você passa o mouse sobre o gráfico.
Outras inovações
- Implementado um algoritmo mais previsível para alterar a ordem dos widgets no painel
- Capacidade de alterar parâmetros em massa de protótipos de itens de dados
- Suporte IPv6 para verificações de DNS: "net.dns" e "new.dns.record"
- Adicionado parâmetro “skip” para verificações “vmware.eventlog”
- O erro de execução da etapa de pré-processamento inclui o número da etapa
Como faço para atualizar?
Para atualizar de versões anteriores, você só precisa instalar
Estamos realizando webinars gratuitos para quem quiser saber mais sobre o Zabbix 4.2 e ter a oportunidade de tirar dúvidas para a equipe Zabbix.
Não se esqueça do popular
Links úteis
-
-
-
Fonte: habr.com