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. Configure um sistema remoto para receber dados do Zabbix. Para isso, estão disponíveis as seguintes ferramentas:
- Um exemplo de 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 server Zabbix para um broker Kafka.
2. Defina no Zabbix o número necessário de workers do connector ajustando o parâmetro StartConnectors em zabbix_server.conf.
O número de workers do connector deve corresponder ao número de connectors configurado no frontend do Zabbix (ou ser maior, se houver mais de uma sessão simultânea).
Em seguida, reinicie o server Zabbix.
3. Configure um novo connector no frontend do Zabbix (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.
| Parâmetro | Descrição |
|---|---|
| Name | Insira o nome do connector. |
| Data type | Selecione o tipo de dados a transmitir: 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 compatíveis. |
| Tag filter | Exporte somente valores de item ou eventos que correspondam ao filtro de tags. Se não for definido, tudo será exportado. É possível incluir e excluir tags e valores de tags específicos. Várias condições podem ser definidas. A correspondência de nomes de tags sempre diferencia maiúsculas de minúsculas. Há vários operadores disponíveis para cada condição: Exists - inclui os nomes de tags especificados; Equals - inclui os nomes e valores de tags especificados (diferencia maiúsculas de minúsculas); Contains - inclui os nomes de tags especificados nos quais os valores de tags contêm a string inserida (correspondência de substring, sem diferenciação entre maiúsculas e minúsculas); Does not exist - exclui os nomes de tags especificados; Does not equal - exclui os nomes e valores de tags especificados (diferencia maiúsculas de minúsculas); Does not contain - exclui os nomes de tags especificados nos quais os valores de tags contêm a string inserida (correspondência de substring, sem diferenciação entre maiúsculas e minúsculas). Há dois tipos de cálculo para as condições: And/Or - todas as condições devem ser atendidas; as 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érica (sem sinal), numérica (ponto flutuante), caractere etc.) pelo qual filtrar os valores de item que o connector deve transmitir. Este campo está disponível quando Data type está definido como "Item values". |
| HTTP authentication | Selecione a opção de autenticação: None - nenhuma autenticação é usada; Basic - é usada autenticação básica; NTLM - é usada autenticação NTLM (Windows NT LAN Manager); Kerberos - é usada autenticação Kerberos (consulte também: Configurando o Kerberos com o Zabbix); Digest - é usada autenticação Digest; Bearer - é usada autenticação Bearer. |
| Username | Insira o nome de usuário (até 255 caracteres). Macros de usuário são compatíveis. Este campo está disponível quando HTTP authentication está definido como "Basic", "NTLM", "Kerberos" ou "Digest". |
| Password | Insira a senha do usuário (até 255 caracteres). Macros de usuário são compatíveis. Este campo está disponível quando HTTP authentication está definido como "Basic", "NTLM", "Kerberos" ou "Digest". |
| Bearer token | Insira o token Bearer. Macros de usuário são compatíveis. Este campo está disponível e é obrigatório quando HTTP authentication está definido como "Bearer". |
| Advanced configuration | Clique no cabeçalho Advanced configuration para exibir as opções de configuração avançada (consulte abaixo). |
| Max records per message | Especifique o número máximo de valores ou eventos que podem ser transmitidos em uma mensagem. |
| Concurrent sessions | Selecione o número de processos de envio a serem executados para este connector. Podem ser especificadas até 100 sessões; o valor padrão é "1". |
| Attempts | Número de tentativas de transmissão de dados. Podem ser especificadas 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. Podem ser especificados até 10s; o valor padrão é "5s". Este campo está disponível quando Attempts está definido como "2" ou mais. Tentativas malsucedidas são aquelas em que não foi possível estabelecer uma conexão ou em que o código de resposta HTTP não é 200, 201, 202, 203 ou 204. As 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 ou 422. Os 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 compatíveis (por exemplo, 30s, 1m). Macros de usuário são compatíveis. |
| HTTP proxy | Você pode especificar um proxy HTTP no seguinte formato:[protocol://][username[:password]@]proxy.example.com[:port]Macros de usuário são compatíveis. O prefixo opcional protocol:// pode ser usado para especificar protocolos de proxy alternativos (o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Quando nenhum protocolo é especificado, o proxy será tratado como um proxy HTTP. Por padrão, será usada a porta 1080.Se HTTP proxy for especificado, o proxy substituirá variáveis de ambiente relacionadas a proxy, como http_proxy e HTTPS_PROXY. Se não for especificado, o proxy não substituirá as variáveis de ambiente relacionadas a proxy. O valor inserido é transmitido como está; nenhuma verificação de validade é realizada.Você também pode inserir um endereço de proxy SOCKS. Se especificar o protocolo incorreto, o connector não conseguirá transmitir valores de item ou eventos do Zabbix. Observe que somente a autenticação simples é compatível com proxy HTTP. |
| SSL verify peer | Marque a caixa de seleção para verificar o certificado SSL do web server. O certificado do server será obtido automaticamente do local de autoridade certificadora (CA) em todo o sistema. Você pode substituir o local dos arquivos CA usando o parâmetro de configuração SSLCALocation do server ou proxy do Zabbix. |
| SSL verify host | Marque a caixa de seleção para verificar se o campo Common Name ou Subject Alternate Name do certificado do web server corresponde. Isso define a opção CURLOPT_SSL_VERIFYHOST do cURL. |
| 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 compatíveis. 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 esse arquivo é especificado pelo parâmetro de configuração SSLCertLocation do server ou proxy do Zabbix. |
| 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 compatíveis. O diretório que contém esse arquivo é especificado pelo parâmetro de configuração SSLKeyLocation do server ou proxy do Zabbix. |
| SSL key password | Senha do arquivo de chave privada SSL. Macros de usuário são compatíveis. |
| 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 de inicialização separados por vírgulas (por exemplo, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), o cliente Kafka se conecta ao broker ou brokers que respondem primeiro e usa os metadados do cluster.
Se a lista contiver endereços de diferentes clusters Kafka, somente o cluster que responder mais rapidamente será usado, e os outros endereços serão registrados como indisponíveis; como resultado, avisos de inicialização como o seguinte podem aparecer mesmo quando o connector está 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 containers ou configurações não padrão de DNS/hosts), os nomes de host ou IPs podem ser resolvidos para endereços de loopback (por exemplo, 127.0.0.1/localhost) ou 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 pelo 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"}