MariaDB

O MariaDB é um sistema de gerenciamento de banco de dados relacional que funciona como um servidor que fornece acesso multiusuário a vários bancos de dados. Para mais informações, acesse mariadb.org (em inglês).

Pré-requisitos

Para coletar a telemetria do MariaDB, é preciso instalar o agente de operações na versão 2.8.0 ou superior.

Configurar a instância do MariaDB

MariaDB é uma bifurcação desenvolvida pela comunidade e comercialmente compatível com o sistema de gerenciamento de banco de dados relacional (RDBMS, na sigla em inglês) do MySQL. Para coletar registros e métricas do MariaDB, use os receptores mysql.

Por padrão, o receptor mysql se conecta a um servidor MariaDB local usando um soquete Unix e a autenticação Unix como usuário root.

Configure o agente de operações para MariaDB

Seguindo o guia para configurar o agente de operações, adicione os elementos necessários para coletar registros e métricas das instâncias do MariaDBe reiniciar o agente. de dados.

Exemplo de configuração

O comando a seguir cria o arquivo de configuração para coletar e ingerir registros e métricas do MariaDB e reinicia o agente de operações no 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
metrics:
  receivers:
    mysql_metrics:
      type: mysql
      collection_interval: 60s
    pipelines:
      mysql_pipeline:
        receivers:
          - mysql_metrics
EOF
sudo service google-cloud-ops-agent restart

Para se conectar à instância do MariaDB usando uma conexão TCP com um nome de usuário e senha, especifique o nome de usuário e a senha no receptor de métricas. Exemplo:

metrics:
  receivers:
    mysql_metrics:
      type: mysql
      endpoint: localhost:3306
      collection_interval: 60s
      password: pwd
      username: usr
  service:
    pipelines:
      mysql_pipeline:
        receivers:
          - mysql_metrics

Configurar a coleta de registros

Para ingerir registros do MariaDB, é preciso criar receptores para os registros que o MariaDB produz e criar um pipeline para os novos receptores.

