CIRCUITO
CARIOCA TI · DOCUMENTAÇÃO
♙
Zabbix · Performance

Capacity planning e escala

Dimensione Server, Proxy, banco, processos, caches e armazenamento pela carga real e pelo NVPS.

zabbix://capacity-planning
$ branch: 7.4
$ topic: Capacity planning e escala
$ mode: production
$ method: evidence-first_
NVPS Valores novos processados por segundo.
Processes Concorrência por tipo de trabalho.
Cache Memória reduz pressão e espera.
Database Principal componente de persistência.
Retention Tempo multiplica volume armazenado.
01 · Regra principal

Quantidade de hosts não é unidade suficiente de capacidade

Um host pode possuir dez itens a cada cinco minutos ou milhares de itens a cada poucos segundos. Dimensionamento precisa partir de itens habilitados, intervalos, tipos de coleta, preprocessing, triggers, history, trends e eventos.

02 · NVPS

New values per second aproxima a pressão de ingestão

NVPS representa a taxa de novos valores processados pelo Zabbix. É uma das métricas mais úteis para compreender escala, mas não descreve sozinha custo de polling, preprocessing, discovery, trigger evaluation ou consultas ao banco.

03 · Cálculo inicial

Intervalo de atualização transforma itens em taxa

Como aproximação, um item coletado a cada 60 segundos produz 1/60 valor por segundo. Multiplique pelo número de itens equivalentes e some grupos com intervalos diferentes. O resultado ajuda a estimar ingestão antes da implantação.

04 · Distribuição temporal

Média pode esconder picos sincronizados

Se milhares de itens executam no mesmo segundo, a média por minuto parece aceitável enquanto pollers e banco enfrentam burst. Use scheduling, intervalos flexíveis e distribuição natural para evitar sincronização artificial.

05 · Tipo de item

Dois itens com o mesmo intervalo podem ter custos muito diferentes

Simple check, SNMP, agent, HTTP agent, script, database monitor, browser item e external check possuem perfis distintos de CPU, rede, latência e concorrência. Capacity planning precisa separar workload por classe.

06 · Pollers

Processos ocupados indicam gargalo de concorrência

Zabbix utiliza diferentes tipos de processos internos. Quando uma classe permanece muito ocupada, a fila pode crescer mesmo com CPU global aparentemente baixa. Ajuste processos somente depois de identificar qual workload está esperando.

07 · Busy processes

Percentual alto persistente merece investigação

Métricas internas de utilização dos processos ajudam a localizar saturação. Picos curtos podem ser normais; ocupação próxima do limite por períodos prolongados sugere concorrência insuficiente, checks lentos ou dependência externa degradada.

08 · Mais processos

Aumentar processos não cria recursos infinitos

Elevar pollers pode reduzir fila, mas também aumentar conexões simultâneas, CPU, memória e pressão no banco ou nos dispositivos monitorados. Tuning deve observar o sistema inteiro e não apenas fazer um gráfico ficar verde.

09 · Queue

Fila é atraso entre o momento esperado e a coleta

A Zabbix queue mostra itens que deveriam ter sido atualizados e estão atrasados. Crescimento contínuo é um dos sinais mais claros de capacidade insuficiente, checks lentos, indisponibilidade de destinos ou configuração incorreta.

10 · Queue por tipo

Segmentar atraso acelera diagnóstico

Observe se o atraso se concentra em SNMP, agent, simple checks ou outra classe. Uma fila global pode sugerir Server sobrecarregado; fila concentrada em um método normalmente aponta para processo, rede ou tecnologia específica.

11 · Cache

Caches reduzem trabalho repetitivo e acesso ao banco

O Server possui caches para diferentes estruturas e fluxos. Quando um cache se aproxima do limite ou fica sem espaço, desempenho pode degradar. Dimensione memória com margem e acompanhe utilização real por métricas internas.

12 · Configuration cache

Configuração cresce com hosts, itens e objetos

Configuration cache mantém dados necessários para operação do Server. Ambientes com grande número de itens, triggers, macros e discovery podem exigir aumento do cache. Mudanças estruturais devem ser acompanhadas por tendência de uso.

