# Fastly

### **Strumieniowanie logów Fastly do S3**

Aby wysyłać logi dostępu w czasie rzeczywistym z Fastly do bucketu Amazon S3, można skonfigurować **strumieniowanie logów Fastly** wykorzystując Amazon S3 jako miejsce docelowe. Poniżej opisano kroki wymagane do skonfigurowania strumieniowania w czasie rzeczywistym do bucketu S3 hostowanego przez Netacea, wykorzystując funkcjonalność logowania Fastly oraz niestandardowy format logów spełniający wymagania Netacea.

### **Wymagania wstępne**

Aby pomyślnie przesyłać strumieniowo logi ruchu webowego do Netacea, należy upewnić się, że:

* Posiadasz aktywne konto Fastly z dostępem do Panelu sterowania Fastly.
* Usługa Fastly jest dostępna i skonfigurowana do obsługi ruchu produkcyjnego.
* Otrzymałeś od Netacea niezbędne dane bucketu AWS S3 (nazwa bucketu, region, ścieżka i poświadczenia). Można je znaleźć [tutaj](https://netacea.gitbook.io/portal-docs/user-guides-and-videos/portal-setup-and-log-shipping-guide).
* Znasz [minimalny wymagany zestaw danych](#netacea-minimum-dataset) niezbędny dla Netacea do analizy logów.

### Wysyłanie danych: Strumieniowanie w czasie rzeczywistym

Ta opcja rejestruje każde żądanie i dostarcza logi w partiach. Jest to konfigurowalne zgodnie z wymaganiami POV.

### **Kroki implementacji**

1. Zaloguj się do [panelu sterowania Fastly](https://manage.fastly.com/).
2. Na stronie [głównej](https://manage.fastly.com/home) wybierz odpowiednią usługę. Możesz użyć pola wyszukiwania, aby wyszukać po ID, nazwie lub domenie.
3. Kliknij **Edytuj konfigurację**, a następnie wybierz opcję sklonowania aktywnej wersji.

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

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

{% hint style="warning" %}
Wszystkie poniższe zmiany konfiguracji zostaną wprowadzone w **nowo sklonowanej wersji.**
{% endhint %}

### **Konfiguracja strumieniowania logów**

1. Przejdź do obszaru **Logging**.
2. Kliknij przycisk **'Create endpoint'** dla Amazon S3

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

3. Wprowadź dane z poniższej tabeli:

XLOCKX109![](https://1527802543-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu9Wa2WiFkCND3fktx8wd%2Fuploads%2Fgit-blob-f00f50dce3b60448c39d99de0aa7c19a8881d494%2Fimage%20\(120\).png?alt=media)110XLOCKX

<table><thead><tr><th width="196">Pole</th><th>Wartość</th></tr></thead><tbody><tr><td>Name</td><td>Wprowadź łatwą do zapamiętania, czytelną dla człowieka nazwę punktu końcowego, np. <strong>Netacea_Logging</strong></td></tr><tr><td>Placement</td><td>Format Version Default</td></tr><tr><td>Log Format</td><td>Wklej <strong>Log Format</strong> znajdujący się <a href="#log-format">tutaj</a></td></tr><tr><td>Timestamp</td><td>Wklej <strong>Timestamp Format</strong> znajdujący się <a href="#timestamp-format">tutaj</a></td></tr><tr><td>Bucket Name</td><td>Nazwa bucketu Amazon S3 dostarczona przez Netacea w <a href="https://portal.netacea.com/">portalu administracyjnym</a></td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Access Method</td><td>Wybierz <strong>'User Credentials'</strong></td></tr><tr><td>Access Key</td><td>Skopiuj z <a href="https://portal.netacea.com/">portalu administracyjnego</a> Netacea</td></tr><tr><td>Secret Key</td><td>Skopiuj z <a href="https://portal.netacea.com/">portalu administracyjnego</a> Netacea</td></tr><tr><td>Period</td><td></td></tr></tbody></table>

4. Rozwiń sekcję **'Advanced options'** i zastosuj wartości określone w poniższej tabeli:

| Opcja                  | Wartość  |
| ---------------------- | -------- |
| Path                   | /        |
| PGP Public Key         | Puste    |
| Select Log line Format | Puste    |
| Compression            | Gzip     |
| Redundancy Level       | Standard |
| ACL                    | None     |
| Server Side Encryption | None     |
| Maximum Bytes          | 0        |

5. Kliknij **'Create'**, aby zapisać punkt końcowy logowania.

### Format logów

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

### Format znacznika czasu

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

### Minimalny zestaw danych Netacea

Powyższy format logów pozwoli Netacea zbierać następujący minimalny zestaw danych do analizy

<table><thead><tr><th width="215">Wymagane pola</th><th>Opis</th></tr></thead><tbody><tr><td>Timestamp</td><td>Czas, w którym żądanie zostało odebrane</td></tr><tr><td>IP Address</td><td>Adres IP, z którego wysłano żądanie</td></tr><tr><td>User Agent</td><td>Łańcuch user agent wysłany w nagłówku przez klienta</td></tr><tr><td>Method</td><td>Metoda HTTP żądania</td></tr><tr><td>Path</td><td>Ścieżka żądanego zasobu</td></tr><tr><td>Query</td><td>Łańcuch zapytania żądania</td></tr><tr><td>Status</td><td>Kod statusu HTTP zwrócony przez serwer</td></tr><tr><td>Referrer</td><td>Strona internetowa, z której użytkownik przeszedł przez link</td></tr><tr><td>Bytes Sent</td><td>Bajty wysłane jako część odpowiedzi serwera</td></tr><tr><td>Client JA3</td><td>Odcisk palca JA3 klienta</td></tr><tr><td>X-Forwarded-For*</td><td>Oryginalny adres IP żądania klienta</td></tr><tr><td>Host</td><td>Host docelowy żądania</td></tr><tr><td>Protocol</td><td>Protokół żądania</td></tr><tr><td>Request Time</td><td>Całkowity czas przetwarzania żądania</td></tr></tbody></table>

\* Przydatne, gdy proxy znajdują się na trasie ruchu od klienta do źródła

### Uwagi dotyczące logowania

Podczas konfiguracji wysyłania logów Fastly, domyślnie wszystkie żądania, w tym zawartość statyczna i medialna, będą wysyłane do bucketu S3. Te dane nie są wymagane przez Netacea. Aby rozwiązać ten problem, musimy dodać warunek logowania do usługi i powiązać go z usługą logowania utworzoną zgodnie z powyższymi krokami.

#### Dodawanie warunku logowania

1. Przejdź do nowo utworzonego 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-b869549315f09db6c5160d8bdc5195db79ee2cc8%2Fimage%20(122).png?alt=media" alt=""><figcaption></figcaption></figure>

2. Kliknij **'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-f9b1247afd61266eff997a4775fbd11e8d47dccb%2Fimage%20(123).png?alt=media" alt=""><figcaption></figcaption></figure>

3. Wprowadź następujące dane w oknie dialogowym

| Pole     | Wartość                                                                                   |
| -------- | ----------------------------------------------------------------------------------------- |
| Name     | np. Netacea\_Log\_Visit                                                                   |
| Apply If | (req.url !\~ "/media/" && req.url !\~ "/static/") && fastly.ff.visits\_this\_service == 0 |
| Priority | 10                                                                                        |

{% hint style="warning" %}
Rozwiń sekcję **'Advanced option'**, aby ustawić Priority
{% endhint %}

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

4. Kliknij **'Save and apply'**

### Zakończenie

* Sprawdź konfigurację pod kątem komunikatów o błędach lub ostrzeżeń.
* Po potwierdzeniu wdróż zmiany, klikając **Activate**.

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

Konfiguracja strumieniowania logów Fastly jest teraz aktywna i powinna wysyłać dane do bucketu S3 Netacea.

### Ostatnie kroki

Po aktywacji dostarczania logów **powiadom swojego Inżyniera ds. Rozwiązań Netacea**. Pozwoli nam to:

* Potwierdzić odbiór danych
* Zweryfikować format i kompletność zestawu danych
* Rozpocząć analizę po zebraniu wystarczającej ilości danych

Jeśli potrzebujesz wsparcia podczas konfiguracji, zespół SE Netacea jest do Twojej dyspozycji — nie wahaj się z nami skontaktować.
