MariaDB

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

Os comandos a seguir cria o arquivo de configuração para coletar e ingerir registros e métricas do MariaDB e reiniciam o agente de operações no Linux.

# 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
    # Collect the primary's error log just for debugging the test
    mysql_error_2:
      type: mysql_error
      include_paths:
      - /run/mysqld/mysqld2.err
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
      mysql2:
        receivers:
          - mysql_error_2
EOF

sudo service google-cloud-ops-agent restart
sleep 60

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.

O receptor de geração de registros mysql_error coleta registros dos caminhos de arquivo padrão mostrados na tabela a seguir. Em algumas plataformas, o MariaDB registra em journald por padrão, em vez de arquivar. Para configurar o MariaDB para registrar um arquivo, defina a opção log_error na configuração do MariaDB. Para mais informações sobre a configuração do log_error, consulte Como gravar o registro de erros em um arquivo.

Para configurar um receptor para os registros mysql_error, 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 number 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 number 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 number 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 number 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.

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 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
CUMULATIVEINT64
gce_instance
operation
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.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

Verificar a configuração

Nesta seção, descrevemos como verificar se você configurou corretamente o receptor do MariaDB. Pode levar um ou dois minutos para que o agente de operações comece a coletar telemetria.

Para verificar se os registros do MariaDB estão sendo enviados para o Cloud Logging, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Logging e clique em Análise de registros:

    Acessar o Explorador de registros

  2. Insira a seguinte consulta 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 MariaDB estão sendo enviadas para o Cloud Monitoring, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Metrics Explorer:

    Acesse o Metrics explorer

  2. Na barra de ferramentas do painel do criador de consultas, selecione o botão com o nome  MQL ou  PromQL.
  3. Verifique se MQL está selecionado no botão de alternância Idioma. O botão de alternância está na mesma barra de ferramentas que permite formatar a consulta.
  4. Insira a seguinte consulta no editor e clique em Executar consulta:
    fetch gce_instance
    | metric 'workload.googleapis.com/mysql.commands'
    | align rate(1m)
    | every 1m
    

Ver painel

Para visualizar as métricas do MariaDB, é necessário ter um gráfico ou um painel configurado. O MariaDB usa os mesmos painéis do MySQL. 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Painéis:

    Acessar Painéis

  2. Selecione a guia Lista de painéis e escolha a categoria Integrações.
  3. Clique no nome do painel que você quer visualizar. O MariaDB usa os mesmos painéis do MySQL.

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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Integrações:

    Acessar Integrações

  2. Clique no filtro de plataforma de implantação do Compute Engine.
  3. Localize a entrada do MySQL e clique em Ver detalhes. O MariaDB usa os mesmos painéis do MySQL.
  4. 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. O MariaDB usa as mesmas políticas de alerta que o MySQL. É 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Integrações:

    Acessar Integrações

  2. Localize a entrada do MySQL e clique em Ver detalhes. O MariaDB usa as mesmas políticas de alerta que o MySQL.
  3. Selecione a guia Alertas. Essa guia apresenta descrições das políticas de alertas disponíveis e mostra uma interface para instalá-las.
  4. 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:
    1. Na lista de políticas de alertas disponíveis, selecione aquelas que você quer instalar.
    2. 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.

    3. 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.