2 Transmitindo para sistemas externos
Visão geral
É possível transmitir valores de item e eventos do Zabbix para sistemas externos via HTTP (consulte os detalhes do protocolo).
O filtro de tags pode ser usado para transmitir subconjuntos de valores de item ou eventos.
Dois tipos de processos do Zabbix server são responsáveis pela transmissão de dados: connector manager e connector worker.
Um item interno do Zabbix, zabbix[connector_queue], permite monitorar a quantidade de valores enfileirados na fila do conector.
Configuração
As etapas a seguir são necessárias para configurar o streaming de dados para um sistema externo:
1. Ter um sistema remoto configurado para receber dados do Zabbix. Para esse fim, as seguintes ferramentas estão disponíveis:
- Um exemplo de um receiver simples que registra as informações recebidas nos arquivos
events.ndjsonehistory.ndjson. - Kafka connector for Zabbix server - um server leve escrito em Go, projetado para encaminhar valores de item e eventos de um Zabbix server para um broker Kafka.
2. Defina o número necessário de workers de connector no Zabbix ajustando o parâmetro StartConnectors em zabbix_server.conf.
O número de workers de connector deve corresponder (ou exceder, se as sessões simultâneas forem mais de 1) à contagem de connectors configurada no Zabbix frontend.
Em seguida, reinicie o Zabbix server.
3. Configure um novo connector no Zabbix frontend (Administration > General > Connectors) e recarregue o cache do server com o comando zabbix_server -R config_cache_reload.