13 · Value cache

Value cache acelera funções que consultam valores recentes

Trigger expressions e cálculos podem reutilizar valores recentes. Value cache reduz consultas repetidas ao banco. Pressão elevada ou modo de baixa memória indica que o tamanho precisa ser revisto ou que expressões estão demandando mais histórico recente.

14 · History cache

Ingestão precisa absorver valores antes da persistência

Caches ligados a history ajudam a desacoplar recebimento e gravação. Saturação pode aparecer quando banco não acompanha a taxa ou durante picos. A causa pode estar na persistência, não necessariamente na coleta.

15 · Trend cache

Trends também possuem custo de agregação

Valores numéricos podem gerar trends para análise de longo prazo. Isso reduz necessidade de manter history granular por anos, mas adiciona processamento e armazenamento próprios. Planeje history e trends como camadas diferentes.

16 · Banco

Na maioria dos ambientes grandes, banco define o teto prático

O banco recebe history, trends, events, audit e configuração. IOPS, latency, cache do SGBD, índices, WAL/binlog, checkpoint e storage influenciam diretamente a capacidade do Zabbix. CPU do Server sozinha não explica desempenho.

17 · Write workload

Zabbix é intensivo em escrita

History produz fluxo contínuo de inserts. Em alta escala, storage com baixa latência e configuração adequada do SGBD são essenciais. O padrão é diferente de aplicações predominantemente de leitura.

18 · Read workload

Dashboards e funções também pressionam leitura

Consultas de gráficos, latest data, relatórios, trigger functions e API podem competir com ingestão. Um ambiente pode coletar normalmente e ficar lento para usuários por saturação de leitura ou queries pesadas.

19 · History

Retenção granular é multiplicador direto de storage

Guardar 90 dias de history consome aproximadamente três vezes o espaço de 30 dias para a mesma taxa, antes de considerar compressão e overhead. Defina retenção pelo uso real e não por hábito.

20 · Trends

Longo prazo não precisa necessariamente de granularidade bruta

Trends armazenam agregações horárias de itens numéricos e são adequadas para análise de longo período quando detalhes por amostra não são necessários. Isso permite reduzir history sem perder visão histórica de capacidade.

21 · Housekeeper

Remoção de dados também consome recursos

Housekeeping precisa eliminar dados expirados e objetos órfãos conforme configuração. Grandes volumes de exclusão podem causar pressão no banco. Retenção deve ser desenhada antes de o banco crescer, não depois.

22 · TimescaleDB

Particionamento e compressão podem mudar a economia de retenção

Em PostgreSQL, TimescaleDB é uma opção suportada em cenários documentados e pode oferecer particionamento temporal e compressão. A adoção precisa seguir versões suportadas e configuração oficial; não é substituto automático para bom desenho de retenção.

23 · Partitioning

Partições tornam lifecycle de dados mais previsível

Em bancos e arquiteturas que utilizam particionamento suportado, remover intervalos inteiros pode ser mais eficiente do que milhões de deletes individuais. Porém schema e manutenção precisam seguir práticas compatíveis com Zabbix.

24 · Storage

Capacidade em GB não é o mesmo que desempenho

Dois discos com 2 TB podem oferecer latências e IOPS completamente diferentes. Zabbix precisa de espaço e também de desempenho consistente. Observe latency de storage, queue depth, fsync e comportamento durante checkpoints.

25 · WAL e binlog

Replicação aumenta tráfego de escrita

HA do banco, backups contínuos e replicação geram WAL/binlog adicionais. Capacity planning precisa incluir esse fluxo, principalmente em NVPS alto. Storage do primário e rede de réplica precisam acompanhar.

26 · Backup

Janela de backup não pode degradar o monitoramento

Backup lógico ou físico pode aumentar I/O, CPU e tráfego. Meça impacto durante a janela e prefira estratégias compatíveis com o SGBD e o RPO. Backup que derruba ingestão toda madrugada é problema de capacidade.

27 · Preprocessing

Transformação de dados possui orçamento computacional

