# 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="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-6cbf08792a7033c58fce6d5b179a35dc20c84ad9%2Fimage%20(119).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-f00f50dce3b60448c39d99de0aa7c19a8881d494%2Fimage%20(120).png?alt=media" 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="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-c56c044e55e2825a508884b63243b5dc79d9ed45%2Fimage%20(121).png?alt=media" alt=""><figcaption></figcaption></figure>

3. Insira os detalhes da tabela abaixo:

XLOCKX109![](https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-f00f50dce3b60448c39d99de0aa7c19a8881d494%2Fimage%20\(120\).png?alt=media)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="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-b869549315f09db6c5160d8bdc5195db79ee2cc8%2Fimage%20(122).png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-f9b1247afd61266eff997a4775fbd11e8d47dccb%2Fimage%20(123).png?alt=media" 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="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-d98d1184fca3eb81e9f1b659d44ea50f6ecbebf1%2Fimage%20(124).png?alt=media" 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="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-ca57d8a8f917a2b559d8ff6bdc29885177aeeb27%2Fimage%20(126).png?alt=media" 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.
