Publicar logs para instancias de Amazon RDS o Aurora para MySQL en CloudWatch
Configurar los logs de registros en la instancia de base de datos para enviar los registros a CloudWatch
Para ver los registros de Amazon RDS en CloudWatch, primero debe habilitar el registro en la instancia de base de datos o el clúster.
Para esta configuración tienes que tener en cuenta en nuestro cluster habilitar
enabled_cloudwatch_logs_exports:
Donde configuramos que vamos a exportar a CloudWatch, el conjunto de tipos de registros para habilitar la exportación a registros de CloudWatch. Si se omite, no se exportarán registros. Valores válidos (según motor).
MySQL y MariaDB: audit
, error
, general
, slowquery
.
PostgreSQL:postgresql
, upgrade
.
MSSQL: agent
, error
.
Oracle: alert
, audit
, listener
, trace
.
resource "aws_db_instance" "default" {
allocated_storage = 20
storage_type = "gp2"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t2.micro"
name = "mydb"
username = "foo"
password = "foobarbaz"
parameter_group_name = "default.mysql5.7"
db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.general_purpose_cluster_parameter_group.id
enabled_cloudwatch_logs_exports = ["audit", "error", "general", "slowquery"]
}
Luego, puede configurar los logs de registros en la instancia de base de datos para enviar los registros a CloudWatch se lo habilitamos a nuestro cluster con enabled_cloudwatch_logs_exports , pero tienes tener en cuenta una configuracion del parameter-groups de nuestro cluster .
resource "aws_rds_cluster_parameter_group" "general_purpose_cluster_parameter_group" {
name = "cluster-rds-instance-parameter-group"
family = "aurora-mysql5.7"
description = "RDS default cluster parameter group"
parameter {
name = "character_set_client"
value = "utf8"
}
parameter {
name = "character_set_connection"
value = "utf8"
}
parameter {
name = "character_set_database"
value = "utf8"
}
parameter {
name = "character_set_filesystem"
value = "utf8"
}
parameter {
name = "character_set_results"
value = "utf8"
}
parameter {
name = "character_set_server"
value = "utf8"
}
parameter {
name = "collation_connection"
value = "utf8_general_ci"
}
parameter {
name = "collation_server"
value = "utf8_general_ci"
}
parameter {
name = "general_log"
value = "1"
}
parameter {
name = "slow_query_log"
value = "1"
}
parameter {
name = "log_output"
value = "FILE"
}
parameter {
name = "long_query_time"
value = "0"
}
parameter {
name = "server_audit_events"
value = "CONNECT,QUERY,QUERY_DCL,QUERY_DDL,QUERY_DML,TABLE"
}
parameter { //add user audit
name = "server_audit_incl_users"
value = "admin"
}
parameter {
name = "server_audit_logging"
value = "1"
}
}
Es importante habilitar en el para parameter-groups que por defecto estan desabilitados.
general_log =1
slow_query_log = 1
log_output= FILE
server_audit_events = "CONNECT,QUERY,QUERY_DCL,QUERY_DDL,QUERY_DML,TABLE"
server_audit_incl_users ="admin" lista de usuarios que queremos hacerle seguimiento.
server_audit_logging=1
con esta configuración ya podríamos ver los logs de mysql en CloudWatch.
Happy code.
Ejemplo con cloudformation
https://aws.amazon.com/es/premiumsupport/knowledge-center/rds-aurora-mysql-logs-cloudwatch/