¿Cómo puedo utilizar Amazon Athena para anlizar mis registros de acceso del equilibrador de carga de aplicación?
4 minutos de lectura
0
Quiero utilizar Amazon Athena para analizar mis registros de acceso del equilibrador de carga de aplicación.
Breve descripción
Elastic Load Balancing no activa los registros de acceso de forma predeterminada. Al activar los registros de acceso, debe especificar un bucket de Amazon Simple Storage Service (Amazon S3). Athena analiza los registros de acceso del equilibrador de carga de aplicación y del equilibrador de carga clásico, y los almacena en el bucket de Amazon S3.
Nota: Esta solución solo es válida para los equilibradores de carga de aplicación.
Solución
Creación de una base de datos y una tabla para los registros del equilibrador de carga de aplicación
Siga estos pasos:
- Abra la consola de Athena.
- Para crear una base de datos, ejecute el siguiente comando en el Query Editor:
Nota: Se recomienda crear la base de datos en la misma región de AWS que el bucket de Amazon S3.CREATE DATABASE alb_db
- En la base de datos, cree una tabla alb_logs para los registros del equilibrador de carga de aplicación.
Ejemplo de consulta:
Nota: En la consulta anterior, sustituya el nombre de la tabla y las ubicaciones de S3 por el nombre de su tabla y sus ubicaciones de S3. Para projection.day.range, sustituya 2022/01/01 por una fecha de inicio. Para mejorar el rendimiento de las consultas, cree una tabla con proyección de particiones.CREATE EXTERNAL TABLE IF NOT EXISTS alb_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://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/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://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/${day}" )
- Para crear una tabla con particiones almacenadas en el Catálogo de datos de AWS Glue, ejecute la siguiente consulta:
Nota: En la consulta anterior, sustituya el nombre de la tabla y las ubicaciones de S3 por el nombre de su tabla y sus ubicaciones de S3.CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs_partitioned(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://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/'
- (Opcional) Para cargar las particiones, ejecute la siguiente instrucción de DDL ALTER TABLE ADD PARTITION:
Nota: Si la tabla usa la proyección de particiones, omita el paso de carga de las particiones. No utilice un rastreador de AWS Glue en los registros del equilibrador de carga de aplicación.ALTER TABLE alb_logs_partitioned ADD PARTITION (day = '2022/05/21') LOCATION's3://<your-alb-logs-directory>/AWSLogs/<ACCOUNT-ID>/elasticloadbalancing/<REGION>/2022/05/21/'
- En el panel de navegación, en Tablas, elija Vista previa de la tabla.
- En la ventana Resultados, observe los datos de los registros de acceso del equilibrador de carga de aplicación.
Nota: Para ejecutar instrucciones SQL en la tabla, utilice el Query Editor.
Información relacionada
Consulta de los registros del equilibrador de carga de aplicación
Vídeos relacionados
Mire el vídeo de Islam para obtener más información (4:21)
OFICIAL DE AWSActualizada hace 4 meses
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace 3 años