A integração do MariaDB coleta métricas de desempenho relacionadas ao InnoDB, ao pool de buffers e a várias outras operações. Ele também coleta registros gerais, de erro e de consulta lenta e os analisa em um payload JSON. Os registros de erros são analisados para o código de erro e o subsistema. Os registros de consulta lenta são analisados em pares de chave-valor que descrevem o desempenho de uma consulta, incluindo o tempo e as linhas examinadas.
Para mais informações sobre o MariaDB, consulte 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.
Este receptor suporta as versões 10.1.X a 10.7.X do MariaDB.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:
type: mysql
service:
pipelines:
mysql:
receivers:
- mysql
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:
type: mysql
endpoint: localhost:3306
password: pwd
username: usr
service:
pipelines:
mysql:
receivers:
- mysql
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_error
Para 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 . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
wildcard_refresh_interval |
60s |
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 ou 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 . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
wildcard_refresh_interval |
60s |
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 ou 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 . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
wildcard_refresh_interval |
60s |
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 ou 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
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.buffer_pool_pages
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.buffer_pool_size
|
|
GAUGE , DOUBLE gce_instance |
kind
|
workload.googleapis.com/mysql.commands
|
|
CUMULATIVE , INT64 gce_instance |
command
|
workload.googleapis.com/mysql.double_writes
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.handlers
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.log_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.page_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.row_locks
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.row_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.sorts
|
|
CUMULATIVE , INT64 gce_instance |
kind
|
workload.googleapis.com/mysql.threads
|
|
GAUGE , DOUBLE gce_instance |
kind
|
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.