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 ago
Documentaçã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.