Skip to main content

Acessar os logs do MySQL por streaming

Os logs do DBaaS são disponibilizados em tempo real e acessíveis através de serviço de streaming de logs na porta 5140 de todas as instâncias e clusters. Dessa forma é possível extrair os logs para um arquivo local de sua preferência, ou fazer integração com alguma solução de coleta de logs disponível no mercado.

Tipos de Log​

Os tipos de logs disponíveis são:

  1. Slow Query Log : Registra consultas SQL que demoram muito para serem executadas. É útil para identificar gargalos de desempenho e consultas que precisam de otimização.
  2. General Log : Registra todas as conexões, comandos e consultas executadas. Fundamental para auditoria e depuração detalhada.
  3. Error Log : Registra erros do servidor, como falhas de inicialização, problemas com tabelas, falhas de replicação, etc. Usado para diagnosticar falhas críticas ou comportamento inesperado do MySQL.

Resumidamente:

LogO que registraImpacto de performanceQuando usar
Slow QueryQueries lentasBaixoOtimização de performance
GeneralTudo (conexões, queries, comandos)AltoDepuração/Auditoria temporária
ErrorFalhas e mensagens de erro do servidorMuito baixoSempre (produção, desenvolvimento)

Formato do log​

Os logs são expostos nesse formato:

{"instance_id":"c127fd51-6bb7-480c-8ef9-71c9ef76a442","@timestamp":"2025-06-24T18:28:19.712972+00:00","tag":"mysql-error:","message":"2025-06-24T18:28:19.712930Z 0 [System] [MY-010931] [Server] /usr/local/mysql/bin/mysqld: ready for connections. Version: '8.4.5' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL."}

No objeto recebido você terá informações como:

  • instance_id: ID do banco de dados
  • timestamp: momento do log
  • tag: origem do log (general, slow, error, etc.)
  • message: linha do log

Como acessar os logs​

A forma de capturar os logs é através de uma Virtual Machine existente no mesmo tenant, seguindo assim a mesma abordagem adotada para conexão à instância mySQL ou acesso as métricas do MySQL.

Você pode fazer isso através do comando ncat dentro de uma Virtual Machine com sistema Linux.

Para capturar o log, execute:

ncat IP_do_seu_DBaaS 5140

Se desejar redirecionar as linhas do log para um arquivo local da VM, acrescente:

ncat IP_do_seu_DBaaS 5140 >> /tmp/log.txt

E se desejar redirecionar as linhas do log para uma ferramenta de coleta de logs (como o Fluent Bit, por exemplo) que deve estar instalada na mesma VM, você pode fazer um pipe como mostrado abaixo.

ncat IP_do_seu_DBaaS 5140 | ncat localhost 5150

Neste exemplo o serviço do Fluent Bit estaria rodando na porta 5150.

Integrando com Fluent Bit​

É possível integrar o streaming de logs do MySQL à soluções de coleta de logs como o Fluent Bit.

Para isso, basta verificar no arquivo fluent-bit.conf da sua instalação do Fluent Bit qual é a configuração de INPUT e utilizar a porta no comando ncat. Com isso, tudo o que for capturado do DBaaS na porta 5140 será direcionado para o Fluent Bit diretamente.

Exemplo de arquivo de configuração:

cat /etc/fluent-bit/fluent-bit.conf

[INPUT]
Name tcp
Listen 0.0.0.0
Port 5150
Format none

Neste caso a instalação do Fluent Bit está configurada para receber logs na porta 5150, portanto você pode conectar seus logs do MySQL usando o comando abaixo.

/usr/bin/ncat IP_do_seu_DBaaS 5140 | /usr/bin/ncat localhost 5150

Caso deseje garantir que esse relay de logs vai estar sempre ativo na sua VM, uma opção é criar um serviço no systemd do Linux. Para isso, crie um arquivo de descrição do serviço como sugerido abaixo.

sudo vi /etc/systemd/system/ncat-relay-dbaas.service

No novo arquivo adicione as seguintes linhas:

[Unit]
Description=Serviço de Relay com Ncat
[Service]
ExecStart=/bin/sh -c 'while true; do /usr/bin/ncat ip_dbaas 5140 | /usr/bin/ncat localhost 5150; done'
StandardOutput=null
Restart=on-failure
LimitNOFILE=16384
Type=simple
[Install]
WantedBy=multi-user.target

Depois basta iniciar o novo serviço.

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl start ncat-relay-dbaas.service

E se quiser que este serviço sempre seja iniciado junto com a sua VM, você pode executar o comando abaixo.

sudo systemctl enable ncat-relay-dbaas.service