MariaDB

La integración de MariaDB recopila métricas de rendimiento relacionadas con InnoDB, el grupo de búferes y otras operaciones. También recopila registros generales, de errores y de consultas lentas, y los analiza en una carga útil de JSON. Los registros de errores se analizan para su código de error y subsistema. Los registros de consultas lentas se analizan en pares clave-valor que describen el rendimiento de una consulta, incluidos el tiempo de consulta y las filas examinadas.

Para obtener más información sobre este motor de base de datos, consulta la documentación de MariaDB.

Requisitos previos

Para recopilar telemetría de MariaDB, debes instalar el Agente de operaciones:

  • Para las métricas, instala la versión 2.37.0 o una posterior.
  • Para los registros, instala la versión 2.37.0 o una posterior.

La integración es compatible con las versiones 10.1.X a 10.7.X de MariaDB.

Configura tu instancia de MariaDB

MariaDB es una bifurcación comercializada que es compatible con la comunidad del sistema de administración de bases de datos relacionales (RDBMS) de MySQL. Para recopilar registros y métricas de MariaDB, usa los receptores mysql.

El receptor de métricas mysql se conecta de forma predeterminada a un servidor local de MariaDB mediante un socket Unix y la autenticación Unix como usuario root.

El receptor de registros mysql_error recopila registros de las rutas de archivos predeterminadas que se muestran en la siguiente tabla. En algunas plataformas, MariaDB accede a journald de forma predeterminada en lugar de a un archivo. Para configurar MariaDB para que acceda a un archivo, establece la opción log_error en la configuración de MariaDB. Para obtener más información sobre la configuración de log_error, consulta Cómo escribir el registro de errores en un archivo.

Configura el agente de operaciones para MariaDB

Sigue la guía para configurar el Agente de operaciones, agrega los elementos necesarios para recopilar telemetría de las instancias de MariaDB y reinicia el agente.

Configuración de ejemplo

Con los siguientes comandos, se crea la configuración para recopilar y transferir telemetría de MariaDB, y se reinicia el Agente de operaciones.

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    mysql:
      type: mysql
  service:
    pipelines:
      mysql:
        receivers:
        - mysql
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
sleep 60

Configura la recopilación de registros

Para transferir registros desde MariaDB, debes crear un receptor para los registros que produce la base de datos y, luego, crear una canalización para el receptor nuevo.

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

