# Configuração de Monitoramento

### Pré-requisitos

Antes que a Netacea possa monitorar sua plataforma com sucesso, certifique-se de que você tenha:

1. Fornecido uma lista de todos os usuários, parceiros e aplicativos de terceiros conhecidos, seguros e confiáveis. Isso inclui uma lista de bots confiáveis e ferramentas automatizadas. Qualquer informação sobre agentes maliciosos conhecidos também é valiosa.
2. Fornecido uma lista de casos de uso de proteção e os caminhos vulneráveis a cada um.
3. Compartilhado os endpoints e credenciais relevantes para envio de logs por meio do [portal da Netacea](https://docs.netacea.com/br/informacoes-do-plugin-netacea/accessing-your-integration-settings).

### Etapas de Implementação do Streaming de Logs

* Faça login na interface web do Fastly/Magento.
* Navegue até Stores → Configuration → Advanced → System → Full Page Cache → Fastly Configuration → Tools → Real Time Log Streaming.
* Crie um novo trabalho de Real-Time Log Streaming clicando em "Create" em Create Endpoint, selecionando Amazon S3 e clicando em "Add".

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-07cb34c7b98389bb72ab1eef2b0f542c5e28e380%2Fimage%20(6)%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

* Preencha o trabalho de streaming de logs com as seguintes informações:

XLOCKX91\`\`\` {"@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} \`\`\`92XLOCKXXLOCKX9798XLOCKX

<table><thead><tr><th width="216">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Name</td><td>Insira um nome memorável e legível para o endpoint, como Netacea_Logging.</td></tr><tr><td>Log Format</td><td><a href="#log-format">Log Format</a></td></tr><tr><td>Timestamp</td><td><a href="#undefined">Timestamp</a></td></tr><tr><td>Bucket Name</td><td>O nome fornecido pela Netacea</td></tr><tr><td>Access Key</td><td>A chave de acesso fornecida pela Netacea</td></tr><tr><td>Secret Key</td><td>A chave secreta fornecida pela Netacea</td></tr><tr><td>Path</td><td>O caminho fornecido pela Netacea</td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Log Line Format</td><td>Blank</td></tr><tr><td>Compression</td><td>Gzip</td></tr><tr><td>GZIP Level</td><td></td></tr><tr><td>Period</td><td></td></tr></tbody></table>

{% hint style="warning" %}
Se o Shielding estiver habilitado para o(s) Host(s) do Fastly, consulte o parágrafo abaixo chamado "Consideração sobre Shielding" antes de criar um endpoint de logging.
{% endhint %}

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-367810b88d1d79f38320d144aca452ee527996a5%2Fimage%20(22).png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Log Format**

{% 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 %}

#### Timestamp

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

### Consideração sobre Shielding

O Fastly permite que os usuários habilitem o recurso de Host chamado "[Shielding](https://developer.fastly.com/learning/concepts/shielding/)" que oferece alguns benefícios como redução de carga na origem, melhoria na taxa de acertos de cache, etc. Habilitar esse recurso em um serviço Fastly que usa nossa Integração resulta em uma duplicação de logs que estão sendo enviados por ele através do logging da Netacea. Não esperamos isso.\
\
Para resolver esse problema, precisamos anexar uma Condition ao Netacea Logging.

* Clique no ícone de engrenagem ao lado do endpoint de logging

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-626a51d81973b5103f49a8e33246896b0271301a%2Fimage%20(94).png?alt=media" alt=""><figcaption></figcaption></figure>

* Na janela popup, encontre a linha "Condition" e clique em "Attach a condition"

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-1ced47a8c87470a821c3597ebd892061e06057a4%2Fimage%20(95).png?alt=media" alt=""><figcaption></figcaption></figure>

* Depois disso, você pode clicar 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-c55046df2fc6c26dbd3016fc909858c3466b550b%2Fimage%20(96).png?alt=media" alt=""><figcaption></figcaption></figure>

* Uma janela popup será aberta onde você precisa inserir estes detalhes:

<table><thead><tr><th width="186">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Name</td><td>ex.: Netacea_Log_Visit</td></tr><tr><td>Apply if</td><td><code>(req.url !~ "/media/" &#x26;&#x26; req.url !~ "/static/") &#x26;&#x26; fastly.ff.visits_this_service == 0</code></td></tr><tr><td>Priority</td><td>10 (padrão)</td></tr></tbody></table>

* Clique em "Create". Agora você deve ver que a Condition foi anexada ao stream de Logging

<figure><img src="https://3103183613-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ0VONni9fqVKgqwRyueW%2Fuploads%2Fgit-blob-0bb08c3597bbc64934aad380df1765c689af14a9%2Fimage%20(97).png?alt=media" alt=""><figcaption></figcaption></figure>

* Agora você pode clicar em "Create" novamente e isso atualizará o Logging adequadamente

### Finalizando

Verifique se você concluiu as seguintes etapas:

* Configurou o[ streaming de logs](#log-streaming) para o bucket S3 fornecido
* Certifique-se de que nenhum aviso de erro esteja aparecendo

Agora você está pronto para implantar clicando em "Save Config"

{% hint style="info" %}
Às vezes pode ser necessário limpar o cache. Para fazer isso, vá para System -> Cache Management e clique em "Flush Magento Cache".
{% endhint %}

O monitoramento agora será implantado no ambiente Fastly/Magento. Você pode verificar se a implantação está ativa:

* Revisando a versão ativa para o novo trabalho de envio de logs.
* Solicitando que a Netacea revise as métricas internas de ingestão.
* Solicitando que a Netacea valide o conteúdo e formato dos dados.
