Templates e payload
Consulte os cinco templates predefinidos, o objeto de template personalizado com seu Data Set e o payload de um endpoint Standard HTTP/HTTPS POST.
Um template é o objeto do Data Stream que decide quais variáveis cada linha de log carrega e sob quais chaves. Seu Data Set é um objeto JSON: cada chave é um nome na linha de log, e cada valor é uma variável da fonte de dados do stream. O template predefinido Functions Event Collector tem este data set:
Um stream indica um template em transform[render_template].attributes.template, como descrito em Configurações do stream. O caminho da API é /v4/workspace/stream/templates, e um template é /v4/workspace/stream/templates/<template-id>. Toda requisição carrega o header Authorization: Token [TOKEN VALUE]. As configurações em Payload pertencem ao endpoint Standard HTTP/HTTPS POST, não ao template.
Templates predefinidos
A Azion oferece cinco templates predefinidos. A API os lista com custom: false, last_editor support@azion.com e created_at null. Cada template predefinido tem o nome da fonte de dados cujas variáveis ele carrega, e o objeto de template não tem campo de fonte de dados.
| Template predefinido | ID | Fonte de dados | Chaves | Uso |
|---|---|---|---|---|
| Activity History Collector | 251 | Activity History | 20 | Eventos da conta: o que mudou, quem mudou e de qual endereço. |
| Applications Event Collector | 2 | Applications | 36 | Dados de requisição, resposta, cache e upstream de cada requisição. |
| Applications + WAF Event Collector | 184 | Applications | 51 | Os dados da requisição mais as variáveis de WAF, sessão, TLS e endereço do servidor. |
| Functions Event Collector | 86 | Functions | 8 | As mensagens que as functions registram no log, com seu nível e o ID da requisição. |
| WAF Event Collector | 4 | WAF Events | 21 | As requisições que o WAF avaliou, com a família de ataque, a ação e a pontuação. |
As variáveis de um template predefinido são fixas. No Console, o campo Data Set da seção Render Template é somente leitura, e para um template predefinido, Duplicate Template abre o drawer Create Custom Template preenchido com o data set do template predefinido. Para enviar outras variáveis, crie um template personalizado. Cada variável é descrita em Fontes de dados e variáveis.
Activity History Collector
O template predefinido Activity History Collector, ID 251, usa o nome de cada variável como chave: $comment, $user_ip, $request_data, $resource_name, $user_id, $account_id, $referer_header, $title, $author_email, $parent_resource_id, $author_name, $resource_id, $parent_resource_name, $client, $user_agent, $parent_resource_type, $time, $type, $remote_port e $resource_type.
Um endpoint S3 com Content Type plain/text recebe as linhas de log deste template predefinido como um objeto JSON por linha. Uma linha, reduzida:
Applications Event Collector
O template predefinido Applications Event Collector, ID 2, usa o nome de cada variável como chave: $http_user_agent, $ssl_protocol, $server_protocol, $waf_attack_action, $upstream_cache_status, $request_time, $upstream_status, $state, $version, $request_method, $ssl_cipher, $scheme, $tcpinfo_rtt, $status, $sent_http_x_original_image_size, $request_length, $sent_http_content_type, $time, $requestQuery, $host, $http_referrer, $upstream_local_addr, $configuration, $request_uri, $proxy_status, $requestPath, $country, $remote_addr, $bytes_sent, $upstream_header_time, $upstream_bytes_received, $client, $upstream_response_time, $remote_port, $upstream_connect_time e $waf_attack_family.
Applications + WAF Event Collector
O template predefinido Applications + WAF Event Collector, ID 184, carrega todas as variáveis do Applications Event Collector, exceto $upstream_local_addr e $version. Ele adiciona 17 variáveis: $session_id, $stream, $upstream_addr, $upstream_bytes_sent, $server_port, $server_addr, $waf_learning, $waf_block, $waf_total_processed, $waf_total_blocked, $waf_score, $waf_match, $waf_headers, $asn, $ssl_session_reused, $ssl_server_name e $request_id. Suas chaves correspondem aos nomes das variáveis, exceto $http_referrer, que ele envia sob a chave http_referer.
Functions Event Collector
O template predefinido Functions Event Collector, ID 86, tem oito chaves. Seis delas diferem do nome da variável: configuration carrega $global_id, edgeFunctionID carrega $edge_function_id, requestID carrega $request_id, messageSource carrega $message_source, logLevel carrega $log_level e logMessage carrega $log_message. As chaves time e client carregam $time e $client.
WAF Event Collector
O template predefinido WAF Event Collector, ID 4, usa o nome de cada variável como chave: $version, $time, $client, $configuration, $host, $remote_addr, $server_protocol, $country, $waf_server, $waf_uri, $waf_learning, $blocked, $waf_score, $waf_match, $waf_attack_family, $waf_attack_action, $truncated_body, $waf_args, $requestPath e $requestQuery. Sua 21ª chave, headers, guarda o literal - em vez da variável $headers. Para enviar $headers, use um template personalizado.
Templates personalizados
Um template personalizado é um template que a conta cria, e a API o lista com custom: true na mesma lista dos templates predefinidos. Um stream que usa um template personalizado envia somente as variáveis do seu data set. No Console, o dropdown Template agrupa os templates personalizados em Custom Templates e os templates predefinidos em Azion’s Templates.
| Console | Campo da API | Tipo | Obrigatório | Padrão | Valores |
|---|---|---|---|---|---|
| Name | name | string | Sim | nenhum | 1 a 100 caracteres. |
| Data Set | data_set | string | Sim | nenhum | 1 a 65.535 caracteres. Um objeto JSON cujas entradas são "<key>": "$<variable>", enviado como string com as aspas escapadas. |
| nenhum | active | boolean | Não | true | true ou false. |
A API adiciona os campos somente leitura id, custom, last_editor, created_at e last_modified. Um template personalizado na lista de templates aparece como este, que copia o data set do Functions Event Collector:
Um POST em /v4/workspace/stream/templates cria um template personalizado a partir de name e data_set. Em /v4/workspace/stream/templates/<template-id>, um GET lê o template, um PATCH altera somente as chaves que você envia, um PUT exige as mesmas chaves obrigatórias de uma criação, e um DELETE o remove.
A chave de cada entrada é sua escolha, e o valor é a variável. Este data set mantém dez variáveis de Applications com seus próprios nomes, e duas delas, $session_id e $server_port, só o template predefinido Applications + WAF Event Collector carrega:
Um template personalizado também pode carregar uma variável que nenhum template predefinido carrega. O data set {"time": "$time", "traceback": "$traceback"} envia as regras que foram executadas em cada requisição de uma aplicação. Um data set de Functions pode manter os nomes das variáveis como chaves, como {"time": "$time", "global_id": "$global_id", "edge_function_id": "$edge_function_id", "request_id": "$request_id", "log_level": "$log_level", "log_message": "$log_message"}.
Os templates não têm página própria no Console. Na seção Render Template de um stream, Create Custom Template abre um drawer com as seções General, que contém Name, e Data Set, um editor de JSON. Para um template personalizado, Edit Template abre o drawer Edit Custom Template, em que Danger area contém Delete template. Para os passos, consulte Crie um template personalizado.
Payload
As configurações de payload decidem como um endpoint Standard HTTP/HTTPS POST recebe as linhas de log de cada requisição. Elas são campos do endpoint em outputs[0].attributes, não do template, e nenhum outro tipo de endpoint as tem. O Console chama o campo do endpoint de Connector e mostra essas configurações na seção Output quando Connector é Standard HTTP/HTTPS POST.
| Console | Campo da API | Tipo | Obrigatório | Padrão | Valores |
|---|---|---|---|---|---|
| Payload Format | outputs[0].attributes.payload_format | string | Não na API, Sim no Console | $dataset | 1 a 250 caracteres. $dataset é substituído pelas linhas de log da requisição, unidas pelo separador. O texto em volta de $dataset é enviado como escrito. |
| Payload Log Line Separator | outputs[0].attributes.log_line_separator | string | Não na API, Sim no Console | \n | 1 a 100 caracteres. A string entre duas linhas de log. \n coloca cada linha de log em sua própria linha. |
| Payload Max Size | outputs[0].attributes.max_size | inteiro, bytes | Não | null na API, 1000000 no Console | 1.000.000 a 2.147.483.647. O tamanho máximo de um pacote de dados. Um valor abaixo de 1000000 é recusado com 10050 Min Value. |
Um endpoint Standard HTTP/HTTPS POST recebe um lote quando ele atinge 2.000 linhas de log, 60 segundos ou o Payload Max Size, o que ocorrer primeiro. Para saber como os lotes se formam, consulte Como o Data Stream funciona.
Com os valores padrão, o endpoint recebe NDJSON: uma linha de log por linha, sem colchetes em volta e sem vírgula entre as linhas. NDJSON serve a um receptor que processa um registro por vez. Um array JSON, com colchetes e vírgulas, é lido como um único registro. Os dois exemplos abaixo usam este data set:
Com Payload Log Line Separator \n e Payload Format $dataset, o corpo da requisição é NDJSON:
Com Payload Log Line Separator , e Payload Format [$dataset], o corpo da requisição é um único array JSON:
Para personalizar o payload de um stream de Activity History que envia para um endpoint Standard HTTP/HTTPS POST, a Azion especifica Payload Log Line Separator \n e este Payload Format:
Este formato usa $time_iso8601 e $clientid, que não estão entre as variáveis de Activity History. Essa fonte de dados chama o horário de $time e o cliente de $client.
As configurações de payload não têm opção de compressão. Entre os tipos de endpoint, só o Simple Storage Service (S3) oferece um Content Type comprimido, application/gzip. Para cada campo do endpoint, incluindo Custom Headers, consulte Endpoints.