

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Abfragen von Protokollen für Application Load Balancer
<a name="application-load-balancer-logs"></a>

Ein Application Load Balancer ist eine Lastverteilungsoption für Elastic Load Balancing, die eine Verteilung des Datenverkehrs in einer Microservices-Bereitstellung mit Containern ermöglicht. Durch das Abfragen von Application Load Balancer-Protokollen können Sie die Datenverkehrsquelle, die Latenz und die Bytes anzeigen, die zwischen Elastic Load Balancing-Instances und Backend-Anwendungen übermittelt werden. Weitere Informationen finden Sie unter [Zugriffsprotokolle für Ihren Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) und [Verbindungsprotokolle für Ihren Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html) im *Benutzerhandbuch für Application Load Balancer*.

## Voraussetzungen
<a name="application-load-balancer-logs-prerequisites"></a>
+ Aktivieren Sie die [Zugriffsprotokollierung](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) oder [Verbindungsprotokollierung ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html), damit Protokolle für Application Load Balancer in Ihrem Amazon-S3-Bucket gespeichert werden können.
+ Eine Datenbank, die die Tabelle enthält, die Sie für Athena erstellen werden. Um eine Datenbank zu erstellen, können Sie Athena oder die AWS Glue Konsole verwenden. Weitere Informationen finden Sie unter [Erstellen von Datenbanken in Athena](creating-databases.md) in diesem Leitfaden oder unter [Arbeiten mit Datenbanken in der AWS -Glue-Konsole](https://docs.aws.amazon.com/glue/latest/dg/console-databases.html) im *Entwicklerhandbuch für AWS Glue *. 

**Topics**
+ [Voraussetzungen](#application-load-balancer-logs-prerequisites)
+ [Erstellen der Tabelle für ALB-Zugriffsprotokolle](create-alb-access-logs-table.md)
+ [Erstellen der Tabelle für ALB-Zugriffsprotokolle in Athena mithilfe der Partitionsprojektion](create-alb-access-logs-table-partition-projection.md)
+ [Beispielabfragen für ALB-Zugriffsprotokolle](query-alb-access-logs-examples.md)
+ [Erstellen der Tabelle für ALB-Verbindungsprotokolle](create-alb-connection-logs-table.md)
+ [Erstellen der Tabelle für ALB-Verbindungsprotokolle in Athena mithilfe der Partitionsprojektion](create-alb-connection-logs-table-partition-projection.md)
+ [Beispielabfragen für ALB-Verbindungsprotokolle](query-alb-connection-logs-examples.md)
+ [Weitere Ressourcen](application-load-balancer-logs-additional-resources.md)

# Erstellen der Tabelle für ALB-Zugriffsprotokolle
<a name="create-alb-access-logs-table"></a>

1. Kopieren Sie die folgende `CREATE TABLE`-Anweisung, fügen Sie sie in den Abfrage-Editor der Athena-Konsole ein und ändern Sie sie dann nach Bedarf für Ihre eigenen Anforderungen an die Protokolleinträge. Weitere Informationen zu den ersten Schritten mit der Athena-Konsole finden Sie unter [Erste Schritte](getting-started.md). Ersetzen Sie den Pfad in der `LOCATION`-Klausel durch den Speicherort Ihres Amazon S3-Zugriffsprotokollordners. Weitere Informationen zum Speicherort der Zugriffsprotokolldatei finden Sie unter [Zugriffsprotokoll-Dateien](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-file-format) im *Benutzerhandbuch für Application Load Balancer*.

   Informationen zu den einzelnen Protokolldateien-Feldern finden Sie unter [Zugriffsprotokoll-Einträge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-format) im *Benutzerhandbuch für Application Load Balancer*.
**Anmerkung**  
Die folgende `CREATE TABLE`-Beispielanweisung enthält die kürzlich hinzugefügten Spalten `classification`, `classification_reason` und `conn_trace_id` ('Verfolgungs-ID' oder TID). Um eine Tabelle für Application Load Balancer-Zugriffsprotokolle zu erstellen, die diese Einträge nicht enthalten, entfernen Sie die entsprechenden Spalten aus der `CREATE TABLE`-Anweisung und ändern Sie den regulären Ausdruck entsprechend. 

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS alb_access_logs (
               type string,
               time string,
               elb string,
               client_ip string,
               client_port int,
               target_ip string,
               target_port int,
               request_processing_time double,
               target_processing_time double,
               response_processing_time double,
               elb_status_code int,
               target_status_code string,
               received_bytes bigint,
               sent_bytes bigint,
               request_verb string,
               request_url string,
               request_proto string,
               user_agent string,
               ssl_cipher string,
               ssl_protocol string,
               target_group_arn string,
               trace_id string,
               domain_name string,
               chosen_cert_arn string,
               matched_rule_priority string,
               request_creation_time string,
               actions_executed string,
               redirect_url string,
               lambda_error_reason string,
               target_port_list string,
               target_status_code_list string,
               classification string,
               classification_reason string,
               conn_trace_id string
               )
               ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
               WITH SERDEPROPERTIES (
               'serialization.format' = '1',
               'input.regex' = 
           '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\\s]+?)\" \"([^\\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)? ?( .*)?'
               )
               LOCATION 's3://amzn-s3-demo-bucket/access-log-folder-path/'
   ```
**Anmerkung**  
Wir empfehlen, das Muster *`?( .*)?`* am Ende des `input.regex`-Parameters immer beizubehalten, um künftige Protokolleinträge zu verarbeiten, falls neue ALB-Protokollfelder hinzugefügt werden. 

1. Führen Sie die Abfrage in der Athena-Konsole aus. Nach Beendigung der Abfrage registriert Athena die `alb_access_logs`-Tabelle, sodass Sie die Daten zum Ausgeben von Abfragen nutzen können.

# Erstellen der Tabelle für ALB-Zugriffsprotokolle in Athena mithilfe der Partitionsprojektion
<a name="create-alb-access-logs-table-partition-projection"></a>

Da ALB-Zugriffsprotokolle über eine bekannte Struktur verfügen, deren Partitionsschema Sie im Voraus angeben können, können Sie die Abfragelaufzeit reduzieren und die Partitionsverwaltung mithilfe der Athena-Partitionsprojektion-Feature automatisieren. Partitionsprojektion fügt automatisch neue Partitionen hinzu, wenn neue Daten hinzugefügt werden. Dadurch entfällt die Notwendigkeit, Partitionen manuell mithilfe von `ALTER TABLE ADD PARTITION` hinzuzufügen. 

Die folgende `CREATE TABLE`-Beispielanweisung verwendet automatisch die Partitionsprojektion in ALB-Zugriffsprotokollen von einem angegebenen Datum bis zur Gegenwart für eine einzelne AWS -Region. Die Anweisung basiert auf dem Beispiel im vorherigen Abschnitt, fügt jedoch `PARTITIONED BY`- und `TBLPROPERTIES`-Klauseln hinzu, um die Partitionsprojektion zu ermöglichen. Ersetzen Sie in den `LOCATION`- und `storage.location.template`-Klauseln die Platzhalter durch Werte, die den Amazon-S3-Bucket-Speicherort Ihrer ALB-Zugriffsprotokolle angeben. Weitere Informationen zum Speicherort der Zugriffsprotokolldatei finden Sie unter [Zugriffsprotokoll-Dateien](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-file-format) im *Benutzerhandbuch für Application Load Balancer*. Ersetzen Sie für `projection.day.range`*2022*/*01*/*01*durch das Startdatum, das Sie verwenden möchten. Nach dem erfolgreichen Ausführen der Abfrage können Sie die Tabelle abfragen. Sie müssen `ALTER TABLE ADD PARTITION` nicht ausführen, um die Partitionen zu laden. Informationen zu den einzelnen Protokolldateifeldern finden Sie unter [Zugriffsprotokolleinträge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-log-entry-format). 

```
CREATE EXTERNAL TABLE IF NOT EXISTS alb_access_logs (
            type string,
            time string,
            elb string,
            client_ip string,
            client_port int,
            target_ip string,
            target_port int,
            request_processing_time double,
            target_processing_time double,
            response_processing_time double,
            elb_status_code int,
            target_status_code string,
            received_bytes bigint,
            sent_bytes bigint,
            request_verb string,
            request_url string,
            request_proto string,
            user_agent string,
            ssl_cipher string,
            ssl_protocol string,
            target_group_arn string,
            trace_id string,
            domain_name string,
            chosen_cert_arn string,
            matched_rule_priority string,
            request_creation_time string,
            actions_executed string,
            redirect_url string,
            lambda_error_reason string,
            target_port_list string,
            target_status_code_list string,
            classification string,
            classification_reason string,
            conn_trace_id string
            )
            PARTITIONED BY
            (
             day STRING
            )
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' = 
        '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) (.*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-_]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^ ]*)\" \"([^\\s]+?)\" \"([^\\s]+)\" \"([^ ]*)\" \"([^ ]*)\" ?([^ ]*)? ?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/'
            TBLPROPERTIES
            (
             "projection.enabled" = "true",
             "projection.day.type" = "date",
             "projection.day.range" = "2022/01/01,NOW",
             "projection.day.format" = "yyyy/MM/dd",
             "projection.day.interval" = "1",
             "projection.day.interval.unit" = "DAYS",
             "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}"
            )
```

Weitere Informationen zur Partitionsprojektion finden Sie unter [Partitionsprojektion mit Amazon Athena verwenden](partition-projection.md).

**Anmerkung**  
Wir empfehlen, das Muster *?( .\$1)?* am Ende des `input.regex`-Parameters immer beizubehalten, um künftige Protokolleinträge zu verarbeiten, falls neue ALB-Protokollfelder hinzugefügt werden. 

# Beispielabfragen für ALB-Zugriffsprotokolle
<a name="query-alb-access-logs-examples"></a>

Bei der folgenden Abfrage wird die Anzahl der HTTP GET-Anfragen gezählt und nach Client-IP-Adressen gruppiert, die vom Load Balancer empfangen wurden:

```
SELECT COUNT(request_verb) AS
 count,
 request_verb,
 client_ip
FROM alb_access_logs
GROUP BY request_verb, client_ip
LIMIT 100;
```

Eine weitere Abfrage zeigt die von Safari-Browserbenutzern URLs besuchten:

```
SELECT request_url
FROM alb_access_logs
WHERE user_agent LIKE '%Safari%'
LIMIT 10;
```

Die folgende Abfrage zeigt Datensätze mit ELB-Statuscodewerten größer oder gleich 500.

```
SELECT * FROM alb_access_logs
WHERE elb_status_code >= 500
```

Im folgenden Beispiel wird gezeigt, wie Sie die Protokolle nach `datetime` durchsuchen:

```
SELECT client_ip, sum(received_bytes) 
FROM alb_access_logs
WHERE parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') 
     BETWEEN parse_datetime('2018-05-30-12:00:00','yyyy-MM-dd-HH:mm:ss') 
     AND parse_datetime('2018-05-31-00:00:00','yyyy-MM-dd-HH:mm:ss') 
GROUP BY client_ip;
```

Die folgende Abfrage fragt die Tabelle ab, die die Partitionsprojektion für alle ALB-Zugriffsprotokolle vom angegebenen Tag verwendet.

```
SELECT * 
FROM alb_access_logs 
WHERE day = '2022/02/12'
```

# Erstellen der Tabelle für ALB-Verbindungsprotokolle
<a name="create-alb-connection-logs-table"></a>

1. Kopieren Sie die folgende `CREATE TABLE`-Beispielanweisung, fügen Sie sie in den Abfrage-Editor der Athena-Konsole ein und ändern Sie sie dann nach Bedarf für Ihre eigenen Anforderungen an die Protokolleinträge. Weitere Informationen zu den ersten Schritten mit der Athena-Konsole finden Sie unter [Erste Schritte](getting-started.md). Ersetzen Sie den Pfad in der `LOCATION`-Klausel durch den Speicherort Ihres Amazon S3-Verbindungsprotokollordners. Weitere Informationen zum Speicherort der Verbindungsprotokolldatei finden Sie unter [Verbindungsprotokolldateien](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-file-format) im *Benutzerhandbuch für Application Load Balancers*. Informationen zu den einzelnen Protokolldateifeldern finden Sie unter [Verbindungsprotokolleinträge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-entry-format). 

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs (
            time string,
            client_ip string,
            client_port int,
            listener_port int,
            tls_protocol string,
            tls_cipher string,
            tls_handshake_latency double,
            leaf_client_cert_subject string,
            leaf_client_cert_validity string,
            leaf_client_cert_serial_number string,
            tls_verify_status string,
            conn_trace_id string
            ) 
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' =
             '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/connection-log-folder-path/'
   ```

1. Führen Sie die Abfrage in der Athena-Konsole aus. Nach Beendigung der Abfrage registriert Athena die `alb_connection_logs`-Tabelle, sodass Sie die Daten zum Ausgeben von Abfragen nutzen können.

# Erstellen der Tabelle für ALB-Verbindungsprotokolle in Athena mithilfe der Partitionsprojektion
<a name="create-alb-connection-logs-table-partition-projection"></a>

Da ALB-Verbindungsprotokolle über eine bekannte Struktur verfügen, deren Partitionsschema Sie im Voraus angeben können, können Sie die Abfragelaufzeit reduzieren und die Partitionsverwaltung mithilfe der Athena-Partitionsprojektion-Feature automatisieren. Partitionsprojektion fügt automatisch neue Partitionen hinzu, wenn neue Daten hinzugefügt werden. Dadurch entfällt die Notwendigkeit, Partitionen manuell mithilfe von `ALTER TABLE ADD PARTITION` hinzuzufügen. 

Die folgende `CREATE TABLE`-Beispielanweisung verwendet automatisch die Partitionsprojektion in ALB-Verbindungsprotokollen von einem angegebenen Datum bis zur Gegenwart für eine einzelne AWS -Region. Die Anweisung basiert auf dem Beispiel im vorherigen Abschnitt, fügt jedoch `PARTITIONED BY`- und `TBLPROPERTIES`-Klauseln hinzu, um die Partitionsprojektion zu ermöglichen. Ersetzen Sie in den `LOCATION`- und `storage.location.template`-Klauseln die Platzhalter durch Werte, die den Amazon-S3-Bucket-Speicherort Ihrer ALB-Verbindungsprotokolle angeben. Weitere Informationen zum Speicherort der Verbindungsprotokolldatei finden Sie unter [Verbindungsprotokolldateien](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-file-format) im *Benutzerhandbuch für Application Load Balancers*. Ersetzen Sie für `projection.day.range`*2023*/*01*/*01*durch das Startdatum, das Sie verwenden möchten. Nach dem erfolgreichen Ausführen der Abfrage können Sie die Tabelle abfragen. Sie müssen `ALTER TABLE ADD PARTITION` nicht ausführen, um die Partitionen zu laden. Informationen zu den einzelnen Protokolldateifeldern finden Sie unter [Verbindungsprotokolleinträge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-connection-logs.html#connection-log-entry-format).

```
CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs (
         time string,
         client_ip string,
         client_port int,
         listener_port int,
         tls_protocol string,
         tls_cipher string,
         tls_handshake_latency double,
         leaf_client_cert_subject string,
         leaf_client_cert_validity string,
         leaf_client_cert_serial_number string,
         tls_verify_status string,
         conn_trace_id string
         )
            PARTITIONED BY
            (
             day STRING
            )
            ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
            WITH SERDEPROPERTIES (
            'serialization.format' = '1',
            'input.regex' =
             '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?'
            )
            LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/'
            TBLPROPERTIES
            (
             "projection.enabled" = "true",
             "projection.day.type" = "date",
             "projection.day.range" = "2023/01/01,NOW",
             "projection.day.format" = "yyyy/MM/dd",
             "projection.day.interval" = "1",
             "projection.day.interval.unit" = "DAYS",
             "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}"
            )
```

Weitere Informationen zur Partitionsprojektion finden Sie unter [Partitionsprojektion mit Amazon Athena verwenden](partition-projection.md).

# Beispielabfragen für ALB-Verbindungsprotokolle
<a name="query-alb-connection-logs-examples"></a>

Die folgende Abfrage zählt die Vorkommen, bei denen der Wert für `tls_verify_status` nicht `'Success'` war, gruppiert nach Client-IP-Adresse:

```
SELECT DISTINCT client_ip, count() AS count FROM alb_connection_logs
WHERE tls_verify_status != 'Success'
GROUP BY client_ip
ORDER BY count() DESC;
```

Die folgende Abfrage sucht nach Vorkommen, bei denen der Wert für `tls_handshake_latency` im angegebenen Zeitraum mehr als 2 Sekunden betrug:

```
SELECT * FROM alb_connection_logs
WHERE 
  (
    parse_datetime(time, 'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') 
    BETWEEN 
    parse_datetime('2024-01-01-00:00:00', 'yyyy-MM-dd-HH:mm:ss') 
    AND 
    parse_datetime('2024-03-20-00:00:00', 'yyyy-MM-dd-HH:mm:ss') 
  ) 
  AND 
    (tls_handshake_latency >= 2.0);
```

# Weitere Ressourcen
<a name="application-load-balancer-logs-additional-resources"></a>

Weitere Informationen zur Verwendung von ALB-Protokolle finden Sie in den folgenden Ressourcen.
+ [Wie analysiere ich meine Zugriffsprotokolle von Application Load Balancer mit Amazon Athena](https://repost.aws/knowledge-center/athena-analyze-access-logs) im *AWS Knowledge Center*.
+ Informationen zu den HTTP-Statuscodes in Elastic Load Balancing finden Sie unter [Fehlerbehebung bei Ihren Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html) im *Benutzerhandbuch für Application Load Balancer*.
+ [Katalogisieren und analysieren Sie Application Load Balancer Balancer-Protokolle effizienter mit AWS Glue benutzerdefinierten Klassifikatoren und Amazon Athena](https://aws.amazon.com/blogs/big-data/catalog-and-analyze-application-load-balancer-logs-more-efficiently-with-aws-glue-custom-classifiers-and-amazon-athena/) im *AWS Big* Data-Blog.