JSONPath, regex, JavaScript, Prometheus preprocessing e outras etapas consomem CPU e processos especializados. Uma resposta grande transformada centenas de vezes por segundo pode ser mais cara que a coleta em si.

28 · Dependent items

Uma coleta master pode reduzir pressão externa

Dependent items permitem consultar uma API, SNMP walk ou payload uma vez e derivar múltiplas métricas. Isso reduz requests aos alvos e pode melhorar escala, embora aumente trabalho de preprocessing local.

29 · JavaScript

Flexibilidade precisa de disciplina

JavaScript em preprocessing e scripts é poderoso, mas lógica complexa executada em alta frequência pode consumir recursos. Prefira operações nativas simples quando suficientes e meça tempo de processamento.

30 · LLD

Discovery cria crescimento dinâmico

Low-level discovery pode multiplicar itens, triggers e graphs conforme interfaces, filesystems, VMs ou entidades descobertas. Um template aparentemente pequeno pode gerar milhares de objetos por host. Estime cardinalidade antes de aplicar em massa.

31 · LLD filters

Descobrir tudo é frequentemente desperdício

Filtre interfaces administrativas, filesystems irrelevantes, containers efêmeros ou entidades sem valor operacional. Menor cardinalidade reduz configuração, NVPS, banco e ruído de eventos.

32 · Discovery lifetime

Objetos perdidos também possuem ciclo de vida

Recursos efêmeros desaparecem e podem deixar objetos descobertos por determinado período. Ajuste lifetime conforme dinâmica do ambiente. Retenção longa de entidades que duram minutos pode inflar configuração.

33 · Triggers

Cada valor pode iniciar avaliação lógica

Triggers simples têm custo pequeno, mas milhares de expressões complexas, funções históricas e dependências podem aumentar trabalho. Avalie se toda métrica realmente precisa de trigger e se a expressão usa janela coerente.

34 · Events

Tempestade de problemas é problema de capacidade também

Uma falha de backbone pode criar milhares de eventos e notificações. Dependências, correlação e Services reduzem ruído humano e também evitam trabalho desnecessário em Actions, webhooks e banco.

35 · Tags

Cardinalidade de metadados também precisa de padrão

Tags facilitam correlação e Services, mas nomenclatura descontrolada cria combinações inconsistentes e consultas difíceis. Defina vocabulário para site, service, operator, environment e owner.

36 · Proxies

Distribua coleta perto da origem

Proxies reduzem conexões diretas ao Server, agregam coleta regional e bufferizam dados. Eles não eliminam carga final de history no banco, mas distribuem polling, preprocessing suportado e dependência de WAN.

37 · Proxy sizing

Proxy deve ser dimensionado pelo workload local

Considere NVPS, tipos de checks, quantidade de hosts, discovery, preprocessing, banco local e tempo de buffer. Um Proxy para 500 roteadores SNMP pode ter perfil diferente de um Proxy para 500 servidores com Agent 2.

38 · Proxy groups

Redundância exige capacidade ociosa

Quando proxies de um grupo podem assumir hosts uns dos outros, cada membro precisa suportar carga adicional durante falha. Planeje N+1 ou outra política explícita. Operar todos no limite elimina a vantagem do failover.

39 · Network

Coleta também é tráfego

NVPS elevado através de links WAN, VPN ou satélite pode ser relevante, principalmente com payloads HTTP, logs e SNMP walks. Meça bytes e não apenas valores. Compressão e coleta local via Proxy podem reduzir dependência de WAN.

40 · Logs

Itens de log têm perfil diferente de métricas periódicas

Log monitoring pode produzir bursts imprevisíveis. Um incidente pode aumentar justamente o volume de logs quando a infraestrutura já está degradada. Defina filtros, limites e retenção para evitar amplificação.

41 · Trapper e sender

Push desloca polling, não elimina ingestão

Zabbix trapper e sender podem receber grandes volumes sem polling tradicional. Isso reduz processos de coleta ativa, mas history syncers, preprocessing e banco continuam precisando absorver os valores.

42 · API

Automação também consome capacidade

