# Fastly

### **Streaming de logs do Fastly para S3**

Para enviar logs de acesso em tempo real do Fastly para um bucket do Amazon S3, você pode configurar o **streaming de logs do Fastly** usando o Amazon S3 como destino. Abaixo estão documentados os passos necessários para configurar o streaming em tempo real para um bucket S3 hospedado pela Netacea, utilizando a funcionalidade de logging do Fastly e um formato de log personalizado que atende aos requisitos da Netacea.

### **Pré-requisitos**

Para transmitir com sucesso os logs de tráfego web para a Netacea, certifique-se do seguinte:

* Você possui uma conta Fastly ativa com acesso ao Painel de Controle do Fastly.
* Um serviço Fastly está disponível e configurado para lidar com seu tráfego de produção.
* Você recebeu os detalhes necessários do bucket AWS S3 (nome do bucket, região, caminho e credenciais) da Netacea. Esses detalhes podem ser encontrados [aqui](https://netacea.gitbook.io/portal-docs/user-guides-and-videos/portal-setup-and-log-shipping-guide).
* Você está ciente dos campos do [conjunto de dados mínimo requisito](#netacea-minimum-dataset) necessários pela Netacea para análise de logs.

### Enviando Dados: Streaming em Tempo Real

Esta opção registra cada requisição e entrega os logs em lotes. Isso é configurável para atender aos requisitos do POV.

### **Passos de Implementação**

1. Faça login no [painel de controle do Fastly](https://manage.fastly.com/).
2. Na página [Inicial](https://manage.fastly.com/home), selecione o serviço apropriado. Você pode usar a caixa de busca para pesquisar por ID, nome ou domínio.
3. Clique em **Editar configuração** e então selecione a opção para clonar a versão ativa.

<figure><img src="/files/O2ucUyfLlJU8iNZWRSdt" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5nEFRUGKeZccJ55shfB9" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Todas as alterações de configuração abaixo serão feitas na **versão recém-clonada.**
{% endhint %}

### **Configuração do Streaming de Logs**

1. Navegue até a área de **Logging**.
2. Clique no botão '**Create endpoint'** para Amazon S3

<figure><img src="/files/CzBk19g5AQdu1mCVrm4T" alt=""><figcaption></figcaption></figure>

3. Insira os detalhes da tabela abaixo:

XLOCKX109![](/files/5nEFRUGKeZccJ55shfB9)110XLOCKX

<table><thead><tr><th width="196">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Name</td><td>Insira um nome legível e memorável para o endpoint, como <strong>Netacea_Logging</strong></td></tr><tr><td>Placement</td><td>Format Version Default</td></tr><tr><td>Log Format</td><td>Cole o <strong>Log Format</strong> encontrado <a href="#log-format">aqui</a></td></tr><tr><td>Timestamp</td><td>Cole o <strong>Timestamp Format</strong> encontrado <a href="#timestamp-format">aqui</a></td></tr><tr><td>Bucket Name</td><td>O nome do bucket do Amazon S3 fornecido pela Netacea no <a href="https://portal.netacea.com/">portal administrativo</a></td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Access Method</td><td>Selecione <strong>'User Credentials'</strong></td></tr><tr><td>Access Key</td><td>Copie do <a href="https://portal.netacea.com/">portal administrativo</a> da Netacea</td></tr><tr><td>Secret Key</td><td>Copie do <a href="https://portal.netacea.com/">portal administrativo</a> da Netacea</td></tr><tr><td>Period</td><td></td></tr></tbody></table>

4. Expanda a seção '**Advanced options'** e aplique os valores específicos listados na tabela abaixo:

| Opção                  | Valor    |
| ---------------------- | -------- |
| Path                   | /        |
| PGP Public Key         | Vazio    |
| Select Log line Format | Vazio    |
| Compression            | Gzip     |
| Redundancy Level       | Standard |
| ACL                    | None     |
| Server Side Encryption | None     |
| Maximum Bytes          | 0        |

5. Clique em **'Create'** para salvar o endpoint de logging.

### Formato do Log

{% code overflow="wrap" %}

```
{"@timestamp": "%{%Y-%m-%dT%H:%M:%S%z}t","bc_type": %{if(req.http.netacea_bctype_string, "%u0022" + json.escape(req.http.netacea_bctype_string) + "%u0022", "null")}V,"bytes_sent": "%B","cookie_session_status": %{if(req.http.x-netacea:cookie_session_status, "%u0022" + json.escape(req.http.x-netacea:cookie_session_status) + "%u0022", "null")}V,"client": "%{json.escape(client.ip)}V","domain": %{if(req.http.host, "%u0022" + json.escape(req.http.host) + "%u0022", "null")}V,"integration_mode": %{"%u0022" + json.escape(req.http.x-netacea:integration_mode) + "%u0022"}V,"integration_type": %{if(req.http.integration_type, "%u0022" + json.escape(req.http.integration_type) + "%u0022", "null")}V,"integration_version": %{if(req.http.integration_version, "%u0022" + json.escape(req.http.integration_version) + "%u0022", "null")}V,"method": "%{json.escape(req.method)}V","path": "%{json.escape(req.url.path)}V","mit_svc_latency":%{if(req.http.x-netacea:mit_svc_latency, "%u0022" + json.escape(req.http.x-netacea:mit_svc_latency) + "%u0022", "0")}V,"mit_status":%{if(req.http.x-netacea:mit_status, "%u0022" + json.escape(req.http.x-netacea:mit_status) + "%u0022", "0")}V,"protocol": "%{json.escape(req.proto)}V","query": "%{json.escape(req.url.qs)}V","referrer": %{if(req.http.referer, "%u0022" + json.escape(req.http.referer) + "%u0022", "null")}V,"request_time": %{time.elapsed}V,"status": "%{json.escape(resp.status)}V","user_agent": %{if(req.http.user-agent, "%u0022" + json.escape(req.http.user-agent) + "%u0022", "null")}V,"user_id": %{if(req.http.x-netacea-userid, "%u0022" + json.escape(req.http.x-netacea-userid) + "%u0022", "null")}V,"client_ja3_md5": %{if(tls.client.ja3_md5, "%u0022" + json.escape(tls.client.ja3_md5) + "%u0022", "null")}V,"x_forwarded_for": %{if(req.http.X-Forwarded-For, "%u0022" + json.escape(req.http.X-Forwarded-For) + "%u0022", "null")}V}
```

{% endcode %}

### Formato do Timestamp

```
%Y-%m-%dT%H:%M:%S.000
```

### Conjunto de Dados Mínimo da Netacea

O formato de log acima permitirá que a Netacea colete o seguinte conjunto de dados mínimo para análise

<table><thead><tr><th width="215">Campos Obrigatórios</th><th>Descrição</th></tr></thead><tbody><tr><td>Timestamp</td><td>O horário em que a requisição foi recebida</td></tr><tr><td>Endereço IP</td><td>O endereço IP de onde a requisição foi feita</td></tr><tr><td>User Agent</td><td>A string de user agent enviada no cabeçalho pelo cliente</td></tr><tr><td>Método</td><td>O método HTTP da requisição</td></tr><tr><td>Caminho</td><td>O caminho do recurso solicitado</td></tr><tr><td>Query</td><td>A query string da requisição</td></tr><tr><td>Status</td><td>O código de status HTTP retornado pelo servidor</td></tr><tr><td>Referrer</td><td>A página web de onde o usuário seguiu o link</td></tr><tr><td>Bytes Enviados</td><td>Os bytes enviados como parte da resposta do servidor</td></tr><tr><td>Client JA3</td><td>Fingerprint JA3 do cliente</td></tr><tr><td>X-Forwarded-For*</td><td>Endereço IP original de uma requisição do cliente</td></tr><tr><td>Host</td><td>O host de destino da requisição</td></tr><tr><td>Protocolo</td><td>O protocolo da requisição</td></tr><tr><td>Tempo da Requisição</td><td>O tempo total gasto para processar a requisição</td></tr></tbody></table>

\* Útil quando há proxies no caminho do tráfego do cliente > origem

### Considerações sobre Logging

Ao configurar o envio de logs do Fastly, por padrão ele enviará todas as requisições, incluindo conteúdo estático e de mídia para o bucket S3. Esses dados não são necessários para a Netacea. Para resolver isso, precisamos adicionar uma condição de logging ao serviço e anexá-la ao serviço de logging que foi criado seguindo os passos acima.

#### Adicionar uma Condição de Logging

1. Navegue até o endpoint de logging recém-criado:

<figure><img src="/files/B6G13RzCKHW0DBD61UtO" alt=""><figcaption></figcaption></figure>

2. Clique em **'Create a new response condition'**

<figure><img src="/files/INl7XqD5c69BJpq7u0qW" alt=""><figcaption></figcaption></figure>

3. Insira os seguintes detalhes na janela pop-up

| Campo    | Valor                                                                                     |
| -------- | ----------------------------------------------------------------------------------------- |
| Name     | ex.: Netacea\_Log\_Visit                                                                  |
| Apply If | (req.url !\~ "/media/" && req.url !\~ "/static/") && fastly.ff.visits\_this\_service == 0 |
| Priority | 10                                                                                        |

{% hint style="warning" %}
Expanda a seção **'Advanced option'** para definir a Priority
{% endhint %}

<figure><img src="/files/jaokDTu6ohai6IqO8hrm" alt=""><figcaption></figcaption></figure>

4. Clique em **'Save and apply'**

### Finalizando

* Verifique a configuração em busca de mensagens de erro ou avisos.
* Uma vez confirmado, implante suas alterações clicando em **Activate**.

<figure><img src="/files/Af4T7ZP1VGufwxUiJScz" alt=""><figcaption></figcaption></figure>

Sua configuração de streaming de logs do Fastly está agora ativa e deve estar enviando dados para o bucket S3 da Netacea.

### Passos Finais

Uma vez que a entrega de logs esteja ativa, **notifique seu Engenheiro de Soluções da Netacea**. Isso nos permite:

* Confirmar o recebimento dos dados
* Validar o formato e completude do conjunto de dados
* Iniciar a análise assim que um volume suficiente de dados tiver sido coletado

Se você precisar de suporte durante a configuração, a equipe de SE da Netacea está aqui para ajudar — não hesite em entrar em contato.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.netacea.com/br/fastly.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
