# Akamai DataStream 2

### **Delivery dei log di Akamai DataStream 2 verso S3**

Per inviare i log di accesso da Akamai a un bucket Amazon S3, è possibile utilizzare **Akamai DataStream 2**, il metodo standard e consigliato da Akamai per la delivery dei log in tempo reale. Di seguito sono riportati i passaggi documentati incentrati sulla configurazione di **DataStream 2**, con indicazioni specifiche per la delivery verso un bucket S3 ospitato da Netacea.

### Prerequisiti

Per trasmettere correttamente i log del traffico web a Netacea, assicurarsi di soddisfare i seguenti requisiti:

* Disporre di un account Akamai attivo con accesso completo alla Dashboard Akamai.
* Akamai DataStream 2 deve essere abilitato.

{% hint style="info" %}
DataStream 2 è incluso nella content delivery e non comporta costi aggiuntivi. Per abilitare questa funzionalità, contattare il proprio team account Akamai.
{% endhint %}

* Aver ricevuto da Netacea i dettagli necessari del bucket AWS S3 (percorso del bucket, nome, region 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](#step-2-data-set) necessari a Netacea per l'analisi dei log.

## Configurazione di DataStream 2

Seguire la documentazione Akamai disponibile [qui](https://techdocs.akamai.com/datastream2/docs/quick-start) per creare e attivare uno stream DataStream 2, in base alla seguente configurazione:

#### Step 1: Configuration

Utilizzare la scheda **Configuration** per inserire i dettagli di base dello stream e scegliere le property che si desidera monitorare.

#### Step 2: Data Set

Durante lo step di configurazione del Data Set, utilizzare il seguente data set minimo, definito da Netacea:

| **Campo richiesto**                            | **Descrizione**                                                                                                                                           |
| ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Request time                                   | L'orario in cui è stata ricevuta la richiesta                                                                                                             |
| Bytes                                          | I byte inviati come parte della richiesta dell'utente                                                                                                     |
| Client IP                                      | L'indirizzo IP da cui è stata effettuata la richiesta                                                                                                     |
| HTTP status codes                              | Il codice di stato HTTP restituito dal server                                                                                                             |
| Protocol type                                  | Il protocollo del ciclo richiesta-risposta                                                                                                                |
| Request host                                   | Il valore dell'header host nella richiesta                                                                                                                |
| Request method                                 | Il metodo HTTP della richiesta                                                                                                                            |
| Request path                                   | Il percorso della risorsa richiesta                                                                                                                       |
| Query string                                   | La query string della richiesta                                                                                                                           |
| User-Agent<mark style="color:red;">\*</mark>   | La stringa user agent inviata nell'header dal client                                                                                                      |
| Referer<mark style="color:red;">\*</mark>      | La pagina web da cui l'utente ha seguito un link                                                                                                          |
| Turn around time                               | Il tempo trascorso in millisecondi tra la ricezione dell'ultimo header della richiesta e la scrittura del primo byte della risposta sul socket del client |
| Custom field<mark style="color:red;">\*</mark> | Questo campo supporta variabili ed è necessario per registrare i campi personalizzati specifici di Netacea                                                |
| True-Client-IP\*\*                             | La fonte attendibile dell'IP originale del client                                                                                                         |
| X-Forwarded-For\*\*                            | L'indirizzo IP di connessione \[array] di una richiesta client, se sottoposta a proxy                                                                     |

\*Per monitorare questi campi è necessario abilitare la registrazione dei parametri personalizzati del data set nel behavior **Log Request Details** della property Akamai associata. Vedere [Log custom parameters](https://techdocs.akamai.com/datastream2/docs/log-custom-parameters) per maggiori dettagli.

\*\* Utile quando sono presenti proxy nel percorso del traffico dal client all'origin

{% hint style="warning" %}
Assicurarsi di selezionare **JSON** come formato log.
{% endhint %}

#### Step 3: Delivery

1. Selezionare **Amazon S3** come Destination.
2. In **Name**, inserire una descrizione leggibile per la destinazione.
3. In **Bucket**, inserire il nome del bucket S3 pertinente ospitato da Netacea.
4. In **Folder path**, popolare questo campo con "**`logs/"`** salvo diverse istruzioni da parte di Netacea.
5. In **Region**, inserire il codice della region AWS in cui risiede il bucket. Questo dovrebbe essere `eu-west-1` (tutto minuscolo) salvo diverse indicazioni.
6. In **Access key ID** e **Secret access key**, inserire le credenziali fornite da Netacea.
7. Cliccare su **Validate & Save** per validare la connessione alla destinazione e salvare la configurazione.
8. Assicurarsi che **Push frequency** sia impostata al valore più basso possibile.

#### Step 4: Summary e Activation

1. Nella scheda **Summary**, verificare attentamente tutti i dettagli configurati.
2. Una volta confermato, selezionare la casella **Activate stream upon saving**.
3. Cliccare su **Save stream** per completare la configurazione.

#### Step 5: Abilitare il DataStream tramite una Rule

L'attivazione dello stream potrebbe richiedere fino a un'ora. Tuttavia, i dati verranno raccolti e trasmessi **solo dopo** aver aggiunto e abilitato il [behavior DataStream](https://techdocs.akamai.com/datastream2/docs/enable-datastream-behavior) tramite una rule nella configurazione della property del sito.

Per farlo:

1. Creare una nuova versione della property attualmente attiva.
2. Modificare la nuova versione.
3. In **Property Configuration Settings**, cliccare su **+Rules** per aggiungere una nuova rule.
4. Selezionare il **Blank Rule Template**, fornire un nome significativo e cliccare su **Insert Rule**.

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

**Configurare la rule**

* **Sezione Criteria**\
  Aggiungere la seguente condizione di matching:
  * **If Hostname is one of `<hostname>`**

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

{% hint style="info" %}
Se Netacea sta monitorando più siti web, è possibile includere più hostname. Includere solo quelli che devono essere monitorati dal DataStream creato in precedenza.
{% endhint %}

**Sezione Behaviors**

* Aggiungere un behavior per **abilitare il DataStream** creato in precedenza.

  > È anche possibile duplicare e riutilizzare una rule esistente, se appropriato.

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

* Aggiungere un altro behavior: **Log Request Details**
  * Impostare **Include Custom Log Field** su `on`
  * Impostare **Custom Log Field** su `{{user.PMUSER_NETACEA_DS2_CUSTOM_FIELD}}`

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

Il DataStream e la Rule associata sono ora creati.

{% hint style="info" %}
**Ripetere la procedura sopra descritta per ciascun sito web separato (o gruppo di siti web) che Netacea dovrà monitorare.**
{% endhint %}

### Attivare la Property

Una volta creati tutti i DataStream e le Rule, cliccare su **Save** e utilizzare la scheda **Activate** per attivare (deployare) le modifiche alla configurazione della property.

{% hint style="success" %}
La configurazione del monitoraggio verrà ora deployata sulla property su cui è stata configurata. È possibile confermare la correttezza del deployment tramite:

* Richiedere a Netacea di verificare le metriche di monitoraggio interno.
* Richiedere a Netacea di validare il contenuto e il formato dei dati.
  {% endhint %}

### Passaggi finali

Una volta attiva la delivery dei log, **notificare il proprio Netacea Solutions Engineer**. 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

Se è necessario supporto durante la configurazione, il team SE di Netacea è a disposizione per aiutare — non esitare a contattarci.
