# Fastly

### **Fastly-Log-Streaming zu S3**

Um Echtzeit-Zugriffsprotokolle von Fastly an einen Amazon S3-Bucket zu senden, können Sie **Fastly-Log-Streaming** mit Amazon S3 als Ziel konfigurieren. Nachfolgend finden Sie die dokumentierten Schritte, die erforderlich sind, um Echtzeit-Streaming zu einem von Netacea gehosteten S3-Bucket einzurichten, unter Verwendung der Fastly-Protokollierungsfunktion und eines benutzerdefinierten Protokollformats, das den Anforderungen von Netacea entspricht.

### **Voraussetzungen**

Um Web-Traffic-Protokolle erfolgreich an Netacea zu streamen, stellen Sie bitte Folgendes sicher:

* Sie haben ein aktives Fastly-Konto mit Zugriff auf das Fastly Control Panel.
* Ein Fastly-Service ist verfügbar und konfiguriert, um Ihren Produktions-Traffic zu verarbeiten.
* Sie haben die erforderlichen AWS S3-Bucket-Details (Bucket-Name, Region, Pfad und Anmeldedaten) von Netacea erhalten. Diese finden Sie [hier](https://netacea.gitbook.io/portal-docs/user-guides-and-videos/portal-setup-and-log-shipping-guide).
* Sie kennen die von Netacea für die Protokollanalyse benötigten [Mindestanforderungen an den Datensatz](#netacea-minimum-dataset).

### Datenübertragung: Echtzeit-Streaming

Diese Option protokolliert jede Anfrage und liefert Protokolle in Stapeln. Dies ist konfigurierbar, um den Anforderungen des POV zu entsprechen.

### **Implementierungsschritte**

1. Melden Sie sich im [Fastly Control Panel](https://manage.fastly.com/) an.
2. Wählen Sie auf der [Startseite](https://manage.fastly.com/home) den entsprechenden Service aus. Sie können das Suchfeld verwenden, um nach ID, Name oder Domain zu suchen.
3. Klicken Sie auf **Konfiguration bearbeiten** und wählen Sie dann die Option zum Klonen der aktiven Version.

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

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

{% hint style="warning" %}
Alle nachfolgenden Konfigurationsänderungen werden an der **neu geklonten Version** vorgenommen.
{% endhint %}

### **Log-Streaming-Einrichtung**

1. Navigieren Sie zum Bereich **Logging**.
2. Klicken Sie auf die Schaltfläche **'Endpoint erstellen'** für Amazon S3

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

3. Geben Sie die Details aus der folgenden Tabelle ein:

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

<table><thead><tr><th width="196">Feld</th><th>Wert</th></tr></thead><tbody><tr><td>Name</td><td>Geben Sie einen einprägsamen, lesbaren Namen für den Endpoint ein, z. B. <strong>Netacea_Logging</strong></td></tr><tr><td>Platzierung</td><td>Format Version Standard</td></tr><tr><td>Protokollformat</td><td>Fügen Sie das <strong>Protokollformat</strong> ein, das Sie <a href="#log-format">hier</a> finden.</td></tr><tr><td>Zeitstempel</td><td>Fügen Sie das <strong>Zeitstempelformat</strong> ein, das Sie <a href="#timestamp-format">hier</a> finden.</td></tr><tr><td>Bucket-Name</td><td>Der Name des Amazon S3-Buckets, der von Netacea im <a href="https://portal.netacea.com/">Admin-Portal</a> bereitgestellt wurde</td></tr><tr><td>Domain</td><td>s3.eu-west-1.amazonaws.com</td></tr><tr><td>Zugriffsmethode</td><td>Wählen Sie <strong>'Benutzeranmeldedaten'</strong></td></tr><tr><td>Zugriffsschlüssel</td><td>Kopieren Sie diesen aus dem Netacea <a href="https://portal.netacea.com/">Admin-Portal</a></td></tr><tr><td>Geheimer Schlüssel</td><td>Kopieren Sie diesen aus dem Netacea <a href="https://portal.netacea.com/">Admin-Portal</a></td></tr><tr><td>Zeitraum</td><td></td></tr></tbody></table>

4. Erweitern Sie den Abschnitt **'Erweiterte Optionen'** und wenden Sie die in der folgenden Tabelle aufgeführten spezifischen Werte an:

| Option                          | Wert     |
| ------------------------------- | -------- |
| Pfad                            | /        |
| Öffentlicher PGP-Schlüssel      | Leer     |
| Protokollzeilenformat auswählen | Leer     |
| Komprimierung                   | Gzip     |
| Redundanzstufe                  | Standard |
| ACL                             | Keine    |
| Serverseitige Verschlüsselung   | Keine    |
| Maximale Bytes                  | 0        |

5. Klicken Sie auf **'Erstellen'**, um den Logging-Endpoint zu speichern.

### Protokollformat

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

### Zeitstempelformat

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

### Netacea-Mindestdatensatz

Das obige Protokollformat ermöglicht es Netacea, den folgenden Mindestdatensatz für die Analyse zu erfassen

<table><thead><tr><th width="215">Erforderliche Felder</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Zeitstempel</td><td>Der Zeitpunkt, zu dem die Anfrage empfangen wurde</td></tr><tr><td>IP-Adresse</td><td>Die IP-Adresse, von der die Anfrage gesendet wurde</td></tr><tr><td>User Agent</td><td>Die vom Client im Header gesendete User-Agent-Zeichenkette</td></tr><tr><td>Methode</td><td>Die HTTP-Methode der Anfrage</td></tr><tr><td>Pfad</td><td>Der Pfad der angeforderten Ressource</td></tr><tr><td>Abfrage</td><td>Die Abfragezeichenkette der Anfrage</td></tr><tr><td>Status</td><td>Der vom Server zurückgegebene HTTP-Statuscode</td></tr><tr><td>Referrer</td><td>Die Webseite, von der der Benutzer einem Link gefolgt ist</td></tr><tr><td>Gesendete Bytes</td><td>Die als Teil der Serverantwort gesendeten Bytes</td></tr><tr><td>Client JA3</td><td>JA3-Fingerabdruck des Clients</td></tr><tr><td>X-Forwarded-For*</td><td>Ursprüngliche IP-Adresse einer Client-Anfrage</td></tr><tr><td>Host</td><td>Der Zielhost der Anfrage</td></tr><tr><td>Protokoll</td><td>Das Protokoll der Anfrage</td></tr><tr><td>Anfragezeit</td><td>Die gesamte Zeit, die für die Verarbeitung der Anfrage benötigt wurde</td></tr></tbody></table>

\* Nützlich, wenn sich Proxys im Datenverkehrspfad vom Client zum Origin befinden

### Überlegungen zur Protokollierung

Bei der Konfiguration des Fastly-Log-Versands werden standardmäßig alle Anfragen, einschließlich statischer und Medieninhalte, an den S3-Bucket gesendet. Diese Daten werden von Netacea nicht benötigt. Um dieses Problem zu lösen, müssen wir eine Protokollierungsbedingung zum Service hinzufügen und diese an den Protokollierungsdienst anhängen, der gemäß den obigen Schritten erstellt wurde.

#### Protokollierungsbedingung hinzufügen

1. Navigieren Sie zum neu erstellten Logging-Endpoint:

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

2. Klicken Sie auf **'Neue Response-Bedingung erstellen'**

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

3. Geben Sie die folgenden Details in das Popup-Fenster ein

| Feld          | Wert                                                                                      |
| ------------- | ----------------------------------------------------------------------------------------- |
| Name          | z. B. Netacea\_Log\_Visit                                                                 |
| Anwenden wenn | (req.url !\~ "/media/" && req.url !\~ "/static/") && fastly.ff.visits\_this\_service == 0 |
| Priorität     | 10                                                                                        |

{% hint style="warning" %}
Erweitern Sie den Abschnitt **'Erweiterte Optionen'**, um die Priorität festzulegen
{% endhint %}

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

4. Klicken Sie auf **'Speichern und anwenden'**

### Abschluss

* Überprüfen Sie die Konfiguration auf Fehlermeldungen oder Warnungen.
* Sobald bestätigt, stellen Sie Ihre Änderungen bereit, indem Sie auf **Aktivieren** klicken.

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