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:
- 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.
- General Log : Registra todas as conexões, comandos e consultas executadas. Fundamental para auditoria e depuração detalhada.
- 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:
Log | O que registra | Impacto de performance | Quando usar |
---|---|---|---|
Slow Query | Queries lentas | Baixo | Otimização de performance |
General | Tudo (conexões, queries, comandos) | Alto | Depuração/Auditoria temporária |
Error | Falhas e mensagens de erro do servidor | Muito baixo | Sempre (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 dadostimestamp
: momento do logtag
: 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 Virutla Machine existente no mesmo tenant, seguindo assim a mesma abordagem adotada para conexão ao banco de dados 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 Fluen Bot 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