# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.netacea.com/it/fastly.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
