É possível configurar as seguintes opções para obter insights mais profundos sobre as instâncias do MySQL:
- Monitorar um banco de dados específico
- Habilitar TLS
- Planos de consulta para instruções de gravação
- Habilitar o rastreamento da duração da espera de bloqueio
Monitorar um banco de dados específico
Por padrão, o campo database é omitido da configuração do receiver, e o receiver monitora todos os bancos de dados que o usuário de monitoramento pode acessar. Para restringir o monitoramento a um único schema, defina database como o nome desse schema:
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> database: <YOUR_DATABASE_NAME> collection_interval: 30sHabilitar TLS
O campo tls é opcional, mas omiti-lo não é o mesmo que desativar o TLS explicitamente: a configuração padrão do receptor define insecure: true, portanto, as conexões não são criptografadas a menos que você mesmo configure tls. A maioria das instâncias do Amazon RDS e do Aurora exige SSL/TLS, portanto, você normalmente precisará adicionar este bloco para esses ambientes.
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> collection_interval: 30s tls: insecure: false insecure_skip_verify: false ca_file: <PATH_TO_CA_CERTIFICATE>Dica
Para o Amazon RDS/Aurora, faça o download do pacote de certificados de CA do RDS apropriado e referencie-o em ca_file. Defina insecure_skip_verify: true apenas para testes em instâncias com certificados autoassinados, nunca em produção.
Planos de consulta para instruções de gravação
Definir explain_mode como procedure permite que o NRDOT Collector colete planos de EXPLAIN para instruções de gravação sem conceder privilégios DML ao usuário de monitoramento. Quando configurado, o receptor procura um procedimento SQL SECURITY DEFINER chamado <schema>.explain_statement. Se esse procedimento não existir ou se o usuário de monitoramento não tiver privilégios de execução sobre ele, o receptor reverterá para o modo inline. Nesse estado, as instruções de gravação falham ao coletar planos de consulta, e o log do coletor exibe o seguinte aviso: unable to execute explain statement.
Para definir o explain_mode como procedure, é necessário executar o seguinte como uma conta privilegiada (por exemplo, root) uma vez por esquema:
DELIMITER //CREATE DEFINER = 'root'@'%' PROCEDURE <YOUR_SCHEMA>.explain_statement(IN q TEXT)SQL SECURITY DEFINERBEGIN SET @nr_explain_sql = CONCAT('EXPLAIN FORMAT=JSON ', q); PREPARE nr_explain_stmt FROM @nr_explain_sql; EXECUTE nr_explain_stmt; DEALLOCATE PREPARE nr_explain_stmt;END//DELIMITER ;GRANT EXECUTE ON PROCEDURE <YOUR_SCHEMA>.explain_statement TO '<YOUR_DB_USERNAME>'@'%';A etapa GRANT EXECUTE é necessária para mais do que executar a instrução CALL. Sem esse privilégio, o usuário de monitoramento não pode visualizar o procedimento em information_schema.ROUTINES, que o receptor usa para verificar a existência. Omitir GRANT EXECUTE produz o mesmo resultado que um procedimento ausente, fazendo com que o receptor reverta para o modo inline em ambos os casos.
Dica
Esta configuração é stateful por esquema. A criação ou restauração de um banco de dados, ou a exclusão de um procedimento, desativa silenciosamente a coleta de planos de instrução de gravação para esse esquema e aciona um fallback para o modo inline. As rotinas armazenadas SQL SECURITY DEFINER aplicam os privilégios do definidor ao SQL dinâmico executado por meio de instruções PREPARE/EXECUTE dentro delas. Isso permite que um usuário de monitoramento apenas de SELECTrecupere planos para instruções para as quais não possui privilégios de execução direta.
Habilitar o rastreamento da duração da espera de bloqueio
O consumidor events_waits_current fornece informações sobre a duração da espera de bloqueio, mas requer configuração específica da plataforma:
Plataforma | Método | Persistente entre reinicializações? |
|---|---|---|
MySQL autogerenciado |
em
(
) | Sim |
AWS RDS |
| Não : é redefinido na reinicialização/failover. Executar novamente após cada reinicialização, ou conceder ao usuário receptor este
para que possa reativar o consumidor automaticamente na reconexão. |
Documentação relacionada
Compatibilidade e pré-requisitos
Saiba mais sobre as versões suportadas do MySQL, os requisitos de rede e os parâmetros de servidor recomendados.
Instrumentação em ambientes auto-hospedados
Saiba como configurar o monitoramento do MySQL em ambientes auto-hospedados com o New Relic.
Instrumentação em ambientes RDS
Saiba como configurar o monitoramento do MySQL em ambientes RDS com o New Relic.