Consultas frequentes de API, especialmente history.get ou buscas amplas, podem pressionar frontend/Server/banco. Integrações devem usar filtros, paginação e frequência coerentes. Não transforme API em exportador bruto contínuo sem medir impacto.

43 · Dashboard

Painel operacional pode virar carga de leitura

Dashboards com muitos widgets, gráficos extensos e refresh agressivo multiplicados por dezenas de operadores aumentam consultas. Observe desempenho do frontend e banco em horários de NOC ativo.

44 · Growth model

Capacidade precisa prever crescimento, não apenas fotografar hoje

Projete hosts, itens, NVPS, storage e eventos para 6, 12 e 24 meses. Inclua novos projetos e margem. Comprar recurso somente quando queue aparece transforma planejamento em resposta a incidente.

45 · Headroom

Operar no limite impede absorver falhas e picos

Mantenha margem para discovery, incidentes, catch-up de proxies, manutenção e perda de nó HA. O percentual adequado depende da arquitetura, mas 100% de utilização nunca é capacidade saudável.

46 · Benchmark

Teste com workload parecido com produção

Benchmarks genéricos de hardware têm valor limitado. Reproduza templates, intervalos, payloads, banco e retenção próximos do real. O melhor sizing é aquele validado com a sua distribuição de carga.

47 · Estimativa de NVPS

Transforme inventário em taxa

Exemplo:

20.000 itens @ 60s
20.000 / 60 = 333 NVPS

8.000 itens @ 30s
8.000 / 30 = 267 NVPS

2.000 itens @ 10s
2.000 / 10 = 200 NVPS

Total aproximado:
333 + 267 + 200
= 800 NVPS

Depois adicionar:
+ dependent items
+ trapper/sender
+ discovery
+ bursts
+ crescimento
+ margem operacional
48 · Modelo de retenção

History cresce quase linearmente com tempo e taxa

VALORES/DIA

NVPS × 86.400

Exemplo:
800 × 86.400
= 69.120.000 valores/dia

30 dias:
≈ 2,07 bilhões de valores

90 dias:
≈ 6,22 bilhões de valores

IMPORTANTE:
isso é quantidade de registros, não bytes.

Storage real depende de:
- tipo de valor
- engine
- índices
- páginas
- compressão
- WAL/binlog
- replicação
- overhead
- events/trends/audit
49 · Retenção por valor

Nem toda métrica merece a mesma retenção

ClasseHistory exemploTrends exemploRacional
Interface crítica30–90 dias1–3 anosTroubleshooting + capacidade
CPU/memória30 dias1 anoDetalhe recente, tendência longa
Estado binário30–90 diasConforme utilidadeIncidentes e auditoria
Payload master0–1 diaNãoSomente fonte para dependents
Versão/configuraçãoDescartar inalteradoNãoMudança é o evento útil
Debug temporárioHoras/diasNãoEvitar armazenamento permanente

Valores são exemplos. Retenção real deve seguir troubleshooting, compliance, SLO e custo.

50 · Diagnóstico de saturação

Sintoma → provável camada

SintomaInvestigar primeiro
Queue crescePollers, rede, checks lentos
History cache pressionaBanco/history sync
Value cache low memoryCache e trigger functions
Frontend lentoDB reads, PHP, widgets
Proxy backlog cresceWAN, Server, buffer
CPU alta no ServerPreprocessing, triggers, processes
DB I/O altoHistory, checkpoints, housekeeping
Eventos explodemDependências/correlação/triggers
Só SNMP atrasaSNMP pollers/rede/dispositivos
Após outage tudo saturaCatch-up sem headroom
51 · Modelo de crescimento

Planeje 6, 12 e 24 meses

IndicadorHoje12 meses24 meses
Hosts5.0007.50011.000
Itens350k525k770k
NVPS3.0004.5006.600
Proxies5710
History/dia259M389M570M

Tabela ilustrativa. O valor está no método: projetar carga e validar antes do crescimento chegar.

52 · Fluxo de capacidade

O gargalo pode estar em qualquer estágio

