Depure functions com o Data Stream
Envie as mensagens de log das suas functions, com o nível e o ID da requisição, para um endpoint com Data Stream, no Azion Console ou pela Azion API.
Você pode enviar as mensagens de log das suas functions para um endpoint com um stream do Data Stream, pelo Azion Console ou pela Azion API. Para rastrear quais regras do Rules Engine rodaram em uma requisição, consulte Depure regras criadas com Rules Engine.
Uma function escreve mensagens de log com console.log. A fonte de dados Functions traz cada mensagem com o nível, a origem e o ID da requisição, e o template Functions Event Collector coloca cada mensagem em uma linha de log própria. Para conhecer todas as variáveis da fonte de dados, consulte Fontes de dados e variáveis.
Selecione sua interface uma vez. Os pré-requisitos e todas as tarefas abaixo mostram apenas esse caminho.
Pré-requisitos
- Uma conta Azion com a permissão Edit Data Stream. Para as permissões, consulte Configurações do stream.
- Uma function que escreve mensagens de log com
console.log, rodando em uma aplicação servida por um workload. Para criar uma, consulte Functions. - Um endpoint que recebe as linhas de log, como um endpoint HTTP. Para os endpoints aos quais um stream pode enviar, consulte Endpoints.
- Acesso ao Azion Console. Para entrar, consulte Como acessar o Azion Console.
Crie o stream
O stream lê a fonte de dados Functions de um workload por meio de um filtro de workloads. Diferente de sampling, um filtro de workloads mantém seus outros streams ativos.
Para criar o stream com a API, envie uma requisição POST para https://api.azion.com/v4/workspace/stream/streams. Este exemplo envia as linhas de log para um endpoint HTTP. Substitua <workload-id> pelo ID do seu workload, e a url e o header pelos valores do seu endpoint:
A fonte de dados functions_console é Functions no Console, e o template 86 é Functions Event Collector. Uma resposta 201 traz o stream armazenado em data. Guarde o id dele: ele identifica o stream em todas as requisições seguintes, como /v4/workspace/stream/streams/<stream-id>. Para todas as chaves do corpo, consulte Configurações do stream.
Salvar o stream verifica o formato de cada campo e não contata o endpoint. Uma URL ou uma credencial errada só aparece quando o stream envia. Uma ativação passa a valer depois de um a dois minutos.
Confirme a entrega
Real-Time Events registra cada envio de um stream, entregue ou não, com o status code que o endpoint retornou. Envie algumas requisições que executam a function e aguarde cerca de um minuto: um stream envia um lote a cada 60 segundos, ou antes, quando chega a 2.000 linhas de log.
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 a ativação do stream:
A API responde 200 com um registro para cada envio, do mais recente para o mais antigo:
statusCode traz o status com que o endpoint respondeu, e streamedLines, as linhas de log do lote. Um statusCode 200 significa que o endpoint aceitou o lote, e uma lista dataStreamedEvents vazia significa que o stream não enviou nada no intervalo. Para todos os campos, consulte Campos da API GraphQL do Real-Time Events.
Um status diferente de 200 é a resposta do endpoint, e 503 significa que Data Stream encontrou o endpoint indisponível. Para as causas, consulte Solucionar problemas de Data Stream.
No endpoint, cada linha de log traz as chaves do template Functions Event Collector. Leia estas chaves para depurar a function:
logLevelcontém o nível da mensagem:ERROR,WARN,INFO,DEBUGouTRACE. Ela traz a variável$log_level.logMessagecontém a mensagem que a function passou para a função de log. Ela traz a variável$log_message.messageSourcemostraCONSOLEpara uma mensagem escrita com a console API, comoconsole.log, eRUNTIMEpara uma mensagem de erro.requestIDidentifica a requisição, então as mensagens de uma mesma requisição compartilham esse valor.
Para manter os nomes das variáveis como chaves, ou para enviar menos variáveis, selecione um template personalizado. Para um exemplo de data set, consulte Templates e payload.