Obtenha insights abrangentes sobre o desempenho do seu SQL Server com o 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
Se você estiver usando o SQL Server em um ambiente Linux RDS, consulte a Instrumentação Linux para RDS.
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 SQL Server:
- SQL Server 2017 ou posterior.
- Acesso administrativo ao SQL Server (função
sysadminou equivalente). - Conectividade de rede entre o coletor e o SQL Server na porta
1433ou em uma porta personalizada. - O utilitário
sqlcmdinstalado no seu sistema Linux.
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.
Dica
Recomendamos instalar o NRDOT Collector no mesmo host que a instância do SQL Server para visualizar métricas de nível de infraestrutura para monitoramento de desempenho de consultas.
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 SQL Server.
Crie um arquivo de configuração chamado
nr-grant-permission.sql.Cole o seguinte script SQL para criar o usuário de monitoramento
newrelice substitua<YOUR_PASSWORD>pela senha desejada:USE [master];GOCREATE LOGIN [newrelic] WITH PASSWORD = '<YOUR_PASSWORD>';GO-- Instance-level permissionsGRANT 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 databasesDECLARE @name SYSNAME;DECLARE db_cursor CURSOR READ_ONLY FORWARD_ONLY FORSELECT [name]FROM [master].[sys].[databases]WHERE [name] NOT IN ('master', 'msdb', 'model', 'rdsadmin', 'distribution')AND [state] = 0; -- Only online databasesOPEN db_cursor;FETCH NEXT FROM db_cursor INTO @name;WHILE @@FETCH_STATUS = 0BEGINBEGIN TRYEXEC('USE [' + @name + '];IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = ''newrelic'')BEGINCREATE USER [newrelic] FOR LOGIN [newrelic];END;GRANT VIEW DATABASE STATE TO [newrelic];');END TRYBEGIN CATCHPRINT 'Error on ' + @name + ': ' + ERROR_MESSAGE();END CATCHFETCH NEXT FROM db_cursor INTO @name;ENDCLOSE db_cursor;DEALLOCATE db_cursor;GOExecute o script usando
sqlcmdcom qualquer login que tenha permissão para criar logins e conceder permissões no nível do servidor (por exemplo, o loginsaou outra conta com a funçãosysadmin). Substitua<YOUR_ADMIN_USERNAME>e<YOUR_ADMIN_PASSWORD>pelas credenciais desse login:bash$sqlcmd -S <YOUR_DB_ENDPOINT> -U <YOUR_ADMIN_USERNAME> -P '<YOUR_ADMIN_PASSWORD>' -C -i nr-grant-permission.sql(Opcional) Verifique se o usuário foi criado com sucesso e possui as permissões corretas:
bash$sqlcmd -S <YOUR_DB_ENDPOINT> -U <YOUR_ADMIN_USERNAME> -P '<YOUR_ADMIN_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';"Saída esperada:
bashUser Permission_Granted-------------------------------------------------------------------------------------newrelic CONNECT SQLnewrelic VIEW ANY DEFINITIONnewrelic VIEW ANY DATABASEnewrelic VIEW SERVER STATEEsta saída confirma que seu usuário foi criado com sucesso com as permissões necessárias em nível de servidor.
Dica
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.yaml- Adicione a seguinte configuração ao arquivo
mssql-config.yamlcriado na etapa anterior:
configuração completa
Esta configuração concentra-se no monitoramento essencial de banco de dados para o seu ambiente SQL Server. Para habilitar o monitoramento abrangente com todas as métricas disponíveis, consulte a referência de configuração.
1receivers:2nrsqlserver:3 collection_interval: 15s4 # Direct connection to SQL Server5 username: newrelic6 password: YOUR_PASSWORD7 server: sqlserver.example.com8 port: 14339
10 # Enable comprehensive database metrics11 metrics:12 sqlserver.database.count:13 enabled: true14 sqlserver.database.io:15 enabled: true16 sqlserver.database.latency:17 enabled: true18 sqlserver.database.operations:19 enabled: true20 sqlserver.database.tempdb.space:21 enabled: true22 sqlserver.database.tempdb.version_store.size:23 enabled: true24 sqlserver.deadlock.rate:25 enabled: true26 sqlserver.os.wait.duration:27 enabled: true28 sqlserver.processes.blocked:29 enabled: true30 sqlserver.memory.grants.pending.count:31 enabled: true32 sqlserver.database.file.size:33 enabled: true34 sqlserver.memory.area:35 enabled: true36
37 # Enable query sample, top query, query plan, and top procedure log collection38 events:39 db.server.query_sample:40 enabled: true41 db.server.top_query:42 enabled: true43 db.server.query_plan:44 enabled: true45 db.server.top_procedure:46 enabled: true47
48 # Top query collection configuration49 top_query_collection:50 lookback_time: 60s51 max_query_sample_count: 100052 top_query_count: 25053 collection_interval: 60s54 collect_full_query_text: true55 allowed_comment_keys:56 - nr_service_guid57
58 # Query sample collection configuration59 query_sample_collection:60 max_rows_per_query: 10061 collect_full_query_text: true62 allowed_comment_keys:63 - nr_service_guid64
65 # Top stored procedure collection configuration66 top_procedure_collection:67 max_procedure_sample_count: 100068 top_procedure_count: 25069 collection_interval: 60s70
71 resource_attributes:72 db.system.version:73 enabled: true74 sqlserver.db.edition:75 enabled: true76
77processors:78memory_limiter:79 check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}80 limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}81 spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}82
83exporters:84otlp:85 endpoint: https://otlp.nr-data.net:431886 headers:87 api-key: YOUR_LICENSE_KEY88 tls:89 insecure: false90 compression: gzip91
92 sending_queue:93 enabled: true94 sizer: bytes95 queue_size: 100_000_00096 num_consumers: 1097 batch:98 sizer: bytes99 max_size: 1_000_000100 min_size: 0101 flush_timeout: 5s102
103service:104telemetry:105 metrics:106 level: none107
108pipelines:109 metrics:110 receivers: [nrsqlserver]111 processors: [memory_limiter]112 exporters: [otlp]113
114 logs:115 receivers: [nrsqlserver]116 processors: [memory_limiter]117 exporters: [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:
bash$sudo nano /etc/nrdot-collector/nrdot-collector.confAtualize o caminho da configuração para apontar para o novo arquivo
mssql-config.yaml:bash$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"(Opcional) Valide a configuração do Collector NRDOT:
bash$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
Saiba como solucionar problemas na sua configuração de monitoramento do MSSQL no New Relic.
Referência de métricas
Saiba mais sobre as métricas disponíveis coletadas pelo NRDOT Collector.