DISPOSITIVOS / APPS
        │
        ▼
  POLLERS / TRAPPERS
        │
        ▼
   PREPROCESSING
        │
        ▼
     CACHES
        │
        ▼
 TRIGGER EVALUATION
        │
        ▼
 HISTORY SYNCERS
        │
        ▼
     DATABASE
        │
   ┌────┴────┐
   ▼         ▼
HISTORY    TRENDS
   │
   ▼
API / DASHBOARDS / REPORTS

Capacity planning =
medir cada etapa + encontrar o recurso limitante.
53 · Anti-patterns

Como desperdiçar capacidade

Dimensionar por hosts Ignora quantidade e frequência dos itens.
Tudo a cada 10s Multiplica NVPS sem necessidade.
History de 365 dias para tudo Storage cresce sem valor equivalente.
Uma API call por campo Desperdiça rede e processamento externo.
LLD sem filtros Explode cardinalidade.
Aumentar pollers cegamente Move gargalo para DB/rede/alvo.
Ignorar queue Perde o melhor sinal de atraso.
DB em storage lento Ingestão sofre mesmo com CPU livre.
Dashboard com refresh agressivo Pressiona leitura desnecessariamente.
Sem margem N+1 Failover causa saturação.
Proxy sem cálculo de buffer Outage maior causa perda.
Planejar só quando degrada Capacity vira incidente.
54 · Laboratório de sizing

Meça antes de aumentar hardware

1. Inventário Conte hosts, itens e intervalos.
2. NVPS Calcule ingestão teórica e compare com real.
3. Queue Observe atraso por classe.
4. Processes Identifique processos ocupados.
5. Cache Verifique utilização e low-memory.
6. DB Meça latency, IOPS, CPU e crescimento.
7. Retention Classifique dados por necessidade.
8. LLD Meça objetos gerados por template.
9. Failure Simule perda de Proxy/nó e catch-up.
10. Growth Projete 12 e 24 meses com margem.
55 · Checklist de produção

Capacity planning baseado em evidência

✓ NVPS atual é conhecido
✓ NVPS projetado para 12/24 meses existe
✓ Quantidade de itens habilitados é conhecida
✓ Intervalos de coleta foram revisados
✓ Queue é monitorada por classe
✓ Busy processes são acompanhados
✓ Caches possuem margem
✓ Banco possui métricas próprias
✓ Latency e IOPS do storage são observados
✓ History possui política por classe de dado
✓ Trends são usados para longo prazo quando adequados
✓ Housekeeping foi considerado
✓ TimescaleDB/particionamento seguem suporte oficial quando usados
✓ LLD possui filtros e lifetime coerentes
✓ Dependent items reduzem coletas repetidas
✓ Preprocessing pesado é medido
✓ API integrations usam filtros e frequência adequada
✓ Dashboards não geram leitura excessiva
✓ Proxies são dimensionados por workload
✓ Buffer de Proxy cobre outage planejado
✓ Capacidade N+1 foi validada
✓ Catch-up pós-outage foi testado
✓ Existe headroom para picos
✓ Crescimento é revisado periodicamente
56 · Referências técnicas

Base factual

Conteúdo estruturado sobre métricas internas, processos, caches, queue, proxies, preprocessing, dependent items, LLD, history, trends e armazenamento no ecossistema Zabbix 7.4. Os modelos de NVPS, retenção, crescimento, headroom, N+1, diagnóstico de gargalos e metodologia de sizing são síntese de engenharia de capacidade aplicada a ambientes Zabbix.

PRÓXIMA PÁGINA

Observabilidade

Métricas isoladas mostram sintomas. A próxima página conecta métricas, logs, eventos, topologia, serviços e contexto operacional para reduzir o tempo entre detecção e causa provável.

Continuar →
Atualização editorial 2026

Linha Zabbix 7.4

Dimensione por NVPS, tipo/frequência de checks, preprocessing, quantidade de valores, retenção e comportamento do banco. Contagem de hosts isoladamente é um indicador fraco de capacidade.

Recursos e limites sensíveis à versão devem ser confirmados contra o patch exato instalado antes de mudanças em produção.