Campo Predeterminado Descripció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.
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log, /run/mysqld/mysqld.err, /var/lib/mysql/${HOSTNAME}.err] Una lista de rutas de acceso del sistema de archivos que se leerán con la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/mysql/*.log.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type Este valor debe ser mysql_error.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

Para configurar un receptor para tus registros mysql_general, especifica los siguientes campos:

Campo Predeterminado Descripció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.
include_paths [/var/lib/mysql/${HOSTNAME}.log] Una lista de rutas de acceso del sistema de archivos que se leerán a través de la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type Este valor debe ser mysql_general.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

Para configurar un receptor para tus registros mysql_slow, especifica los siguientes campos:

Campo Predeterminado Descripció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.
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] Una lista de rutas de acceso del sistema de archivos que se leerán a través de la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type Este valor debe ser mysql_slow.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

¿Qué se registra?

logName se deriva de los ID de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

Los registros mysql_error contienen los siguientes campos en LogEntry:

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

Los registros mysql_general contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
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
jsonPayload.tid número ID de subproceso en el que se originó el registro
severity string (LogSeverity) Nivel de entrada de registro (traducido).

Los registros mysql_slow contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.bytesSent número La cantidad de bytes enviados a todos los clientes
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.createdTmpTableSizes   número La cantidad de bytes utilizados por las tablas temporales internas creadas por el servidor
jsonPayload.database string Base de datos en la que se ejecutó la consulta
jsonPayload.filesort   booleano La sentencia usó filesort
jsonPayload.filesortOnDisk   booleano La sentencia usó filesort y requirió la creación de tablas temporales en el disco
jsonPayload.fullJoin   booleano La instrucción no usó un índice para unir tablas
jsonPayload.fullScan   booleano La sentencia usó un análisis completo de la tabla
jsonPayload.host string Nombre de host desde el que se conectó el cliente
jsonPayload.ipAddress string Dirección IP desde la que se conectó el cliente
jsonPayload.lockTime número El tiempo para adquirir bloqueos en segundos
jsonPayload.message string El texto completo de la consulta
jsonPayload.priorityQueue   booleano La sentencia usó filesort con una cola de prioridad
jsonPayload.queryCacheHit booleano La sentencia se entregó desde la caché de la consulta.
jsonPayload.queryTime número El tiempo de ejecución de la declaración en segundos
jsonPayload.rowsAffected número entero La cantidad de filas afectadas por la sentencia
jsonPayload.rowsExamined número La cantidad de filas que examina la capa del servidor
jsonPayload.rowsSent número La cantidad de filas enviadas al cliente
jsonPayload.sortMergePasses   número La cantidad de pases de combinación que tuvo que hacer el algoritmo de clasificación
jsonPayload.storedRoutine string El nombre de la rutina almacenada que se está ejecutando
jsonPayload.tid número ID del subproceso en el que se registró la consulta
jsonPayload.user string El usuario autenticado que ejecutó la consulta
severity string (LogSeverity) Nivel de entrada de registro (traducido).

 Estos campos solo se proporcionan si la variable del sistema log_slow_verbosity contiene 'query_plan'.

Configura la recopilación de métricas

Para transferir métricas desde MariaDB, debes crear un receptor para las métricas que produce la base de datos y, luego, crear una canalización para el receptor nuevo.

Este receptor no admite el uso de varias instancias en la configuración, por ejemplo, para supervisar varios extremos. Todas estas instancias escriben en las mismas series temporales, y Cloud Monitoring no tiene forma de distinguirlas.

Para configurar un receptor para las métricas de mysql, especifica los siguientes campos:

Campo Predeterminado Descripción
collection_interval 60s Un valor de duración de tiempo, como 30s o 5m.
endpoint /var/run/mysqld/mysqld.sock La combinación de hostname:port o la ruta del socket Unix (que comienza con /) que se usó para conectarse al servidor de PostgreSQL
password La contraseña usada para conectarse al servidor.
type Este valor debe ser mysql.
username root El nombre de usuario usado para conectarse al servidor.

Qué se supervisa

En la siguiente tabla, se proporciona una lista de métricas que el agente de operaciones recopila de la instancia MariaDB.

Tipo de métrica 
Categoría, tipo
Recursos supervisados
Etiquetas
workload.googleapis.com/mysql.buffer_pool_data_pages
GAUGEINT64
gce_instance
status
workload.googleapis.com/mysql.buffer_pool_limit
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.buffer_pool_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.buffer_pool_page_flushes
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/mysql.buffer_pool_pages
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.buffer_pool_size
GAUGEDOUBLE
gce_instance
kind
workload.googleapis.com/mysql.commands
CUMULATIVEINT64
gce_instance
command
workload.googleapis.com/mysql.double_writes
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.handlers
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.log_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.page_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.replica.sql_delay
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.replica.time_behind_source
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.row_locks
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.row_operations
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/mysql.sorts
CUMULATIVEINT64
gce_instance
kind
workload.googleapis.com/mysql.threads
GAUGEDOUBLE
gce_instance
kind

Verifica la configuración

En esta sección, se describe cómo verificar que hayas configurado de forma correcta el receptor de MariaDB. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar telemetría.

Para verificar que los registros de MariaDB se envíen a Cloud Logging, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Explorador de registros:

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. Ingresa la siguiente consulta en el editor y, luego, haz clic en Ejecutar consulta:
    resource.type="gce_instance"
    (log_id("mysql_error") OR log_id("mysql_general") OR log_id("mysql_slow"))
    

Para verificar que las métricas de MariaDB se envíen a Cloud Monitoring, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página  Explorador de métricas:

    Ir al Explorador de métricas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. En la barra de herramientas del panel del compilador de consultas, selecciona el botón cuyo nombre sea MQL o PromQL.
  3. Verifica que MQL esté seleccionado en el botón de activación Lenguaje. El botón de activación de lenguaje se encuentra en la misma barra de herramientas que te permite dar formato a tu consulta.
  4. Ingresa la siguiente consulta en el editor y, luego, haz clic en Ejecutar consulta:
    fetch gce_instance
    | metric 'workload.googleapis.com/mysql.threads'
    | every 1m
    

Ver panel

Para ver tus métricas de MariaDB, debes tener configurado un gráfico o un panel. MariaDB usa los mismos paneles que MySQL. Cualquier panel se instala de forma automática después de que configuras la integración y de que el agente de operaciones comienza a recopilar datos de métricas.

También puedes ver vistas previas estáticas de los paneles sin instalar la integración.

Para ver un panel instalado, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página  Paneles.

    Dirígete a Paneles de control

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Selecciona la pestaña Lista de paneles y, luego, la categoría Integraciones.
  3. Haz clic en el nombre del panel que quiera ver. MariaDB usa los mismos paneles que MySQL.

Si configuraste una integración, pero el panel no se instaló, verifica que el agente de operaciones se esté ejecutando. Cuando no hay datos de métricas para un gráfico en el panel, la instalación del panel falla. Una vez que el agente de operaciones comienza a recopilar métricas, el panel se instalará por ti.

Para obtener una vista previa estática del panel, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página  Integraciones:

    Dirígete a Integraciones

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Haz clic en el filtro de la plataforma de implementación Compute Engine.
  3. Ubica la entrada para MySQL y haz clic en Ver detalles. MariaDB usa los mismos paneles que MySQL.
  4. Selecciona la pestaña Paneles para ver una vista previa estática. Si el panel está instalado, haz clic en Ver panel para navegar a él.

Para obtener más información de los paneles en Cloud Monitoring, consulta Paneles y gráficos.

Para obtener más información del uso de la página Integraciones, consulta Administra integraciones.

Instala políticas de alertas

Las políticas de alertas le indican a Cloud Monitoring que te notifique cuando ocurren condiciones especificadas. MariaDB usa las mismas políticas de alertas que MySQL. Puedes ver y también instalar estas políticas de alertas desde la página Integraciones en Monitoring.

Para ver las descripciones de las políticas de alertas disponibles y, luego, instalarlas, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página  Integraciones:

    Dirígete a Integraciones

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Ubica la entrada para MySQL y haz clic en Ver detalles. MariaDB usa las mismas políticas de alertas que MySQL.
  3. Selecciona la pestaña Alertas. En esta pestaña, se proporcionan descripciones de las políticas de alertas disponibles y una interfaz para instalarlas.
  4. Instala las políticas de alertas. Las políticas de alertas deben saber a dónde enviar notificaciones que la alerta se activó, por lo que requieren información de ti para la instalación. Para instalar las políticas de alertas, haz lo siguiente:
    1. En la lista de políticas de alertas disponibles, elige las que deseas instalar.
    2. En la sección Configura notificaciones, elige uno o más canales de notificaciones. Tienes la opción de inhabilitar el uso de los canales de notificación, pero si lo haces, las políticas de alertas se activarán de forma silenciosa. Puedes verificar su estado en Monitoring, pero no recibirás notificaciones.

      Para obtener más información de los canales de notificaciones, consulta Administra canales de notificaciones.

    3. Haz clic en Crear políticas.

Para obtener más información de las políticas de alertas en Cloud Monitoring, consulta Introducción a las alertas.

Para obtener más información del uso de la página Integraciones, consulta Administra integraciones.

¿Qué sigue?

Para obtener una explicación sobre cómo usar Ansible para instalar el Agente de operaciones, configurar una aplicación de terceros y, luego, instalar un panel de muestra, consulta el video Instala el Agente de operaciones para solucionar problemas de apps de terceros.