mysql_errorPara configurar um receptor para os registros , especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_error.
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada arquivo. Um caractere curinga (*) pode ser usado nos caminhos. por exemplo, /var/log/mysql/*.log.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
wildcard_refresh_interval 1m0s O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Dado como uma duração de tempo, por exemplo, 30s, 2m. Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão.


Para configurar um receptor para os registros mysql_general, especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_general.
include_paths [/var/lib/mysql/${HOSTNAME}.log] Os arquivos de registro a serem lidos.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
wildcard_refresh_interval 1m0s O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Dado como uma duração de tempo, por exemplo, 30s, 2m. Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão.


Para configurar um receptor para os registros mysql_slow, especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_slow.
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] Os arquivos de registro a serem lidos.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
wildcard_refresh_interval 1m0s O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Dado como uma duração de tempo, por exemplo, 30s, 2m. Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão.

O que é registrado

Os registros logName de mysql_error, mysql_general e mysql_slow são derivados dos IDs do receptor especificados na configuração.

Dependendo da versão do MariaDB, os registros mysql_error podem conter os seguintes campos dentro do LogEntry:

Campo Tipo Descrição
jsonPayload.level string Nível de entrada de registro
jsonPayload.tid número ID da linha de execução em que o registro foi originado
jsonPayload.errorCode string Código de erro do MariaDB associado ao registro
jsonPayload.subsystem string Subsistema MariaDB de origem do registro
jsonPayload.message string Mensagem de registro
severity string (LogSeverity) Nível de entrada de registro (traduzido)
timestamp string (Timestamp) Hora em que a solicitação foi recebida

Os campos em branco ou ausentes não serão presentes na entrada de registro.

Os registros
mysql_general contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.tid número ID da linha de execução em que o registro foi originado
jsonPayload.command string Tipo de ação do banco de dados que está sendo registrada
jsonPayload.message string Registro da ação do banco de dados
timestamp string (Timestamp) Hora em que a entrada foi registrada

Os registros
mysql_slow contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.user string Usuário que executou a consulta
jsonPayload.database string Banco de dados em que a consulta foi executada
jsonPayload.host string Host da instância do banco de dados
jsonPayload.ipAddress string Endereço da instância do banco de dados
jsonPayload.tid número ID da linha de execução em que a consulta foi registrada
jsonPayload.queryTime número O tempo de execução da instrução em segundos
jsonPayload.lockTime número O tempo para adquirir bloqueios em segundos
jsonPayload.rowsSent número O número de linhas enviadas para o cliente
jsonPayload.rowsExamined número O número de linhas examinadas pela camada do servidor
jsonPayload.errorNumber número O número do erro na instrução ou 0 se nenhum erro ocorreu
jsonPayload.killed número Se a instrução foi encerrada, o número do erro indicando o motivo ou 0 se ela foi encerrada normalmente
jsonPayload.bytesReceived número O número de bytes recebidos de todos os clientes
jsonPayload.bytesSent número O número de bytes enviados para todos os clientes
jsonPayload.readFirst número O número de vezes que a primeira entrada em um índice foi lida
jsonPayload.readLast número O número de solicitações para ler a última chave em um índice
jsonPayload.readKey número O número de solicitações para ler uma linha com base em uma chave
jsonPayload.readNext número O número de solicitações para ler a próxima linha na ordem de chaves
jsonPayload.readPrev número O número de solicitações para ler a linha anterior na ordem de chaves
jsonPayload.readRnd número O número de solicitações para ler uma linha com base em uma posição fixa
jsonPayload.readRndNext número O número de solicitações para ler a próxima linha no arquivo de dados
jsonPayload.sortMergePasses número Número de passes de mesclagem que o algoritmo de classificação teve de fazer
jsonPayload.sortRangeCount número O número de classificações feitas usando intervalos
jsonPayload.sortRows número O número de linhas classificadas
jsonPayload.sortScanCount número O número de classificações que foram realizadas verificando a tabela
jsonPayload.createdTmpDiskTables número O número de tabelas temporárias em disco internas criadas pelo servidor
jsonPayload.createdTmpTables número O número de tabelas temporárias internas criadas pelo servidor
jsonPayload.startTime string Horário de início da execução da instrução
jsonPayload.endTime string O horário de término da execução da instrução
jsonPayload.message string Texto completo da consulta
timestamp string (Timestamp) Hora em que a entrada foi registrada

  Esses campos só serão fornecidos se a variável de sistema log_slow_extra estiver definida como 'ON'. Essa variável está disponível a partir do MySQL 8.0.14.

Para informações sobre esses campos, consulte a documentação do MySQL.

Configurar a coleta de métricas

Para coletar métricas do MariaDB, é preciso criar um receptor para as métricas do MariaDB e, em seguida, criar um pipeline para o novo receptor. Para configurar um receptor para suas métricas do MariaDB, especifique os campos a seguir:

Campo Padrão Descrição
type O valor precisa ser mysql.
endpoint localhost:3306 O URL exposto por MariaDB.
collection_interval 60s Um valor de time.Duration, como 30s ou 5m.
username root O nome de usuário usado para se conectar ao servidor.
password A senha usada para se conectar ao servidor.

O que é monitorado?

A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do MariaDB.

Tipo de métrica 
Tipo, tipo
Recursos monitorados
Rótulos
workload.googleapis.com/mysql.buffer_pool_operations
SUMINT64
gce_instance
buffer_pool_operations
workload.googleapis.com/mysql.buffer_pool_pages
GAUGEINT64
gce_instance
 
workload.googleapis.com/mysql.buffer_pool_size
GAUGEINT64
gce_instance
buffer_pool_size
workload.googleapis.com/mysql.commands
SUMINT64
gce_instance
command
workload.googleapis.com/mysql.double_writes
SUMINT64
gce_instance
double_writes
workload.googleapis.com/mysql.handlers
SUMINT64
gce_instance
handler
workload.googleapis.com/mysql.locks
SUMINT64
gce_instance
locks
workload.googleapis.com/mysql.log_operations
SUMINT64
gce_instance
log_operations
workload.googleapis.com/mysql.operations
SUMINT64
gce_instance
operations
workload.googleapis.com/mysql.page_operations
SUMINT64
gce_instance
page_operations
workload.googleapis.com/mysql.row_locks
SUMINT64
gce_instance
row_locks
workload.googleapis.com/mysql.row_operations
SUMINT64
gce_instance
row_operations
workload.googleapis.com/mysql.sorts
SUMINT64
gce_instance
sorts
workload.googleapis.com/mysql.threads
GAUGEINT64
gce_instance
threads

Verificar a configuração

Use o Explorador de registros e o Metrics Explorer para verificar se você configurou o receptor MariaDB corretamente. Pode levar um ou dois minutos para que o agente de operações comece a coletar registros e métricas.

Para verificar se os registros são ingeridos, acesse o Explorador de registros e execute a seguinte consulta para ver os registros MariaDB:

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")


Para verificar se as métricas são ingeridas, acesse o Metrics Explorer e execute a seguinte consulta na guia do MQL.

fetch gce_instance
| metric 'workload.googleapis.com/mysql.commands'
| align rate(1m)
| every 1m

A seguir

Para ver um tutorial sobre como usar o Ansible para instalar o agente de operações, configurar um aplicativo de terceiros e instalar um painel de amostra, consulte o vídeo Instalação do agente de operações para resolver problemas de aplicativos de terceiros.