Configure o monitoramento do MySQL usando o NRDOT Collector como um contêiner irmão de uma instância do MySQL que já está em execução no Docker.
Instalação guiada
Para instalar pela interface da New Relic, acesse one.newrelic.com > Integrations & Agents > MySQL (Database 360) . Esta página aborda apenas a instalação manual.
Dica
Deseja automatizar isso em escala ou executar no Kubernetes? Consulte a instalação do Ansible, a instalação do Chef ou a instalação do Helm chart.
Pré-requisitos
Antes de instalar, certifique-se de ter:
- Docker instalado no host.
- Um contêiner MySQL já em execução (MySQL 5.7 ou posterior).
- Uma chave de licença da New Relic.
- Conectividade de rede do contêiner do coletor para os endpoints OTLP da New Relic.
Para versões suportadas do MySQL, permissões necessárias e requisitos de performance_schema, consulte Compatibilidade e pré-requisitos.
Configurar usuário do banco de dados
Crie um usuário de monitoramento com os privilégios necessários executando SQL no seu contêiner MySQL com docker exec. Substitua <YOUR_MYSQL_CONTAINER_NAME>, <YOUR_MYSQL_ROOT_PASSWORD>, <YOUR_DB_USERNAME> e <YOUR_DB_PASSWORD> pelos seus próprios valores.
Para criar um usuário de monitoramento com os privilégios mínimos necessários para a coleta de métricas, execute:
bash$docker exec -i <YOUR_MYSQL_CONTAINER_NAME> mysql -u root -p'<YOUR_MYSQL_ROOT_PASSWORD>' -e "CREATE USER '<YOUR_DB_USERNAME>'@'%' IDENTIFIED BY '<YOUR_DB_PASSWORD>'; GRANT SELECT ON performance_schema.* TO '<YOUR_DB_USERNAME>'@'%'; FLUSH PRIVILEGES;"Para também coletar amostras de consulta e as principais consultas, conceda, em vez disso, o conjunto completo de privilégios:
bash$docker exec -i <YOUR_MYSQL_CONTAINER_NAME> mysql -u root -p'<YOUR_MYSQL_ROOT_PASSWORD>' -e "CREATE USER '<YOUR_DB_USERNAME>'@'%' IDENTIFIED BY '<YOUR_DB_PASSWORD>'; GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO '<YOUR_DB_USERNAME>'@'%'; GRANT SELECT ON performance_schema.* TO '<YOUR_DB_USERNAME>'@'%'; FLUSH PRIVILEGES;"(Opcional) Para visualizar os dados de tempo de espera na plataforma New Relic, conceda o seguinte privilégio ao usuário de monitoramento:
bash$docker exec -i <YOUR_MYSQL_CONTAINER_NAME> mysql -u root -p'<YOUR_MYSQL_ROOT_PASSWORD>' -e "GRANT UPDATE ON performance_schema.setup_consumers TO '<YOUR_DB_USERNAME>'@'%'; FLUSH PRIVILEGES;"(Opcional) Para verificar a conexão e as permissões, é necessário executar:
bash$docker exec -i <YOUR_MYSQL_CONTAINER_NAME> mysql -u '<YOUR_DB_USERNAME>' -p'<YOUR_DB_PASSWORD>' -e "SELECT 1;"Se o comando for concluído sem erro, o usuário de monitoramento e a senha estão corretos.
Crie a configuração do Collector NRDOT
Esta configuração tem como foco o monitoramento essencial do MySQL com o receiver nrmysql. Execute o seguinte no host do Docker para gerar mysql-config.yaml em seu diretório atual:
$cat << 'EOF' > mysql-config.yaml$receivers:$ nrmysql:$ endpoint: "<YOUR_MYSQL_CONTAINER_NAME>:3306"$ transport: tcp$ username: "<YOUR_DB_USERNAME>"$ password: "<YOUR_DB_PASSWORD>"$ allow_native_passwords: true$ collection_interval: 15s$ initial_delay: 1s$ explain_mode: procedure$ statement_events:$ digest_text_limit: 4096$ time_limit: 24h$ limit: 500$ query_sample_collection:$ max_rows_per_query: 100$ allowed_comment_keys: [nr_service_guid]$ top_query_collection:$ lookback_time: 60$ max_query_sample_count: 5000$ top_query_count: 200$ collection_interval: 60s$ query_plan_cache_size: 1000$ query_plan_cache_ttl: 1h$ allowed_comment_keys: [nr_service_guid]$ events:$ db.server.query_sample:$ enabled: true$ db.server.top_query:$ enabled: true$ db.server.query_plan:$ enabled: true$ resource_attributes:$ db.system.version:$ enabled: true$ metrics:$ mysql.query.count:$ enabled: true$ mysql.query.slow.count:$ enabled: true$ mysql.commands:$ enabled: true$ mysql.innodb.data_file.io:$ enabled: true$
$processors:$ batch:$
$exporters:$ otlp/newrelic:$ endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"$ headers:$ api-key: "<YOUR_NEWRELIC_LICENSE_KEY>"$ compression: gzip$ retry_on_failure:$ enabled: true$ initial_interval: 5s$ max_interval: 30s$ max_elapsed_time: 300s$
$service:$ pipelines:$ metrics:$ receivers: [nrmysql]$ processors: [batch]$ exporters: [otlp/newrelic]$ logs:$ receivers: [nrmysql]$ processors: [batch]$ exporters: [otlp/newrelic]$EOFParâmetro de configuração
| Parâmetro | Descrição |
|---|---|
<YOUR_MYSQL_CONTAINER_NAME> | O nome (ou nome do host resolvível por DNS do Docker) do seu contêiner MySQL em execução. |
<YOUR_DB_USERNAME> | O usuário de monitoramento que você criou em Configurar usuário do banco de dados. |
<YOUR_DB_PASSWORD> | A senha do usuário de monitoramento criado em Configurar usuário do banco de dados. |
<YOUR_NEWRELIC_OTLP_ENDPOINT> | Seu endpoint OTLP da New Relic. Para mais informações, consulte os endpoints OTLP da New Relic. |
<YOUR_NEWRELIC_LICENSE_KEY> | Sua chave de licença da New Relic. |
Inicie o contêiner do Collector NRDOT
Execute o coletor na mesma rede Docker do seu contêiner MySQL para que ele possa resolver <YOUR_MYSQL_CONTAINER_NAME> pelo nome do contêiner:
$docker run -d \> --name nrdot-collector \> --network <YOUR_DOCKER_NETWORK> \> -v "$PWD/mysql-config.yaml:/etc/nrdot-collector/mysql-config.yaml" \> newrelic/nrdot-collector:latest \> --config /etc/nrdot-collector/mysql-config.yamlDica
Encontre a rede do seu contêiner MySQL com docker inspect <YOUR_MYSQL_CONTAINER_NAME> --format '{{json .NetworkSettings.Networks}}'. Se ele ainda não estiver em uma rede compartilhada definida pelo usuário, crie uma e conecte ambos os contêineres a ela:
$docker network create <YOUR_DOCKER_NETWORK>$docker network connect <YOUR_DOCKER_NETWORK> <YOUR_MYSQL_CONTAINER_NAME>Confirme se o contêiner do coletor está em execução:
$docker ps --filter name=nrdot-collectorSe não estiver em execução, verifique seus logs em busca de erros. As causas mais comuns são problemas de indentação YAML em mysql-config.yaml ou um contêiner MySQL inacessível:
$docker logs nrdot-collectorDica
Após alterar mysql-config.yaml, reinicie o contêiner para aplicar suas alterações:
$docker restart nrdot-collectorEncontre e use seus dados
Assim que seus dados estiverem sendo coletados, você poderá acessar o monitoramento abrangente do banco de dados MySQL por meio da interface do New Relic.
Para encontrar a entidade de banco de dados MySQL no New Relic:
- Vá para one.newrelic.com > All capabilities > Databases.
- Na dropdown Entity type, selecione MySQL instance e clique em Apply.
- Selecione seu banco de dados MySQL na lista de entidades.
Para confirmar que os dados estão chegando, execute esta consulta no criador de consulta:
SELECT count(*) FROM MetricWHERE metricName LIKE 'mysql.%'AND instrumentation.provider = 'opentelemetry'SINCE 10 minutes agoDocumentação relacionada
Introdução ao monitoramento do MySQL com NRDOT
Saiba mais sobre todos os métodos de instalação disponíveis para o monitoramento do MySQL com o New Relic.
Instalação auto-hospedada
Aprenda a configurar o monitoramento do MySQL em servidores físicos, máquinas virtuais e instalações autônomas.
Instalação via Ansible
Saiba como instalar e configurar o monitoramento do MySQL em escala com o newrelic.newrelic_install função Ansible.
Instalação via Chef
Aprenda a instalar e configurar o monitoramento do MySQL em escala com o cookbook newrelic-install do Chef.
Instalação do chart do Helm
Saiba como instalar e configurar o monitoramento do MySQL no Kubernetes com o Helm chart mysql-otel.