É possível transmitir valores de item e eventos do Zabbix para sistemas externos via HTTP (consulte detalhes do protocolo).
O filtro de tags pode ser usado para transmitir subconjuntos de valores de item ou eventos.
Dois processos do Zabbix server são responsáveis pelo streaming de dados: connector manager e connector worker. Um item interno do Zabbix zabbix[connector_queue] permite monitorar a contagem de valores enfileirados na fila do conector.
As seguintes etapas são necessárias para configurar o streaming de dados para um sistema externo:
1. Tenha um sistema remoto configurado para receber dados do Zabbix. Para esse propósito, as seguintes ferramentas estão disponíveis:
events.ndjson e history.ndjson.2. Defina o número necessário de workers de conector no Zabbix ajustando o parâmetro StartConnectors no zabbix_server.conf. O número de workers de conector deve corresponder (ou exceder, se sessões concorrentes forem mais de 1) à contagem de conectores configurada no frontend do Zabbix. Em seguida, reinicie o Zabbix server.
3. Configure um novo conector no frontend do Zabbix (Administração → Geral → Conectores) e recarregue o cache do server com o comando zabbix_server -R config_cache_reload.

Campos obrigatórios são marcados com um asterisco.
| Parâmetro | Descrição |
|---|---|
| Nome | Informe o nome do conector. |
| Tipo de dado | Selecione o tipo de dado para streaming: Valores de item - faz streaming dos valores de item do Zabbix para sistemas externos; Eventos - faz streaming dos eventos do Zabbix para sistemas externos. |
| URL | Informe a URL do receiver. Macros de usuário são suportadas. |
| Filtro de tag | Exporte apenas valores de item ou eventos que correspondam ao filtro de tag. Se não definido, exporta tudo. É possível incluir ou excluir tags e valores de tag específicos. Várias condições podem ser definidas. A correspondência do nome da tag diferencia maiúsculas de minúsculas. Há vários operadores disponíveis para cada condição: Existe - inclui os nomes de tag especificados; Igual - inclui os nomes e valores de tag especificados (diferencia maiúsculas de minúsculas); Contém - inclui os nomes de tag especificados onde os valores de tag contêm a string inserida (correspondência de substring, não diferencia maiúsculas de minúsculas); Não existe - exclui os nomes de tag especificados; Não é igual - exclui os nomes e valores de tag especificados (diferencia maiúsculas de minúsculas); Não contém - exclui os nomes de tag especificados onde os valores de tag contêm a string inserida (correspondência de substring, não diferencia maiúsculas de minúsculas). Existem dois tipos de cálculo para as condições: E/Ou - todas as condições devem ser atendidas, condições com o mesmo nome de tag serão agrupadas pela condição Ou; Ou - basta que uma condição seja atendida. |
| Tipo de informação | Selecione o tipo de informação (numérico (sem sinal), numérico (float), caractere, etc.), pelo qual filtrar os valores de item que o conector deve transmitir. Este campo está disponível se o Tipo de dado estiver definido como "Valores de item". |
| Autenticação HTTP | Selecione a opção de autenticação: Nenhuma - nenhuma autenticação é usada; Básica - autenticação básica é usada; NTLM - autenticação NTLM (Windows NT LAN Manager) é usada; Kerberos - autenticação Kerberos é usada (veja também: Configurando Kerberos com Zabbix); Digest - autenticação Digest é usada; Bearer - autenticação Bearer é usada. |
| Nome de usuário | Informe o nome de usuário (até 255 caracteres). Macros de usuário são suportadas. Este campo está disponível se a Autenticação HTTP estiver definida como "Básica", "NTLM", "Kerberos" ou "Digest". |
| Senha | Informe a senha do usuário (até 255 caracteres). Macros de usuário são suportadas. Este campo está disponível se a Autenticação HTTP estiver definida como "Básica", "NTLM", "Kerberos" ou "Digest". |
| Token Bearer | Informe o token Bearer. Macros de usuário são suportadas. Este campo está disponível e é obrigatório se a Autenticação HTTP estiver definida como "Bearer". |
| Configuração avançada | Clique no rótulo Configuração avançada para exibir as opções de configuração avançada (veja abaixo). |
| Máx. registros por mensagem | Especifique o número máximo de valores ou eventos que podem ser transmitidos em uma mensagem. |
| Sessões concorrentes | Selecione o número de processos de envio a serem executados para este conector. Até 100 sessões podem ser especificadas; o valor padrão é "1". |
| Tentativas | Número de tentativas para transmitir dados. Até 5 tentativas podem ser especificadas; o valor padrão é "1". |
| Intervalo de tentativas | Especifique quanto tempo o conector deve aguardar após uma tentativa malsucedida de transmitir dados. Até 10s podem ser especificados; o valor padrão é "5s". Este campo está disponível se Tentativas estiver definido como "2" ou mais. Tentativas malsucedidas são aquelas em que o estabelecimento de uma conexão falhou ou quando o código de resposta HTTP não é 200, 201, 202, 203, 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, 422. Redirecionamentos são seguidos, então 302 -> 200 é uma resposta positiva; enquanto 302 -> 503 acionará uma nova tentativa. |
| Timeout | Especifique o timeout 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. |
| Proxy HTTP | Você pode especificar um proxy HTTP para usar 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 de proxy alternativos (o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Sem protocolo especificado, o proxy será tratado como um proxy HTTP. Por padrão, a porta 1080 será usada.Se Proxy HTTP for especificado, o proxy sobrescreverá as variáveis de ambiente relacionadas ao proxy, como http_proxy, HTTPS_PROXY. Se não for especificado, o proxy não sobrescreverá as variáveis de ambiente relacionadas ao proxy. O valor inserido é repassado como está, sem verificação de sanidade.Você também pode inserir um endereço de proxy SOCKS. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado. Observe que apenas autenticação simples é suportada com proxy HTTP. |
| Verificar SSL peer | Marque a caixa de seleção para verificar o certificado SSL do servidor web. O certificado do servidor será obtido automaticamente do local da autoridade de certificação (CA) do sistema. Você pode substituir o local dos arquivos CA usando o parâmetro de configuração do Zabbix server ou proxy SSLCALocation. |
| Verificar host SSL | 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. |
| Arquivo de certificado SSL | 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 Arquivo de chave SSL vazio. Se a chave estiver criptografada, especifique a senha no campo Senha da chave SSL. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy SSLCertLocation. |
| Arquivo de chave SSL | 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. |
| Senha da chave SSL | Senha do arquivo de chave privada SSL. Macros de usuário são suportadas. |
| Descrição | Informe a descrição do conector. |
| Habilitado | Marque a caixa de seleção para habilitar o conector. |
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.
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}A resposta consiste no código de status da resposta HTTP e no payload JSON. O código de status da resposta HTTP deve ser "200", "201", "202", "203" ou "204" para solicitações que foram tratadas com sucesso, outros para solicitações com falha.
Exemplo de sucesso:
Exemplo com erros: