A integração do MySQL 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 MySQL, consulte a documentação do MySQL.
Pré-requisitos
Para coletar a telemetria do MySQL, instale o Agente de operações:
- Para métricas, instale a versão 2.32.0 ou mais recente.
- Para registros, instale a versão 2.5.0 ou mais recente.
Essa integração suporta as versões 5.7 e 8.0 do MySQL.
Configurar a instância do MySQL
Por padrão, o receptor mysql se conecta a um servidor MySQL local usando um soquete Unix e a autenticação Unix como usuário root.
Configure o agente de operações para MySQL
Seguindo o guia para Configurar o agente de operações, adicione os elementos necessários para coletar a telemetria das instâncias do MySQL e reinicie o agente.
Exemplo de configuração
Os comandos a seguir criam a configuração para coletar e ingerir telemetria para o MySQL:
Para que essas mudanças entrem em vigor, reinicie o Agente de operações:
Linux
- Para reiniciar o agente, execute o seguinte comando na instância:
sudo systemctl restart google-cloud-ops-agent
- Para confirmar se o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente do Logging" foram iniciados:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- Conecte-se à sua instância usando o RDP ou uma ferramenta semelhante e faça login no Windows.
- Abra um terminal do PowerShell com privilégios de administrador. Para isso, clique com o botão direito do mouse no ícone do PowerShell e selecione Executar como administrador
- Para reiniciar o agente, execute o seguinte comando do PowerShell:
Restart-Service google-cloud-ops-agent -Force
- Para confirmar se o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente do Logging" foram iniciados:
Get-Service google-cloud-ops-agent*
Configurar a coleta de registros
Para ingerir logs do MySQL, crie um receptor para os logs produzidos pelo MySQL e, em seguida, crie um pipeline para o novo receptor.
mysql_errorPara configurar um receptor para os registros , especifique os seguintes campos:
| Campo | Padrão | Descrição |
|---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths. |
|
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. |
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 rótulo agent.googleapis.com/log_file_path. Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
Este valor precisa ser mysql_error. |
|
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. |
mysql_generalPara configurar um receptor para os registros , especifique os seguintes campos:
| Campo | Padrão | Descrição |
|---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths. |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (*) pode ser usado nos caminhos. |
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. |
type |
Este valor precisa ser mysql_general. |
|
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. |
mysql_slowPara configurar um receptor para os registros , especifique os seguintes campos:
| Campo | Padrão | Descrição |
|---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths. |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}-slow.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (*) pode ser usado nos caminhos. |
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. |
type |
Este valor precisa ser mysql_slow. |
|
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
O logName é derivado dos
IDs do receptor especificados na configuração. Os campos
detalhados dentro de LogEntry
são os seguintes.
Os registros mysql_error contêm os seguintes campos no LogEntry:
| Campo | Tipo | Descrição |
|---|---|---|
jsonPayload.errorCode |
string | Código de erro do MySQL associado ao registro |
jsonPayload.level |
string | Nível de entrada de registro |
jsonPayload.message |
string | Mensagem de registro |
jsonPayload.subsystem |
string | Subsistema MySQL onde o registro foi originado |
jsonPayload.tid |
número | ID da linha de execução em que o registro foi originado |
severity |
string (LogSeverity) |
Nível de entrada de registro (traduzido). |
Os registros mysql_general contêm os seguintes campos no LogEntry:
| Campo | Tipo | Descrição |
|---|---|---|
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 |
jsonPayload.tid |
número | ID da linha de execução em que o registro foi originado |
severity |
string (LogSeverity) |
Nível de entrada de registro (traduzido). |
Os registros mysql_slow contêm os seguintes campos no LogEntry:
| Campo | Tipo | Descrição |
|---|---|---|
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.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.database |
string | Banco de dados em que a consulta foi executada |
jsonPayload.endTime † |
string | O horário de término da execução da instrução |
jsonPayload.errorNumber † |
número | O número do erro na instrução ou 0 se nenhum erro ocorreu |
jsonPayload.host |
string | Host da instância do banco de dados |
jsonPayload.ipAddress |
string | Endereço da instância do banco de dados |
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.level |
string | Nível de entrada de registro |
jsonPayload.lockTime |
número | O tempo para adquirir bloqueios em segundos |
jsonPayload.message |
string | Texto completo da consulta |
jsonPayload.queryTime |
número | O tempo de execução da instrução em segundos |
jsonPayload.readFirst † |
número | O número de vezes que a primeira entrada em um índice foi lida |
jsonPayload.readKey † |
número | O número de solicitações para ler uma linha com base em uma chave |
jsonPayload.readLast † |
número | O número de solicitações para ler a última chave em um índice |
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.rowsExamined |
número | O número de linhas examinadas pela camada do servidor |
jsonPayload.rowsSent |
número | O número de linhas enviadas para o cliente |
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.startTime † |
string | Horário de início da execução da instrução |
jsonPayload.tid |
número | ID da linha de execução em que a consulta foi registrada |
jsonPayload.user |
string | Usuário que executou a consulta |
severity |
string (LogSeverity) |
Nível de entrada de registro (traduzido). |
†
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 ingerir métricas da MySQL, crie um receptor para as métricas que a MySQL produz e crie um pipeline para o novo receptor.
Esse receptor não aceita o uso de várias instâncias na configuração, por exemplo, para monitorar vários endpoints. Todas essas instâncias gravam na mesma série temporal, e o Cloud Monitoring não tem como diferenciá-las.
Para configurar um receptor para suas
métricas do mysql, especifique os campos
a seguir:
| Campo | Padrão | Descrição |
|---|---|---|
collection_interval |
60s |
Um valor de time.Duration, como 30s ou 5m. |
endpoint |
/var/run/mysqld/mysqld.sock |
O caminho do soquete hostname:port ou Unix que começa com / usado para se conectar ao servidor MySQL. |
password |
A senha usada para se conectar ao servidor. | |
type |
Este valor precisa ser mysql. |
|
username |
root |
O nome de usuário usado 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 MySQL.
| Tipo de métrica | |
|---|---|
| Tipo, tipo Recursos monitorados |
Rótulos |
workload.googleapis.com/mysql.buffer_pool_data_pages
|
|
GAUGE, INT64gce_instance |
status
|
workload.googleapis.com/mysql.buffer_pool_limit
|
|
GAUGE, INT64gce_instance |
|
workload.googleapis.com/mysql.buffer_pool_operations
|
|
CUMULATIVE, INT64gce_instance |
operation
|
workload.googleapis.com/mysql.buffer_pool_page_flushes
|
|
CUMULATIVE, INT64gce_instance |
|
workload.googleapis.com/mysql.buffer_pool_pages
|
|
GAUGE, DOUBLEgce_instance |
kind
|
workload.googleapis.com/mysql.buffer_pool_size
|
|
GAUGE, DOUBLEgce_instance |
kind
|
workload.googleapis.com/mysql.commands
|
|
CUMULATIVE, INT64gce_instance |
command
|
workload.googleapis.com/mysql.double_writes
|
|
CUMULATIVE, INT64gce_instance |
kind
|
workload.googleapis.com/mysql.handlers
|
|
CUMULATIVE, INT64gce_instance |
kind
|
workload.googleapis.com/mysql.locks
|
|
CUMULATIVE, INT64gce_instance |
kind
|
workload.googleapis.com/mysql.log_operations
|
|
CUMULATIVE, INT64gce_instance |
operation
|
workload.googleapis.com/mysql.operations
|
|
CUMULATIVE, INT64gce_instance |
operation
|
workload.googleapis.com/mysql.page_operations
|
|
CUMULATIVE, INT64gce_instance |
operation
|
workload.googleapis.com/mysql.replica.sql_delay
|
|
GAUGE, INT64gce_instance |
|
workload.googleapis.com/mysql.replica.time_behind_source
|
|
GAUGE, INT64gce_instance |
|
workload.googleapis.com/mysql.row_locks
|
|
CUMULATIVE, INT64gce_instance |
kind
|
workload.googleapis.com/mysql.row_operations
|
|
CUMULATIVE, INT64gce_instance |
operation
|
workload.googleapis.com/mysql.sorts
|
|
CUMULATIVE, INT64gce_instance |
kind
|
workload.googleapis.com/mysql.threads
|
|
GAUGE, DOUBLEgce_instance |
kind
|
Verificar a configuração
Nesta seção, descrevemos como verificar se você configurou corretamente o receptor do MySQL. Pode levar um ou dois minutos para que o agente de operações comece a coletar telemetria.
Para verificar se os registros do MySQL estão sendo enviados para o Cloud Logging, faça o seguinte:
-
No console Google Cloud , acesse a página Análise de registros.
Acessar a Análise de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Geração de registros.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
resource.type="gce_instance" (log_id("mysql_error") OR log_id("mysql_general") OR log_id("mysql_slow"))
Para verificar se as métricas do MySQL estão sendo enviadas para o Cloud Monitoring, faça o seguinte:
-
No console Google Cloud , acesse a página leaderboard Metrics Explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão code MQL ou code PromQL.
- Verifique se PromQL está selecionado na opção de ativar/desativar Idioma. A alternância de idiomas está na mesma barra de ferramentas que permite formatar sua consulta.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
{"workload.googleapis.com/mysql.threads", monitored_resource="gce_instance"}
Ver painel
Para visualizar as métricas do MySQL, é necessário ter um gráfico ou um painel configurado. A integração do MySQL inclui um ou mais painéis para você. Todos os painéis são instalados automaticamente depois que você configura a integração e o Agente de operações começa a coletar dados de métricas.
Também é possível ver visualizações estáticas de painéis sem instalar a integração.
Para ver um painel instalado, faça o seguinte:
-
No Google Cloud console, acesse a página
Painéis:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Selecione a guia Lista de painéis e escolha a categoria Integrações.
- Clique no nome do painel que você quer visualizar.
Se você configurou uma integração, mas o painel não foi instalado, verifique se o agente de operações está em execução. Quando não há dados de métricas para um gráfico no painel, a instalação do painel falha. Depois que o Agente de operações começar a coletar métricas, o painel será instalado para você.
Para acessar uma visualização estática do painel, faça o seguinte:
-
No console do Google Cloud , acesse a página
Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Clique no filtro de plataforma de implantação do Compute Engine.
- Localize a entrada do MySQL e clique em Ver detalhes.
- Selecione a guia Painéis para uma visualização estática. Se o painel estiver instalado, navegue até ele clicando em Ver painel.
Para mais informações sobre painéis no Cloud Monitoring, consulte Painéis e gráficos.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
Instalar políticas de alertas
As políticas de alertas orientam o Cloud Monitoring a notificar você quando ocorrerem condições especificadas. A integração do MySQL inclui uma ou mais políticas de alertas para você usar. É possível ver e instalar essas políticas de alertas na página Integrações no Monitoring.
Para visualizar e descrever as descrições de políticas de alertas disponíveis, faça o seguinte:
-
No console do Google Cloud , acesse a página
Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- Localize a entrada do MySQL e clique em Ver detalhes.
- Selecione a guia Alertas. Essa guia apresenta descrições das políticas de alertas disponíveis e mostra uma interface para instalá-las.
- Instalar políticas de alertas. As políticas de alertas precisam
saber para onde enviar as notificações de que o alerta foi
acionado. Portanto, elas exigem informações para instalação.
Para instalar políticas de alertas, faça o seguinte:
- Na lista de políticas de alertas disponíveis, selecione aquelas que você quer instalar.
Na seção Configurar notificações, selecione um ou mais canais de notificação. Você pode desativar o uso dos canais de notificação, mas, se isso acontecer, as políticas de alertas vão ser disparadas silenciosamente. É possível verificar o status no Monitoring, mas não receber notificações.
Para saber mais sobre canais de notificação, consulte Gerenciar canais de notificação.
- Clique em Criar políticas.
Para mais informações sobre políticas de alertas no Cloud Monitoring, consulte Introdução a alertas.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
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.