Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

2 Transmitindo para sistemas externos

Visão geral

É 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.

Configuração

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:

  • Um exemplo de receiver simples que registra as informações recebidas nos arquivos events.ndjson e history.ndjson.
  • Conector Kafka para o Zabbix server - um servidor leve escrito em Go, projetado para encaminhar valores de items e eventos de um Zabbix server para um broker Kafka.

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çãoGeralConectores) 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.

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 receptor

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:

localhost:8080/v1/history": HTTP/1.1 200 OK
       Date: Wed, 11 Jan 2023 16:40:30 GMT
       Content-Length: 0

Exemplo com erros:

localhost:8080/v1/history": HTTP/1.1 422 Unprocessable Entity
       Content-Type: application/json
       Date: Wed, 11 Jan 2023 17:07:36 GMT
       Content-Length: 55
        
       {"error":"invalid character '{' after top-level value"}