# Fastly

### **Streaming dei log Fastly verso S3**

Per inviare log di accesso in tempo reale da Fastly a un bucket Amazon S3, è possibile configurare lo **streaming dei log Fastly** utilizzando Amazon S3 come destinazione. Di seguito sono documentati i passaggi necessari per configurare lo streaming in tempo reale verso un bucket S3 ospitato da Netacea, utilizzando la funzionalità di logging di Fastly e un formato di log personalizzato conforme ai requisiti di Netacea.

### **Prerequisiti**

Per trasmettere correttamente i log del traffico web a Netacea, assicurarsi che siano soddisfatti i seguenti requisiti:

* Disporre di un account Fastly attivo con accesso al Pannello di controllo Fastly.
* Un servizio Fastly disponibile e configurato per gestire il traffico di produzione.
* Aver ricevuto da Netacea i dettagli necessari del bucket AWS S3 (nome del bucket, regione, percorso e credenziali). Questi sono disponibili [qui](https://netacea.gitbook.io/portal-docs/user-guides-and-videos/portal-setup-and-log-shipping-guide).
* Conoscere i campi del [dataset minimo richiesto](#netacea-minimum-dataset) necessari a Netacea per l'analisi dei log.

### Invio dei dati: Streaming in tempo reale

Questa opzione registra ogni richiesta e consegna i log in batch. È configurabile in base ai requisiti del POV.

### **Passaggi di implementazione**

1. Accedere al [pannello di controllo Fastly](https://manage.fastly.com/).
2. Dalla pagina [Home](https://manage.fastly.com/home), selezionare il servizio appropriato. È possibile utilizzare la casella di ricerca per cercare per ID, nome o dominio.
3. Fare clic su **Edit configuration** e quindi selezionare l'opzione per clonare la versione attiva.

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

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

{% hint style="warning" %}
Tutte le modifiche di configurazione riportate di seguito verranno effettuate sulla **versione appena clonata.**
{% endhint %}

### **Configurazione dello streaming dei log**

1. Accedere all'area **Logging**.
2. Fare clic sul pulsante '**Create endpoint'** per Amazon S3

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

3. Inserire i dettagli dalla tabella seguente:

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

<table><thead><tr><th width="196">Campo</th><th>Valore</th></tr></thead><tbody><tr><td>Name</td><td>Inserire un nome leggibile e facilmente memorizzabile per l'endpoint, ad esempio <strong>Netacea_Logging</strong></td></tr><tr><td>Placement</td><td>Format Version Default</td></tr><tr><td>Log Format</td><td>Incollare il <strong>Log Format</strong> disponibile <a href="#log-format">qui</a></td></tr><tr><td>Timestamp</td><td>Incollare il <strong>Timestamp Format</strong> disponibile <a href="#timestamp-format">qui</a></td></tr><tr><td>Bucket Name</td><td>Il nome del bucket Amazon S3 fornito da Netacea all'interno del <a href="https://portal.netacea.com/">portale di amministrazione</a></td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Access Method</td><td>Selezionare <strong>'User Credentials'</strong></td></tr><tr><td>Access Key</td><td>Copiare dal <a href="https://portal.netacea.com/">portale di amministrazione</a> Netatea</td></tr><tr><td>Secret Key</td><td>Copiare dal <a href="https://portal.netacea.com/">portale di amministrazione</a> Netatea</td></tr><tr><td>Period</td><td></td></tr></tbody></table>

4. Espandere la sezione '**Advanced options'** e applicare i valori specifici elencati nella tabella seguente:

| Opzione                | Valore   |
| ---------------------- | -------- |
| Path                   | /        |
| PGP Public Key         | Vuoto    |
| Select Log line Format | Vuoto    |
| Compression            | Gzip     |
| Redundancy Level       | Standard |
| ACL                    | None     |
| Server Side Encryption | None     |
| Maximum Bytes          | 0        |

5. Fare clic su **'Create'** per salvare l'endpoint di logging.

### Formato del 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 del timestamp

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

### Dataset minimo Netacea

Il formato di log sopra indicato consentirà a Netacea di raccogliere il seguente dataset minimo per l'analisi

<table><thead><tr><th width="215">Campi richiesti</th><th>Descrizione</th></tr></thead><tbody><tr><td>Timestamp</td><td>L'orario in cui è stata ricevuta la richiesta</td></tr><tr><td>Indirizzo IP</td><td>L'indirizzo IP da cui è stata effettuata la richiesta</td></tr><tr><td>User Agent</td><td>La stringa user agent inviata nell'header dal client</td></tr><tr><td>Metodo</td><td>Il metodo HTTP della richiesta</td></tr><tr><td>Percorso</td><td>Il percorso della risorsa richiesta</td></tr><tr><td>Query</td><td>La stringa di query della richiesta</td></tr><tr><td>Stato</td><td>Il codice di stato HTTP restituito dal server</td></tr><tr><td>Referrer</td><td>La pagina web da cui l'utente ha seguito un link</td></tr><tr><td>Byte inviati</td><td>I byte inviati come parte della risposta del server</td></tr><tr><td>Client JA3</td><td>Fingerprint JA3 del client</td></tr><tr><td>X-Forwarded-For*</td><td>Indirizzo IP originale di una richiesta del client</td></tr><tr><td>Host</td><td>L'host di destinazione della richiesta</td></tr><tr><td>Protocollo</td><td>Il protocollo della richiesta</td></tr><tr><td>Tempo della richiesta</td><td>Il tempo totale necessario per elaborare la richiesta</td></tr></tbody></table>

\* Utile quando sono presenti proxy nella linea di traffico dal client all'origin

### Considerazioni sul logging

Durante la configurazione dell'invio dei log Fastly, per impostazione predefinita verranno inviate tutte le richieste, inclusi contenuti statici e media, al bucket S3. Questi dati non sono richiesti da Netacea. Per risolvere questo problema, è necessario aggiungere una condizione di logging al servizio e associarla al servizio di logging creato seguendo i passaggi precedenti.

#### Aggiungere una condizione di logging

1. Accedere all'endpoint di logging appena creato:

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

2. Fare clic su **'Create a new response condition'**

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

3. Inserire i seguenti dettagli nella finestra popup

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

{% hint style="warning" %}
Espandere la sezione **'Advanced option'** per impostare la Priority
{% endhint %}

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

4. Fare clic su **'Save and apply'**

### Completamento

* Verificare la configurazione per eventuali messaggi di errore o avvisi.
* Una volta confermato, distribuire le modifiche facendo clic su **Activate**.

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

La configurazione dello streaming dei log Fastly è ora attiva e dovrebbe inviare dati al bucket S3 di Netacea.

### Passaggi finali

Una volta attiva la consegna dei log, **notificare il vostro Solutions Engineer Netacea**. Questo ci consente di:

* Confermare la ricezione dei dati
* Validare il formato e la completezza del dataset
* Avviare l'analisi una volta raccolto un volume sufficiente di dati

Per qualsiasi supporto durante la configurazione, il team SE di Netacea è a disposizione — non esitate a contattarci.
