A integração do MySQL recolhe métricas de desempenho relacionadas com o InnoDB, o conjunto de buffers e várias outras operações. Também recolhe registos gerais, de erros e de consultas lentas, e analisa-os num payload JSON. Os registos de erros são analisados para o respetivo código de erro e subsistema. Os registos de consultas lentas são analisados em pares de chave-valor que descrevem o desempenho de uma consulta, incluindo o tempo de consulta e as linhas examinadas.
Para mais informações sobre o MySQL, consulte a documentação do MySQL.
Pré-requisitos
Para recolher telemetria do MySQL, tem de instalar o agente de operações:
- Para métricas, instale a versão 2.32.0 ou superior.
- Para registos, instale a versão 2.5.0 ou superior.
Esta integração suporta as versões 5.7 e 8.0 do MySQL.
Configure a sua instância do MySQL
O recetor mysql
liga-se por predefinição a um servidor MySQL local através de um socket Unix e da autenticação Unix como utilizador root
.
Configure o agente de operações para o MySQL
Seguindo o guia para configurar o Ops Agent, adicione os elementos necessários para recolher telemetria de instâncias do MySQL e reinicie o agente.
Exemplo de configuração
Os seguintes comandos criam a configuração para recolher e carregar telemetria para o MySQL:
Para que estas alterações entrem em vigor, tem de reiniciar o agente de operações:
Linux
- Para reiniciar o agente, execute o seguinte comando na sua instância:
sudo systemctl restart google-cloud-ops-agent
- Para confirmar que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- Estabeleça ligação à sua instância através do RDP ou de uma ferramenta semelhante e inicie sessão no Windows.
- Abra um terminal do PowerShell com privilégios de administrador: clique com o botão direito do rato 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 que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
Get-Service google-cloud-ops-agent*
Configure a recolha de registos
Para carregar registos do MySQL, tem de criar um recetor para os registos produzidos pelo MySQL e, em seguida, criar um pipeline para o novo recetor.
Para configurar um recetor para os seus registos mysql_error
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminhos do sistema de ficheiros a excluir 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 ficheiros a ler através da análise detalhada de cada ficheiro. Pode usar um caráter universal (* ) nos caminhos; por exemplo, /var/log/mysql/*.log . |
record_log_file_path |
false |
Se estiver definido como true , o caminho para o ficheiro específico a partir do qual o registo de registo foi obtido aparece na entrada de registo de saída como o valor da etiqueta agent.googleapis.com/log_file_path . Quando usa um caráter universal, apenas é registado o caminho do ficheiro a partir do qual o registo foi obtido. |
type |
Este valor tem de ser mysql_error . |
|
wildcard_refresh_interval |
60s |
O intervalo no qual os caminhos de ficheiros com carateres universais em include_paths são atualizados. Indicado como uma duração, por exemplo, 30s ou 2m . Esta propriedade pode ser útil em débitos de registo elevados, em que os ficheiros de registo são rodados mais rapidamente do que o intervalo predefinido. |
Para configurar um recetor para os seus registos mysql_general
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminhos do sistema de ficheiros a excluir do conjunto correspondente a include_paths . |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}.log] |
Uma lista de caminhos do sistema de ficheiros a ler através da análise detalhada de cada ficheiro. Pode usar um caráter universal (* ) nos caminhos. |
record_log_file_path |
false |
Se estiver definido como true , o caminho para o ficheiro específico a partir do qual o registo de registo foi obtido aparece na entrada de registo de saída como o valor da etiqueta agent.googleapis.com/log_file_path . Quando usa um caráter universal, apenas é registado o caminho do ficheiro a partir do qual o registo foi obtido. |
type |
Este valor tem de ser mysql_general . |
|
wildcard_refresh_interval |
60s |
O intervalo no qual os caminhos de ficheiros com carateres universais em include_paths são atualizados. Indicado como uma duração, por exemplo, 30s ou 2m . Esta propriedade pode ser útil em débitos de registo elevados, em que os ficheiros de registo são rodados mais rapidamente do que o intervalo predefinido. |
Para configurar um recetor para os seus registos mysql_slow
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminhos do sistema de ficheiros a excluir do conjunto correspondente a include_paths . |
|
include_paths |
[/var/lib/mysql/${HOSTNAME}-slow.log] |
Uma lista de caminhos do sistema de ficheiros a ler através da análise detalhada de cada ficheiro. Pode usar um caráter universal (* ) nos caminhos. |
record_log_file_path |
false |
Se estiver definido como true , o caminho para o ficheiro específico a partir do qual o registo de registo foi obtido aparece na entrada de registo de saída como o valor da etiqueta agent.googleapis.com/log_file_path . Quando usa um caráter universal, apenas é registado o caminho do ficheiro a partir do qual o registo foi obtido. |
type |
Este valor tem de ser mysql_slow . |
|
wildcard_refresh_interval |
60s |
O intervalo no qual os caminhos de ficheiros com carateres universais em include_paths são atualizados. Indicado como uma duração, por exemplo, 30s ou 2m . Esta propriedade pode ser útil em débitos de registo elevados, em que os ficheiros de registo são rodados mais rapidamente do que o intervalo predefinido. |
O que é registado
O logName
é derivado dos IDs dos recetores especificados na configuração. Os campos detalhados no interior de
LogEntry
são os seguintes.
Os registos mysql_error
contêm os seguintes campos em LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.errorCode |
de string | Código de erro do MySQL associado ao registo |
jsonPayload.level |
de string | Nível de entrada do registo |
jsonPayload.message |
de string | Mensagem de registo |
jsonPayload.subsystem |
de string | Subsistema do MySQL onde o registo teve origem |
jsonPayload.tid |
número | ID da discussão de onde o registo se originou |
severity |
string (LogSeverity ) |
Nível de entrada de registo (traduzido). |
Os registos mysql_general
contêm os seguintes campos em LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.command |
de string | Tipo de ação da base de dados que está a ser registada |
jsonPayload.message |
de string | Registo da ação da base de dados |
jsonPayload.tid |
número | ID da discussão de onde o registo se originou |
severity |
string (LogSeverity ) |
Nível de entrada de registo (traduzido). |
Os registos mysql_slow
contêm os seguintes campos em 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 a todos os clientes |
jsonPayload.createdTmpDiskTables † |
número | O número de tabelas temporárias internas no disco criadas pelo servidor |
jsonPayload.createdTmpTables † |
número | O número de tabelas temporárias internas criadas pelo servidor |
jsonPayload.database |
de string | Base de dados onde a consulta foi executada |
jsonPayload.endTime † |
de string | A hora de conclusão da execução do extrato |
jsonPayload.errorNumber † |
número | O número do erro da declaração ou 0 se não tiver ocorrido nenhum erro |
jsonPayload.host |
de string | Anfitrião da instância de base de dados |
jsonPayload.ipAddress |
de string | Endereço da instância de base de dados |
jsonPayload.killed † |
número | Se a declaração foi terminada, o número do erro que indica o motivo ou 0 se a declaração tiver sido terminada normalmente |
jsonPayload.level |
de string | Nível de entrada do registo |
jsonPayload.lockTime |
número | O tempo para adquirir bloqueios em segundos |
jsonPayload.message |
de string | Texto completo da consulta |
jsonPayload.queryTime |
número | O tempo de execução da declaração em segundos |
jsonPayload.readFirst † |
número | O número de vezes que a primeira entrada num índice foi lida |
jsonPayload.readKey † |
número | O número de pedidos para ler uma linha com base numa chave |
jsonPayload.readLast † |
número | O número de pedidos para ler a última chave num índice |
jsonPayload.readNext † |
número | O número de pedidos para ler a linha seguinte por ordem das chaves |
jsonPayload.readPrev † |
número | O número de pedidos para ler a linha anterior por ordem das teclas |
jsonPayload.readRnd † |
número | O número de pedidos para ler uma linha com base numa posição fixa |
jsonPayload.readRndNext † |
número | O número de pedidos para ler a linha seguinte no ficheiro de dados |
jsonPayload.rowsExamined |
número | O número de linhas examinadas pela camada de servidor |
jsonPayload.rowsSent |
número | O número de linhas enviadas ao cliente |
jsonPayload.sortMergePasses † |
número | O número de passes de união que o algoritmo de ordenação teve de fazer |
jsonPayload.sortRangeCount † |
número | O número de ordenações feitas com intervalos |
jsonPayload.sortRows † |
número | O número de linhas ordenadas |
jsonPayload.sortScanCount † |
número | O número de ordenações que foram feitas através da análise da tabela |
jsonPayload.startTime † |
de string | A hora de início da execução da declaração |
jsonPayload.tid |
número | ID da discussão onde a consulta foi registada |
jsonPayload.user |
de string | O utilizador que executou a consulta |
severity |
string (LogSeverity ) |
Nível de entrada de registo (traduzido). |
† Estes campos só são fornecidos se a variável de sistema log_slow_extra
estiver definida como 'ON'
. Esta variável está disponível a partir do MySQL 8.0.14.
Para informações sobre estes campos, consulte a documentação do MySQL.
Configure a recolha de métricas
Para carregar métricas do MySQL, tem de criar um recetor para as métricas produzidas pelo MySQL e, em seguida, criar um pipeline para o novo recetor.
Este recetor não suporta a utilização de várias instâncias na configuração, por exemplo, para monitorizar vários pontos finais. Todas essas instâncias escrevem na mesma série cronológica e o Cloud Monitoring não tem forma de as distinguir.
Para configurar um destinatário para as suas métricas mysql
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
collection_interval |
60s |
Um valor de duração, como 30s ou 5m . |
endpoint |
/var/run/mysqld/mysqld.sock |
O hostname:port ou o caminho do socket Unix que começa com / usado para estabelecer ligação ao servidor MySQL. |
password |
A palavra-passe usada para estabelecer ligação ao servidor. | |
type |
Este valor tem de ser mysql . |
|
username |
root |
O nome de utilizador usado para estabelecer ligação ao servidor. |
O que é monitorizado
A tabela seguinte apresenta a lista de métricas que o agente de operações recolhe da instância do MySQL.
Tipo de métrica | |
---|---|
Tipo, Tipo Recursos monitorizados |
Etiquetas |
workload.googleapis.com/mysql.buffer_pool_data_pages
|
|
GAUGE , INT64 gce_instance |
status
|
workload.googleapis.com/mysql.buffer_pool_limit
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/mysql.buffer_pool_operations
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/mysql.buffer_pool_page_flushes
|
|
CUMULATIVE , INT64 gce_instance |
|
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.replica.sql_delay
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/mysql.replica.time_behind_source
|
|
GAUGE , INT64 gce_instance |
|
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
|
Valide a configuração
Esta secção descreve como verificar se configurou corretamente o recetor do MySQL. O agente de operações pode demorar um ou dois minutos a começar a recolher telemetria.
Para verificar se os registos do MySQL estão a ser enviados para o Cloud Logging, faça o seguinte:
-
Na Google Cloud consola, aceda à página Explorador de registos:
Aceda ao Explorador de registos
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda é Registo.
- Introduza a seguinte consulta no editor e, de seguida, 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 a ser enviadas para o Cloud Monitoring, faça o seguinte:
-
Na Google Cloud consola, aceda à página leaderboard Explorador de métricas:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão cujo nome é code MQL ou code PromQL.
- Verifique se a opção PromQL está selecionada no botão Idioma. O botão para alternar o idioma encontra-se na mesma barra de ferramentas que lhe permite formatar a consulta.
- Introduza a seguinte consulta no editor e, de seguida, clique em Executar consulta:
{"workload.googleapis.com/mysql.threads", monitored_resource="gce_instance"}
Ver o painel de controlo
Para ver as métricas do MySQL, tem de ter um gráfico ou um painel de controlo configurado. A integração do MySQL inclui um ou mais painéis de controlo para si. Todos os painéis de controlo são instalados automaticamente depois de configurar a integração e o agente de operações começar a recolher dados de métricas.
Também pode ver pré-visualizações estáticas de painéis de controlo sem instalar a integração.
Para ver um painel de controlo instalado, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Selecione o separador Lista de painéis de controlo e, de seguida, escolha a categoria Integrações.
- Clique no nome do painel de controlo que quer ver.
Se configurou uma integração, mas o painel de controlo não foi instalado, verifique se o agente de operações está em execução. Quando não existem dados de métricas para um gráfico no painel de controlo, a instalação do painel de controlo falha. Depois de o agente de operações começar a recolher métricas, o painel de controlo é instalado para si.
Para ver uma pré-visualização estática do painel de controlo, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Integrações:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Clique no filtro da plataforma de implementação Compute Engine.
- Localize a entrada para MySQL e clique em Ver detalhes.
- Selecione o separador Painéis de controlo para ver uma pré-visualização estática. Se o painel de controlo estiver instalado, pode navegar até ele clicando em Ver painel de controlo.
Para mais informações acerca dos painéis de controlo no Cloud Monitoring, consulte o artigo Painéis de controlo e gráficos.
Para mais informações sobre como usar a página Integrações, consulte o artigo Gerir integrações.
Instale políticas de alerta
As políticas de alerta indicam ao Cloud Monitoring que lhe envie uma notificação quando ocorrerem condições especificadas. A integração do MySQL inclui uma ou mais políticas de alerta para sua utilização. Pode ver e instalar estas políticas de alerta na página Integrações em Monitorização.
Para ver as descrições das políticas de alerta disponíveis e instalá-las, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Integrações:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Localize a entrada para MySQL e clique em Ver detalhes.
- Selecione o separador Alertas. Este separador apresenta descrições das políticas de alerta disponíveis e uma interface para as instalar.
- Instale políticas de alerta. As políticas de alerta precisam de saber para onde enviar notificações de que o alerta foi acionado, pelo que requerem informações suas para a instalação.
Para instalar políticas de alerta, faça o seguinte:
- Na lista de políticas de alerta disponíveis, selecione as que quer instalar.
Na secção Configurar notificações, selecione um ou mais canais de notificação. Tem a opção de desativar a utilização de canais de notificação, mas, se o fizer, as suas políticas de alerta são acionadas silenciosamente. Pode verificar o respetivo estado em Monitorização, mas não recebe notificações.
Para mais informações sobre os canais de notificação, consulte o artigo Faça a gestão dos canais de notificação.
- Clique em Criar políticas.
Para mais informações sobre as políticas de alerta no Cloud Monitoring, consulte o artigo Introdução aos alertas.
Para mais informações sobre como usar a página Integrações, consulte o artigo Gerir integrações.
O que se segue?
Para ver um passo a passo sobre como usar o Ansible para instalar o agente de operações, configurar uma aplicação de terceiros e instalar um painel de controlo de exemplo, consulte o vídeo Instale o agente de operações para resolver problemas de aplicações de terceiros.