MySQL

MySQL es un sistema de administración de bases de datos relacionales que se ejecuta como un servidor que proporciona acceso multiusuario a varias bases de datos. Para obtener más información, visita mysql.com.

Requisitos previos

Para recopilar la telemetría de MySQL, debes instalar el agente de operaciones versión 2.5.0 o posterior.

Configura el agente de operaciones para MySQL

Sigue las instrucciones en Configura el agente de operaciones y agrega los elementos necesarios para recopilar registros de tus instancias de MySQL httpd y reinicia el agente.

Configuración de ejemplo

El siguiente comando crea el archivo de configuración para recopilar y transferir registros para MySQL y reiniciar el agente de operaciones en Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    mysql_error:
      type: mysql_error
    mysql_general:
      type: mysql_general
    mysql_slow:
      type: mysql_slow
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
EOF
sudo service google-cloud-ops-agent restart

Configura la recopilación de registros

A fin de transferir registros desde MySQL, debes crear receptores para los registros que MySQL produce y, luego, crear una canalización para los receptores nuevos.

A fin de configurar un receptor para tus registros mysql_error, especifica los siguientes campos:

Campo Predeterminada Descripción
type Este valor debe ser mysql_error.
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] Una lista de rutas de acceso del sistema de archivos que se leerán mediante la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/mysql/*.log.
exclude_paths [] Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.


A fin de configurar un receptor para los registros mysql_general, especifica los siguientes campos:

Campo Predeterminada Descripción
type Este valor debe ser mysql_general.
include_paths [/var/lib/mysql/${HOSTNAME}.log] Los archivos de registro que se leerán.
exclude_paths [] Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.


A fin de configurar un receptor para los registros mysql_slow, especifica los siguientes campos:

Campo Predeterminada Descripción
type Este valor debe ser mysql_slow.
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] Los archivos de registro que se leerán.
exclude_paths [] Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.

¿Qué se registra?

El logName de los registros mysql_error, mysql_general y mysql_slow se deriva de los ID del receptor especificados en la configuración.

Según la versión de MySQL, los registros mysql_error pueden contener los siguientes campos dentro de LogEntry:

Campo Tipo Descripción
jsonPayload.level string Nivel de entrada de registro
jsonPayload.tid número ID de subproceso en el que se originó el registro
jsonPayload.errorCode string Código de error de MySQL asociado con el registro
jsonPayload.subsystem string Subsistema de MySQL en el que se originó el registro
jsonPayload.message string Mensaje del registro
severity string (LogSeverity) Nivel de entrada de registro (traducido)
timestamp string (Timestamp) Hora en que se recibió la solicitud

Los campos en blanco o faltantes no estarán presentes en la entrada de registro.


Los registros mysql_general contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.tid número ID de subproceso en el que se originó el registro
jsonPayload.command string Tipo de acción de la base de datos que se registra
jsonPayload.message string Registro de la acción de la base de datos
timestamp string (Timestamp) Hora en la que se registró la entrada


Los registros mysql_slow contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.user string Usuario que ejecutó la consulta
jsonPayload.database string Base de datos en la que se ejecutó la consulta
jsonPayload.host string Host de la instancia de base de datos
jsonPayload.ipAddress string Dirección de la instancia de base de datos
jsonPayload.tid número ID del subproceso en el que se registró la consulta
jsonPayload.queryTime número El tiempo de ejecución de la declaración en segundos
jsonPayload.lockTime número El tiempo para adquirir bloqueos en segundos
jsonPayload.rowsSent número La cantidad de filas enviadas al cliente
jsonPayload.rowsExamined número La cantidad de filas que examina la capa del servidor
jsonPayload.errorNumber número El número de error de la declaración o 0 si no se produjo ningún error
jsonPayload.killed número Si la declaración se cerró, el número de error que indica la razón, o 0 si la declaración finalizó con normalidad
jsonPayload.bytesReceived número La cantidad de bytes recibidos de todos los clientes
jsonPayload.bytesSent número La cantidad de bytes enviados a todos los clientes
jsonPayload.readFirst número La cantidad de veces que se leyó la primera entrada en un índice
jsonPayload.readLast número La cantidad de solicitudes para leer la última clave en un índice
jsonPayload.readKey número La cantidad de solicitudes para leer una fila según una clave
jsonPayload.readNext número La cantidad de solicitudes para leer la siguiente fila en orden de clave
jsonPayload.readPrev número La cantidad de solicitudes para leer la fila anterior en orden de clave
jsonPayload.readRnd número Cantidad de solicitudes para leer una fila según una posición fija
jsonPayload.readRndNext número Cantidad de solicitudes para leer la siguiente fila en el archivo de datos
jsonPayload.sortMergePasses número La cantidad de pases de combinación que tuvo que hacer el algoritmo de clasificación
jsonPayload.sortRangeCount número La cantidad de órdenes que se realizaron mediante rangos
jsonPayload.sortRows número La cantidad de filas ordenadas
jsonPayload.sortScanCount número La cantidad de clasificaciones que se realizaron mediante el análisis de la tabla
jsonPayload.createdTmpDiskTables número La cantidad de tablas temporales internas en el disco que creó el servidor
jsonPayload.createdTmpTables número La cantidad de tablas temporales internas que creó el servidor
jsonPayload.startTime string La hora de inicio de la ejecución de la declaración
jsonPayload.endTime string La hora de finalización de la ejecución de la declaración
jsonPayload.message string El texto completo de la consulta
timestamp string (Timestamp) Hora en la que se registró la entrada

  Estos campos solo se proporcionan si la variable de sistema log_slow_extra está configurada como 'ON'. Esta variable está disponible a partir de la versión 8.0.14. de MySQL

Para obtener información sobre estos campos, consulta la documentación de MySQL.

Verifica la configuración

Puedes usar el Explorador de registros para verificar que configuraste correctamente el receptor de MySQL. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar registros.

Para verificar que se transfieran los registros, ve a Explorador de registros y ejecuta la siguiente consulta a fin de ver los registros de MySQL:

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/mysql_error" OR "projects/PROJECT_ID/logs/mysql_general" OR "projects/PROJECT_ID/logs/mysql_slow")