# Konfiguracja monitorowania

### Wymagania wstępne

Przed rozpoczęciem monitorowania Twojej platformy przez Netacea, upewnij się, że:

1. Dostarczyłeś listę wszystkich znanych, bezpiecznych i zaufanych użytkowników, partnerów oraz aplikacji zewnętrznych. Obejmuje to listę zaufanych botów i zautomatyzowanych narzędzi. Informacje o znanych złośliwych podmiotach są również cenne.
2. Dostarczyłeś listę przypadków użycia ochrony oraz ścieżek podatnych na każdy z nich.
3. Odpowiednie punkty końcowe do przesyłania logów oraz dane uwierzytelniające zostały udostępnione za pośrednictwem [portalu Netacea](https://docs.netacea.com/pl/informacje-o-wtyczce-netacea/accessing-your-integration-settings).

### Kroki implementacji strumieniowania logów

* Zaloguj się do interfejsu webowego Fastly/Magento.
* Przejdź do Stores → Configuration → Advanced → System → Full Page Cache → Fastly Configuration → Tools → Real Time Log Streaming.
* Utwórz nowe zadanie Real-Time Log Streaming, klikając „Create" przy Create Endpoint, wybierając Amazon S3 i klikając „Add".

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

* Wypełnij zadanie strumieniowania logów następującymi informacjami:

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">Pole</th><th>Wartość</th></tr></thead><tbody><tr><td>Name</td><td>Wprowadź łatwą do zapamiętania, czytelną nazwę punktu końcowego, np. 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>Nazwa podana przez Netacea</td></tr><tr><td>Access Key</td><td>Klucz dostępu podany przez Netacea</td></tr><tr><td>Secret Key</td><td>Tajny klucz podany przez Netacea</td></tr><tr><td>Path</td><td>Ścieżka podana przez Netacea</td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Log Line Format</td><td>Puste</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" %}
Jeśli funkcja Shielding jest włączona dla hostów Fastly, zapoznaj się z poniższym akapitem „Uwagi dotyczące Shielding" przed utworzeniem punktu końcowego logowania.
{% endhint %}

<figure><img src="https://1527802543-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu9Wa2WiFkCND3fktx8wd%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
```

### Uwagi dotyczące Shielding

Fastly umożliwia użytkownikom włączenie funkcji hosta o nazwie „[Shielding](https://developer.fastly.com/learning/concepts/shielding/)", która ma pewne zalety, takie jak zmniejszenie obciążenia serwera źródłowego, poprawa współczynnika trafień w pamięci podręcznej itp. Włączenie tej funkcji w usłudze Fastly korzystającej z naszej integracji powoduje duplikację logów przesyłanych przez nią poprzez logowanie Netacea. Nie jest to oczekiwane zachowanie.\
\
Aby rozwiązać ten problem, musimy dołączyć warunek do logowania Netacea.

* Kliknij ikonę koła zębatego obok punktu końcowego logowania

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

* W wyskakującym oknie znajdź wiersz „Condition" i kliknij „Attach a condition"

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

* Następnie możesz kliknąć „Create a new response condition"

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

* Otworzy się wyskakujące okno, w którym należy wprowadzić następujące dane:

<table><thead><tr><th width="186">Pole</th><th>Wartość</th></tr></thead><tbody><tr><td>Name</td><td>np. 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 (domyślnie)</td></tr></tbody></table>

* Kliknij „Create". Powinieneś teraz zobaczyć, że warunek został dołączony do strumienia logowania

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

* Teraz możesz ponownie kliknąć „Create", co odpowiednio zaktualizuje logowanie

### Zakończenie

Sprawdź, czy wykonałeś następujące kroki:

* Skonfigurowano[ strumieniowanie logów](#log-streaming) do dostarczonego bucketu S3
* Upewnij się, że nie pojawiają się żadne ostrzeżenia o błędach

Teraz możesz wdrożyć konfigurację, klikając „Save Config"

{% hint style="info" %}
Czasami może być wymagane wyczyszczenie pamięci podręcznej. Aby to zrobić, przejdź do System -> Cache Management i kliknij „Flush Magento Cache".
{% endhint %}

Monitorowanie zostanie teraz wdrożone w środowisku Fastly/Magento. Możesz zweryfikować, czy wdrożenie jest aktywne, poprzez:

* Przegląd aktywnej wersji pod kątem nowego zadania przesyłania logów.
* Poproszenie Netacea o przegląd wewnętrznych metryk przyjmowania danych.
* Poproszenie Netacea o walidację zawartości i formatu danych.
