

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Eseguire query sui log di Network Load Balancer
<a name="networkloadbalancer-classic-logs"></a>

Utilizzare Athena per analizzare ed elaborare i log di Network Load Balancer. Questi log ricevono informazioni dettagliate sulle richieste Transport Layer Security (TLS) inviate al Network Load Balancer. Puoi utilizzare questi log per analizzare i modelli di traffico e risolvere i problemi che potresti incontrare. 

Prima di analizzare i log di accesso di Network Load Balancer, abilitarli e configurali affinché siano salvati nel bucket Amazon S3 di destinazione. Per ulteriori informazioni e per informazioni su ogni voce del log di accesso a Network Load Balancer, consulta [Log di accesso al Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html).

**Per creare la tabella per i log di Network Load Balancer**

1. Copiare e incollare la seguente istruzione DDL nella console Athena. Controlla la [sintassi ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html#access-log-file-format)dei record di log di Network Load Balancer. Aggiornare l’istruzione come richiesto per includere le colonne e l’espressione regolare corrispondenti ai propri record di log.

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS nlb_tls_logs (
               type string,
               version string,
               time string,
               elb string,
               listener_id string,
               client_ip string,
               client_port int,
               target_ip string,
               target_port int,
               tcp_connection_time_ms double,
               tls_handshake_time_ms double,
               received_bytes bigint,
               sent_bytes bigint,
               incoming_tls_alert int,
               cert_arn string,
               certificate_serial string,
               tls_cipher_suite string,
               tls_protocol_version string,
               tls_named_group string,
               domain_name string,
               alpn_fe_protocol string,
               alpn_be_protocol string,
               alpn_client_preference_list string,
               tls_connection_creation_time 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]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?'
               )
               LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/AWS_account_ID/elasticloadbalancing/region';
   ```

1. Modifica il bucket Amazon S3 `LOCATION` per specificare la destinazione dei tuoi log di Network Load Balancer.

1. Eseguire la query nella console Athena. Una volta completata la query, Athena registra la tabella `nlb_tls_logs`, rendendo i dati in essa contenuti pronti per le query.

## Query di esempio
<a name="query-nlb-example"></a>

Per vedere quante volte viene utilizzato un certificato, utilizzare una query simile a questo esempio:

```
SELECT count(*) AS 
         ct,
         cert_arn
FROM "nlb_tls_logs"
GROUP BY  cert_arn;
```

La query seguente mostra come molti utenti utilizzano una versione di TLS precedente alla 1.3:

```
SELECT tls_protocol_version,
         COUNT(tls_protocol_version) AS 
         num_connections,
         client_ip
FROM "nlb_tls_logs"
WHERE tls_protocol_version < 'tlsv13'
GROUP BY tls_protocol_version, client_ip;
```

Utilizzare la seguente query per identificare le connessioni che richiedono un tempo di handshake TLS lungo:

```
SELECT *
FROM "nlb_tls_logs"
ORDER BY  tls_handshake_time_ms DESC 
LIMIT 10;
```

Utilizzare la seguente query per identificare e contare quali versioni del protocollo TLS e suite di cifratura sono state negoziate negli ultimi 30 giorni.

```
SELECT tls_cipher_suite,
         tls_protocol_version,
         COUNT(*) AS ct
FROM "nlb_tls_logs"
WHERE from_iso8601_timestamp(time) > current_timestamp - interval '30' day
        AND NOT tls_protocol_version = '-'
GROUP BY tls_cipher_suite, tls_protocol_version
ORDER BY ct DESC;
```