Esta seção fornece detalhes sobre o pré-processamento de valores de item. O pré-processamento de valores de item permite definir e executar regras de transformação para os valores de item recebidos.
O pré-processamento é gerenciado pelo processo de gerenciador de pré-processamento juntamente com os workers de pré-processamento que executam as etapas de pré-processamento. Todos os valores com pré-processamento, recebidos de diferentes coletores de dados, passam pelo gerenciador de pré-processamento antes de serem adicionados ao cache de histórico. A comunicação IPC baseada em socket é usada entre os coletores de dados (pollers, trappers, etc.) e o processo de pré-processamento. O pré-processamento é realizado pelo Zabbix server ou pelo Zabbix proxy (para os itens monitorados pelo proxy).
Para visualizar o fluxo de dados desde a fonte até o banco de dados do Zabbix, podemos usar o seguinte diagrama simplificado:

O diagrama acima mostra apenas processos, objetos e ações relacionados ao processamento de valores de item de forma simplificada. O diagrama não mostra mudanças condicionais de direção, tratamento de erros ou loops. O cache local de dados do gerenciador de pré-processamento também não é mostrado porque não afeta o fluxo de dados diretamente. O objetivo deste diagrama é mostrar os processos envolvidos no processamento de valores de item e a forma como eles interagem.
Um item pode mudar seu estado para NÃO SUPORTADO enquanto o pré-processamento é realizado se qualquer uma das etapas de pré-processamento falhar.
Um item pode mudar seu estado para NÃO SUPORTADO se a normalização dos dados falhar (por exemplo, quando um valor textual não pode ser convertido para número).
O pré-processamento de dados é realizado nas seguintes etapas:

Observe que, no diagrama, o pré-processamento do item mestre é ligeiramente simplificado ao ignorar o cache de pré-processamento.
A fila de pré-processamento é organizada como:
O cache de pré-processamento foi introduzido para melhorar o desempenho do pré-processamento para múltiplos items dependentes que possuem etapas de pré-processamento semelhantes (o que é um resultado comum do LLD).
O cache é feito pré-processando um item dependente e reutilizando alguns dos dados internos de pré-processamento para o restante dos items dependentes. O cache de pré-processamento é suportado apenas para a primeira etapa de pré-processamento dos seguintes tipos:
[?(@.path == "value")])O arquivo de configuração do Zabbix server permite que os usuários definam a quantidade de threads de trabalhadores de pré-processamento. O parâmetro de configuração StartPreprocessors deve ser usado para definir o número de instâncias pré-iniciadas de trabalhadores de pré-processamento, que deve pelo menos corresponder ao número de núcleos de CPU disponíveis.
Se as tarefas de pré-processamento não forem limitadas pela CPU e envolverem solicitações de rede frequentes, é recomendada a configuração de trabalhadores adicionais. O número ideal de trabalhadores de pré-processamento pode ser determinado por muitos fatores, incluindo a contagem de items "pré-processáveis" (items que exigem a execução de qualquer etapa de pré-processamento), a contagem de processos de coleta de dados, a contagem média de etapas para o pré-processamento de items, etc. Trabalhadores insuficientes podem levar ao alto uso de memória. Para solucionar o uso excessivo de memória em sua instalação do Zabbix, consulte Perfilando uso excessivo de memória com tcmalloc.
Mas assumindo que não há operações pesadas de pré-processamento, como análise de grandes blocos XML/JSON, o número de trabalhadores de pré-processamento pode corresponder ao número total de coletores de dados. Dessa forma, haverá na maioria das vezes (exceto nos casos em que os dados do coletor chegam em lote) pelo menos um trabalhador de pré-processamento desocupado para os dados coletados.
Muitos processos de coleta de dados (pollers, unreachable pollers, ODBC pollers, HTTP pollers, Java pollers, pingers, trappers, proxypollers) juntamente com o IPMI manager, SNMP trapper e trabalhadores de pré-processamento podem esgotar o limite de descritores de arquivos por processo para o gerente de pré-processamento.
Esgotar o limite de descritores de arquivos por processo fará com que o Zabbix server pare, normalmente logo após a inicialização, mas às vezes levando mais tempo. Para evitar tais problemas, revise o arquivo de configuração do Zabbix server para otimizar o número de verificações e processos simultâneos. Além disso, se necessário, certifique-se de que o limite de descritores de arquivos esteja definido suficientemente alto, verificando e ajustando os limites do sistema.
O processamento do valor do item é executado em várias etapas (ou fases) por vários processos. Isso pode causar:
UINT (um item trapper pode ser usado), o item dependente tem o tipo de valor TEXT.Como resultado, o item dependente recebe um valor, enquanto o item mestre muda seu estado para NÃO SUPORTADO.
CHAR for usado para o item mestre, então o valor do item mestre será truncado na fase de sincronização do histórico, enquanto os itens dependentes receberão seus valores a partir do valor inicial (não truncado) do item mestre.