Obtenha insights abrangentes sobre o desempenho do seu AWS RDS SQL Server com monitoramento de banco de dados, análise de consulta e métricas de integridade do sistema usando o coletor New Relic Distribution of OpenTelemetry (NRDOT).
Instalação guiada
Para instalar isso pela interface da New Relic, acesse one.newrelic.com > Integrations & Agents > Microsoft SQL Server (Database 360) . Siga as instruções na tela para configurar a integração. Esta página aborda apenas a instalação manual.
Dica
Caso esteja utilizando o SQL Server em um ambiente Linux auto-hospedado, consulte Instrumentação do Linux para SQL Server auto-hospedado.
Pré-requisitos
Uma conta New Relic com uma chave de licença válida.
Conectividade de rede para o endpoint OTLP da New Relic para sua região.
Requisitos do AWS RDS SQL Server:
- AWS RDS SQL Server 2017 ou posterior.
- Nome de usuário e senha mestre do RDS.
- Grupo de segurança que permite conexões de entrada na porta
1433ou em uma porta personalizada.
Requisitos do sistema Linux:
- O utilitário
sqlcmdinstalado no seu sistema Linux.
- O utilitário
Instalar o NRDOT Collector
Baixe e instale o pacote NRDOT para sua distribuição Linux. Substitua <NRDOT_VERSION> pela tag de versão mais recente da página nrdot-collector-releases.
Importante
Instale o NRDOT Collector em uma instância de EC2 ou máquina local com conectividade de rede com a sua instância do RDS SQL Server. Certifique-se de que o seu grupo de segurança permita conexões de entrada na porta 1433 (ou em uma porta personalizada).
Criar usuário de monitoramento
Execute este script como usuário root para criar o usuário de monitoramento newrelic e conceder as permissões necessárias para coletar métricas do RDS SQL Server.
Crie um arquivo chamado
nr-grant-permission-rds.sql.Cole o seguinte script SQL para criar o usuário de monitoramento
newrelice substitua<YOUR_PASSWORD>pela senha desejada:
USE [master]; GO CREATE LOGIN [newrelic] WITH PASSWORD = '<YOUR_PASSWORD>'; GO -- Instance-level permissions GRANT VIEW SERVER STATE TO [newrelic]; GRANT VIEW ANY DEFINITION TO [newrelic]; GRANT VIEW ANY DATABASE TO [newrelic]; GO -- Grant read access privileges to all user databases DECLARE @name SYSNAME; DECLARE db_cursor CURSOR READ_ONLY FORWARD_ONLY FOR SELECT [name] FROM [master].[sys].[databases] WHERE [name] NOT IN ('master', 'msdb', 'model', 'rdsadmin', 'distribution') AND [state] = 0; -- Only online databases OPEN db_cursor; FETCH NEXT FROM db_cursor INTO @name; WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY EXEC('USE [' + @name + ']; IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''newrelic'') BEGIN CREATE USER [newrelic] FOR LOGIN [newrelic]; END; GRANT VIEW DATABASE STATE TO [newrelic];'); END TRY BEGIN CATCH PRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE(); END CATCH FETCH NEXT FROM db_cursor INTO @name; END CLOSE db_cursor; DEALLOCATE db_cursor; GO- Execute o script usando
sqlcmdcom qualquer login que tenha permissão para criar logins e conceder permissões em nível de servidor (por exemplo, o loginsaou outra conta com a funçãosysadmin). Substitua<YOUR-RDS-ENDPOINT>pelo seu endpoint do RDS e<YOUR_MASTER_PASSWORD>pela sua senha mestra:
$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_PASSWORD>' -C -i nr-grant-permission-rds.sql- (Opcional) Verifique se o usuário foi criado com sucesso e possui as permissões corretas:
$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_PASSWORD>' -C -Q "SELECT sp.name AS [User], p.permission_name AS [Permission_Granted] FROM sys.server_permissions p JOIN sys.server_principals sp ON p.grantee_principal_id = sp.principal_id WHERE sp.name = 'newrelic';"Dica
Use seu nome de usuário e senha mestre do RDS para executar estes comandos. O script exclui automaticamente o banco de dados rdsadmin, que é reservado pela AWS.
Para gerenciar informações confidenciais com segurança, como credenciais de banco de dados, armazene-as em ferramentas de gerenciamento de segredos.
Configurar o NRDOT Collector
Escolha sua opção de configuração com base nos seus requisitos de monitoramento:
- Crie um arquivo de configuração chamado
mssql-config.yaml:
$sudo nano /etc/nrdot-collector/mssql-config.yamlAdicione a seguinte configuração ao arquivo
mssql-config.yamlcriado na etapa anterior:configuração completa
Esta configuração se concentra no monitoramento essencial de banco de dados para o seu ambiente RDS. Para habilitar o monitoramento abrangente com todas as métricas disponíveis, consulte a referência de configuração.
mssql-config.yaml1receivers:2nrsqlserver:3collection_interval: 15s4# Connection details - Use your RDS endpoint5username: newrelic6password: YOUR_PASSWORD7server: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com8port: 1433910# Enable comprehensive database metrics11metrics:12sqlserver.database.count:13enabled: true14sqlserver.database.io:15enabled: true16sqlserver.database.latency:17enabled: true18sqlserver.database.operations:19enabled: true20sqlserver.database.tempdb.space:21enabled: true22sqlserver.database.tempdb.version_store.size:23enabled: true24sqlserver.deadlock.rate:25enabled: true26sqlserver.os.wait.duration:27enabled: true28sqlserver.processes.blocked:29enabled: true30sqlserver.memory.grants.pending.count:31enabled: true32sqlserver.database.file.size:33enabled: true34sqlserver.memory.area:35enabled: true3637# Enable query sample, top query, query plan, and top procedure log collection38events:39db.server.query_sample:40enabled: true41db.server.top_query:42enabled: true43db.server.query_plan:44enabled: true45db.server.top_procedure:46enabled: true4748# Top query collection configuration49top_query_collection:50lookback_time: 60s51max_query_sample_count: 100052top_query_count: 25053collection_interval: 60s54collect_full_query_text: true55allowed_comment_keys:56- nr_service_guid5758# Query sample collection configuration59query_sample_collection:60max_rows_per_query: 10061collect_full_query_text: true62allowed_comment_keys:63- nr_service_guid6465# Top stored procedure collection configuration66top_procedure_collection:67max_procedure_sample_count: 100068top_procedure_count: 25069collection_interval: 60s7071resource_attributes:72db.system.version:73enabled: true74sqlserver.db.edition:75enabled: true7677processors:78memory_limiter:79check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}80limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}81spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}8283exporters:84otlp:85endpoint: https://otlp.nr-data.net:431886headers:87api-key: YOUR_LICENSE_KEY88tls:89insecure: false90compression: gzip9192sending_queue:93enabled: true94sizer: bytes95queue_size: 100_000_00096num_consumers: 1097batch:98sizer: bytes99max_size: 1_000_000100min_size: 0101flush_timeout: 5s102103service:104telemetry:105metrics:106level: none107108pipelines:109metrics:110receivers: [nrsqlserver]111processors: [memory_limiter]112exporters: [otlp]113114logs:115receivers: [nrsqlserver]116processors: [memory_limiter]117exporters: [otlp]Dica
O pipeline
logsnão transporta logs de depuração do coletor ou logs internos do agente. Ele transmite a telemetria de consulta do SQL Server, incluindo texto da consulta, planos de execução e dados de amostra. O receptornrsqlservercaptura essa telemetria por meio dos eventosdb.server.query_sample,db.server.top_query,db.server.query_planedb.server.top_procedureemitidos como registros de log do OpenTelemetry.O evento
db.server.top_procedurerequer o SQL Server 2017 CU3 ou posterior, que introduziu suporte parasys.dm_exec_procedure_stats.total_spills. Em versões anteriores, esse evento não emite dados e registra um erro. Outros eventos não são afetados. O acesso asys.dm_exec_procedure_statsrequerVIEW SERVER STATE(ouVIEW SERVER PERFORMANCE STATE, dependendo da versão do SQL Server). Além disso,VIEW ANY DEFINITIONé necessário para queOBJECT_NAMEeOBJECT_SCHEMA_NAMEsejam resolvidos corretamente em todos os bancos de dados de usuário, eCONNECT SQLé necessário para configurar as sessões iniciais. O usuário de monitoramento criado em Criar usuário de monitoramento inclui todas as 3 permissões.
Atualize a configuração do NRDOT Collector
Após configurar seu arquivo YAML com as entradas interativas acima, conclua a configuração do NRDOT Collector:
- Edite o arquivo de configuração do serviço usando o seguinte comando:
$sudo nano /etc/nrdot-collector/nrdot-collector.conf- Atualize o caminho da configuração para apontar para o novo arquivo
mssql-config.yaml:
$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"- (Opcional) Valide a configuração do Collector NRDOT:
$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mssql-config.yamlDica
Para correlacionar o desempenho do seu aplicativo com as operações de banco de dados, você pode configurar a identificação de serviço de banco de dados. Para mais informações, consulte o guia de configuração da identificação de serviço de banco de dados.
Reiniciar o NRDOT Collector
Após atualizar sua configuração, reinicie o serviço NRDOT Collector:
$sudo systemctl restart nrdot-collectorDica
Sempre reinicie o serviço do NRDOT Collector após fazer alterações na configuração para garantir que as novas configurações entrem em vigor.
Encontre e use seus dados
Assim que os dados estiverem sendo coletados, será possível acessar o monitoramento abrangente do banco de dados SQL Server por meio da interface do New Relic.
Para encontrar sua entidade de banco de dados SQL Server no New Relic:
Vá para one.newrelic.com > All capabilities > Databases.
Na dropdown Entity type, selecione MSSQL instance e clique em Apply.
Selecione seu banco de dados SQL Server na lista de entidades.
Após configurar o monitoramento do SQL Server com o NRDOT, você pode:
- Crie dashboards personalizados para visualizar suas métricas de banco de dados
- Configure alertas para limites críticos de desempenho do banco de dados
- Explore seus dados usando os recursos de consulta do New Relic
Documentação relacionada
Configurar a correlação entre APM e banco de dados
Aprenda a correlacionar o desempenho do seu aplicativo com as operações de banco de dados no New Relic.
Resolução de problemas
Aprenda a solucionar problemas na sua configuração de monitoramento do MSSQL Linux RDS no New Relic.
Referência de métricas
Saiba mais sobre as métricas disponíveis coletadas pelo NRDOT Collector.