Personalize o payload do HTTP POST
Defina o formato, o separador de linhas de log, o tamanho máximo e os headers do payload de um endpoint HTTP POST, no Azion Console ou com a Azion API.
Você pode personalizar o payload que um endpoint Standard HTTP/HTTPS POST recebe de um stream, no Azion Console ou com a Azion API. Para criar um stream que envia para um endpoint HTTP, com a fonte de dados e o template, consulte Envie logs para um endpoint HTTP.
O payload é o corpo de cada requisição POST que o Data Stream envia. Quatro campos do endpoint definem esse corpo: Payload Format, Payload Log Line Separator, Payload Max Size e Custom Headers. Nenhum outro tipo de endpoint tem esses campos. No formulário do stream, o endpoint é definido no campo Connector. O template decide quais variáveis cada linha de log carrega. Para todos os campos do payload e os limites de cada um, consulte Templates e payload.
Selecione a interface uma vez. Os pré-requisitos e todas as tarefas abaixo mostram só esse caminho.
Pré-requisitos
- Uma conta Azion com a permissão Edit Data Stream. Para as permissões, consulte Configurações do stream.
- Um workload na conta que recebe requisições.
- Uma URL HTTP ou HTTPS que aceita requisições
POST, e os headers que ela exige, como um token de autenticação.
- Acesso ao Azion Console. Para entrar, consulte Acessar Azion Console.
- Uma conta com menos de 3.000 workloads. A partir de 3.000 workloads, o Console bloqueia os formulários de stream, e você gerencia os streams só pela API.
Defina os campos do payload
Os campos ficam na seção Output do formulário do stream, em um stream que você cria ou em um que você edita. Com os valores padrão, o endpoint recebe NDJSON: uma linha de log por linha, sem colchetes e sem vírgula entre as linhas.
Para definir os campos do payload com a API, envie-os em outputs[0].attributes da requisição de criação. Este exemplo coleta as requisições de um workload com a fonte de dados Applications e o template 2, Applications Event Collector. Substitua <workload-id> pelo ID do seu workload e [TOKEN] pelo token que o seu endpoint espera:
Um 201 traz o stream, com os campos do payload como foram armazenados:
O stream existe com o payload que você enviou. Como ele usa um filtro de workloads, e não sampling, criá-lo não desativa nenhum outro stream.
Em JSON, "\\n" é a sequência de escape \n, o separador que o Console mostra por padrão. O campo headers é obrigatório, e {} não envia nenhum header. Uma requisição que omite os outros campos armazena $dataset, \n e um max_size igual a null. Para alterar o payload de um stream existente, envie uma requisição PATCH para /v4/workspace/stream/streams/<stream-id> com o array outputs inteiro.
Uma alteração no payload de um stream existente leva alguns minutos para se propagar. Salvar verifica o formato dos campos, não o endpoint, então uma URL ou um header errado aparece depois como envios com falha.
Envie as linhas de log como um único array JSON
Um receptor que lê cada corpo de requisição como um único documento JSON precisa das linhas de log em um array JSON, com colchetes em volta delas e uma vírgula entre elas. Dois campos mudam: Payload Format envolve $dataset em colchetes, e o separador passa a ser uma vírgula. Para ver os corpos NDJSON e array JSON lado a lado, consulte Templates e payload.
Para enviar um array JSON com a API, defina payload_format como [$dataset] e log_line_separator como , no endpoint do stream. O item de outputs fica assim:
Envie esse item no array outputs de uma requisição de criação, ou de uma requisição PATCH para /v4/workspace/stream/streams/<stream-id>. A partir daí, cada corpo de requisição é um único array JSON de linhas de log.
Confirme a entrega
O Real-Time Events registra cada envio de um stream, aceito ou não, com o status code que o seu endpoint retornou. Envie algumas requisições ao workload e aguarde cerca de um minuto. Um lote sai depois de 60 segundos, ou antes, ao chegar a 2.000 linhas de log ou ao Payload Max Size.
Para ler os envios com a API, consulte o dataset dataStreamedEvents da GraphQL API do Real-Time Events. Substitua as datas por um intervalo que inclua o momento em que você salvou o stream:
A API responde 200 com um registro para cada envio, do mais recente para o mais antigo:
Um statusCode 405 significa que o endpoint em url recusou o lote, e streamedLines dá o número de linhas de log dele. Um statusCode igual a 200 significa que o seu endpoint aceitou o lote. Uma lista dataStreamedEvents vazia significa que o stream não enviou nada no intervalo. Para todos os campos, consulte Campos GraphQL do Real-Time Events.
Um status diferente de 200, como 405, é a resposta do seu endpoint. Um 503 significa que o Data Stream encontrou o endpoint indisponível. Para as causas, consulte Solucionar problemas de Data Stream.