Os campos obrigatórios são marcados com um asterisco.
| Parameter | Description |
|---|---|
| Name | Insira o nome do connector. |
| Data type | Selecione o tipo de dado para streaming: Item values - transmite valores de item do Zabbix para sistemas externos; Events - transmite eventos do Zabbix para sistemas externos. |
| URL | Insira a URL do receiver. Macros de usuário são suportadas. |
| Tag filter | Exporte apenas valores de item ou eventos que correspondam ao filtro de tags. Se não for definido, tudo será exportado. É possível incluir, bem como excluir, tags e valores de tag específicos. Várias condições podem ser definidas. A correspondência do nome da tag sempre diferencia maiúsculas de minúsculas. Há vários operadores disponíveis para cada condição: Exists - inclui os nomes de tag especificados; Equals - inclui os nomes e valores de tag especificados (diferencia maiúsculas de minúsculas); Contains - inclui os nomes de tag especificados em que os valores da tag contêm a string informada (correspondência por substring, sem diferenciar maiúsculas de minúsculas); Does not exist - exclui os nomes de tag especificados; Does not equal - exclui os nomes e valores de tag especificados (diferencia maiúsculas de minúsculas); Does not contain - exclui os nomes de tag especificados em que os valores da tag contêm a string informada (correspondência por substring, sem diferenciar maiúsculas de minúsculas). Há dois tipos de cálculo para as condições: And/Or - todas as condições devem ser atendidas; condições com o mesmo nome de tag serão agrupadas pela condição Or; Or - basta que uma condição seja atendida. |
| Type of information | Selecione o tipo de informação (numérico (sem sinal), numérico (float), caractere etc.) pelo qual filtrar os valores de item que o connector deve transmitir. Este campo está disponível se Data type estiver definido como "Item values". |
| HTTP authentication | Selecione a opção de autenticação: None - nenhuma autenticação é usada; Basic - autenticação básica é usada; NTLM - autenticação NTLM (Windows NT LAN Manager) é usada; Kerberos - autenticação Kerberos é usada (veja também: Configuring Kerberos with Zabbix); Digest - autenticação Digest é usada; Bearer - autenticação Bearer é usada. |
| Username | Insira o nome de usuário (até 255 caracteres). Macros de usuário são suportadas. Este campo está disponível se HTTP authentication estiver definido como "Basic", "NTLM", "Kerberos" ou "Digest". |
| Password | Insira a senha do usuário (até 255 caracteres). Macros de usuário são suportadas. Este campo está disponível se HTTP authentication estiver definido como "Basic", "NTLM", "Kerberos" ou "Digest". |
| Bearer token | Insira o token Bearer. Macros de usuário são suportadas. Este campo está disponível e é obrigatório se HTTP authentication estiver definido como "Bearer". |
| Advanced configuration | Clique no rótulo Advanced configuration para exibir as opções de configuração avançada (veja abaixo). |
| Max records per message | Especifique o número máximo de valores ou eventos que podem ser transmitidos em uma única mensagem. |
| Concurrent sessions | Selecione o número de processos de envio a serem executados para este connector. É possível especificar até 100 sessões; o valor padrão é "1". |
| Attempts | Número de tentativas para transmitir dados. É possível especificar até 5 tentativas; o valor padrão é "1". |
| Attempt interval | Especifique quanto tempo o connector deve aguardar após uma tentativa malsucedida de transmitir dados. É possível especificar até 10s; o valor padrão é "5s". Este campo está disponível se Attempts estiver definido como "2" ou mais. Tentativas malsucedidas são aquelas em que o estabelecimento de uma conexão falhou ou em que o código de resposta HTTP não é 200, 201, 202, 203, 204. Novas tentativas são acionadas em caso de erros de comunicação ou quando o código de resposta HTTP não é 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415, 422. Redirecionamentos são seguidos, portanto 302 -> 200 é uma resposta positiva; enquanto 302 -> 503 acionará uma nova tentativa. |
| Timeout | Especifique o tempo limite da mensagem (1-60 segundos, padrão - 5 segundos). Sufixos de tempo são suportados, por exemplo, 30s, 1m. Macros de usuário são suportadas. |
| HTTP proxy | Você pode especificar um HTTP proxy a ser usado no seguinte formato:[protocol://][username[:password]@]proxy.example.com[:port]Macros de usuário são suportadas. O prefixo opcional protocol:// pode ser usado para especificar protocolos alternativos de proxy (o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Se nenhum protocolo for especificado, o proxy será tratado como um HTTP proxy. Por padrão, a porta 1080 será usada.Se HTTP proxy for especificado, o proxy substituirá variáveis de ambiente relacionadas a proxy, como http_proxy, HTTPS_PROXY. Se não for especificado, o proxy não substituirá variáveis de ambiente relacionadas a proxy. O valor informado é passado como está, sem qualquer verificação de consistência.Você também pode inserir um endereço de proxy SOCKS. Se você especificar o protocolo errado, o connector não conseguirá transmitir valores de item ou eventos do Zabbix. Observe que apenas autenticação simples é suportada com HTTP proxy. |
| SSL verify peer | Marque a caixa de seleção para verificar o certificado SSL do servidor web. O certificado do server será obtido automaticamente do local de autoridade certificadora (CA) do sistema. Você pode substituir o local dos arquivos de CA usando o parâmetro de configuração do Zabbix server ou proxy SSLCALocation. |
| SSL verify host | Marque a caixa de seleção para verificar se o campo Common Name ou o campo Subject Alternate Name do certificado do servidor web corresponde. Isso define a opção cURL CURLOPT_SSL_VERIFYHOST. |
| SSL certificate file | Nome do arquivo de certificado SSL usado para autenticação do cliente. O arquivo de certificado deve estar no formato PEM1. Macros de usuário são suportadas. Se o arquivo de certificado também contiver a chave privada, deixe o campo SSL key file vazio. Se a chave estiver criptografada, especifique a senha no campo SSL key password. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy SSLCertLocation. |
| SSL key file | Nome do arquivo de chave privada SSL usado para autenticação do cliente. O arquivo de chave privada deve estar no formato PEM1. Macros de usuário são suportadas. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy SSLKeyLocation. |
| SSL key password | Senha do arquivo de chave privada SSL. Macros de usuário são suportadas. |
| Description | Insira a descrição do connector. |
| Enabled | Marque a caixa de seleção para habilitar o connector. |
Quando o Kafka connector é configurado com uma lista de endereços de brokers bootstrap separados por vírgula (por exemplo, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), o cliente Kafka se conecta ao(s) broker(s) que respondem primeiro e usa seus metadados de cluster.
Se a lista contiver endereços de diferentes clusters Kafka, apenas o cluster com resposta mais rápida será usado, e os outros endereços serão registrados como indisponíveis; como resultado, avisos na inicialização como o seguinte podem aparecer mesmo que o connector esteja conectado:
kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail
Em alguns ambientes (redes privadas, redes de contêineres ou configurações não padrão de DNS/hosts), nomes de host ou IPs podem ser resolvidos para endereços de loopback (por exemplo, 127.0.0.1/localhost) ou ser normalizados pelo cliente, o que pode tornar esses avisos enganosos.
Para reduzir a confusão, certifique-se de que todos os endereços Kafka.URL pertençam ao mesmo cluster Kafka, verifique a resolução DNS a partir do host do connector e os advertised.listeners dos brokers, e prefira endereços que sejam resolvidos para o endereço anunciado do broker.
Protocolo
A comunicação entre o server e o receptor é feita via HTTP usando REST API, NDJSON, "Content-Type: application/x-ndjson".
Para mais detalhes, consulte Protocolo de exportação JSON delimitado por nova linha.
Solicitação do servidor
Exemplo de transmissão de valores de item:
POST /v1/history HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 628
Content-Type: application/x-ndjson
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}
Exemplo de transmissão de eventos:
POST /v1/events HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 333
Content-Type: application/x-ndjson
{"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger for foo being 0","severity":0,"hosts":[{"host":"Zabbix server","name":"Zabbix server"}],"groups":["Zabbix servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
{"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
Resposta do receiver
A resposta consiste no código de status da resposta HTTP e na carga JSON. O código de status da resposta HTTP deve ser "200", "201", "202", "203" ou "204" para requisições processadas com sucesso; qualquer outro indica falha na requisição.
Exemplo de sucesso:
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 10:13:04 GMT
Content-Length: 23
{"response":"success"}
Exemplo com erros:
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 12:15:01 GMT
Content-Length: 55
{"error":"invalid character '{' after top-level value"}