Configure el monitoreo de Microsoft SQL Server mediante el NRDOT Collector en entornos autohospedados de Windows, incluidos servidores físicos, máquinas virtuales e instalaciones independientes de Windows, con una cuenta de servicio administrada de grupo (gMSA). Para monitorear en un entorno de Windows RDS, consulte la instrumentación de Windows RDS.
Instalación guiada
Para instalar esto a través de la UI de New Relic en su lugar, vaya a one.newrelic.com > Integrations & Agents > Microsoft SQL Server (Database 360) . Siga las instrucciones en pantalla para configurar la integración. Esta página solo cubre la instalación manual.
Esta página trata sobre la autenticación gMSA. Si su entorno utiliza un método de autenticación diferente, consulte Autenticación de SQL Server o Autenticación de dominio de Windows.
Requisitos previos
Antes de monitorear Microsoft SQL Server con NRDOT mediante la autenticación gMSA, asegúrese de que el entorno cumpla con estos requisitos:
Una cuenta de New Relic con una clave de licencia válida.
Conectividad de red al extremo OTLP de New Relic para su región.
Requisitos de SQL Server:
- SQL Server 2017 o posterior.
- Acceso administrativo a SQL Server (rol
sysadmino equivalente). - Conectividad de red entre el recolector y SQL Server en el puerto
1433o un puerto personalizado. - SQL Server Management Studio (SSMS) o la utilidad
sqlcmd.
Un entorno de Active Directory con soporte para gMSA.
Un host de Windows que esté unido al dominio y autorizado para usar la cuenta gMSA.
Instalar NRDOT Collector
Descarga e instala el NRDOT Collector usando PowerShell:
[Net.ServicePointManager]::SecurityProtocol = 'tls12, tls' $NRDOT_VERSION = (Invoke-RestMethod -Uri "https://api.github.com/repos/newrelic/nrdot-collector-releases/releases/latest").tag_name $WebClient = New-Object System.Net.WebClient $WebClient.Headers.Add("User-Agent", "Mozilla/5.0") $WebClient.DownloadFile("https://github.com/newrelic/nrdot-collector-releases/releases/download/$NRDOT_VERSION/nrdot-collector_${NRDOT_VERSION}_windows_x64.msi", "$env:TEMP\nrdot-collector.msi") Start-Process msiexec.exe -ArgumentList "/i `"$env:TEMP\nrdot-collector.msi`" /qn /norestart /L*V `"$env:TEMP\nrdot_install.log`"" -Wait Get-Service nrdot-collector -ErrorAction SilentlyContinueCrear usuario de monitoreo
En SQL Server Management Studio (SSMS), ejecute el siguiente script para crear un inicio de sesión para la cuenta gMSA y otorgar los permisos necesarios. Reemplace todas las apariciones de <YOUR_DOMAIN>\<YOUR_GMSA_USERNAME> con el dominio real y el nombre de la cuenta gMSA.
USE [master]; GO
-- Provision an engine login identity for the gMSA CREATE LOGIN [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$] FROM WINDOWS; GO
-- Grant monitoring permissions GRANT VIEW SERVER STATE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$]; GRANT VIEW ANY DEFINITION TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$]; GRANT VIEW ANY DATABASE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$]; GO
-- Grant access to all databases (required for query monitoring and tempdb metrics) 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; 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 = ''<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$'') BEGIN CREATE USER [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$] FOR LOGIN [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$]; END; GRANT VIEW DATABASE STATE TO [<YOUR_DOMAIN>\<YOUR_GMSA_USERNAME>$];'); 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; GOSugerencia
Para administrar información confidencial de forma segura, como las credenciales de la base de datos, almacénelas en herramientas de administración de secretos.
Ejecutar como cuenta gMSA
Después de instalar el Collector de NRDOT, configure el servicio para que se ejecute como su cuenta gMSA mediante PowerShell. Reemplace YOUR_DOMAIN\YOUR_gMSA_ACCOUNT$ con su dominio y nombre de cuenta gMSA. Debe incluir el $ al final, ya que es necesario para las cuentas gMSA.
# Stop the NRDOT Collector service Stop-Service nrdot-collector
# Configure service to use gMSA account # Use cmd /c to avoid PowerShell treating $ as a variable cmd /c 'sc config nrdot-collector obj= "YOUR_DOMAIN\YOUR_gMSA_ACCOUNT$" password= ""'
# Verify the configuration Get-WmiObject Win32_Service -Filter "Name='nrdot-collector'" | Select Name, StartName
# Start the NRDOT Collector service Start-Service nrdot-collectorConfigurar el Colector NRDOT
- Cree un archivo de configuración llamado
mssql-config.yamlen PowerShell como administrador:
New-Item -Path "C:\Program Files\nrdot-collector\mssql-config.yaml" -ItemType FileAgregue la siguiente configuración al archivo
mssql-config.yamlcreado en el paso anterior:configuración completa
Esta configuración se centra en el monitoreo esencial de la base de datos para el entorno de Windows SQL Server. Para habilitar un monitoreo integral con todas las métricas disponibles, consulte la referencia de configuración.
mssql-config.yaml1receivers:2nrsqlserver:3collection_interval: 15s4datasource: "server=sqlserver.example.com;port=1433;integrated security=true;encrypt=true;TrustServerCertificate=true;"56# Enable comprehensive database metrics7metrics:8sqlserver.database.count:9enabled: true10sqlserver.database.io:11enabled: true12sqlserver.database.latency:13enabled: true14sqlserver.database.operations:15enabled: true16sqlserver.database.tempdb.space:17enabled: true18sqlserver.database.tempdb.version_store.size:19enabled: true20sqlserver.deadlock.rate:21enabled: true22sqlserver.os.wait.duration:23enabled: true24sqlserver.processes.blocked:25enabled: true26sqlserver.memory.grants.pending.count:27enabled: true28sqlserver.database.file.size:29enabled: true30sqlserver.memory.area:31enabled: true3233# Enable query sample, top query, query plan, and top procedure log collection34events:35db.server.query_sample:36enabled: true37db.server.top_query:38enabled: true39db.server.query_plan:40enabled: true41db.server.top_procedure:42enabled: true4344# Top query collection configuration45top_query_collection:46lookback_time: 60s47max_query_sample_count: 100048top_query_count: 25049collection_interval: 60s50collect_full_query_text: true51allowed_comment_keys:52- nr_service_guid5354# Query sample collection configuration55query_sample_collection:56max_rows_per_query: 10057collect_full_query_text: true58allowed_comment_keys:59- nr_service_guid6061# Top stored procedure collection configuration62top_procedure_collection:63max_procedure_sample_count: 100064top_procedure_count: 25065collection_interval: 60s6667resource_attributes:68db.system.version:69enabled: true70sqlserver.db.edition:71enabled: true7273processors:74memory_limiter:75check_interval: ${env:NR_MEM_LIMITER_CHECK_INTERVAL:-1s}76limit_mib: ${env:NR_MEM_LIMITER_LIMIT_MIB:-200}77spike_limit_mib: ${env:NR_MEM_LIMITER_SPIKE_MIB:-50}7879exporters:80otlp:81endpoint: https://otlp.nr-data.net:431882headers:83api-key: YOUR_LICENSE_KEY84tls:85insecure: false86compression: gzip8788sending_queue:89enabled: true90sizer: bytes91queue_size: 100_000_00092num_consumers: 1093batch:94sizer: bytes95max_size: 1_000_00096min_size: 097flush_timeout: 5s9899service:100telemetry:101metrics:102level: none103104pipelines:105metrics:106receivers: [nrsqlserver]107processors: [memory_limiter]108exporters: [otlp]109110logs:111receivers: [nrsqlserver]112processors: [memory_limiter]113exporters: [otlp]Sugerencia
El pipeline
logsno transporta registros de depuración del recolector ni logs internos del agente. Transmite telemetría de consultas de SQL Server, incluido el texto de la consulta, los planes de ejecución y los datos de muestra. El receptornrsqlservercaptura esta telemetría a través de los eventosdb.server.query_sample,db.server.top_query,db.server.query_planydb.server.top_procedureemitidos como registros de log de OpenTelemetry.El evento
db.server.top_procedurerequiere SQL Server 2017 CU3 o posterior, que introdujo la compatibilidad consys.dm_exec_procedure_stats.total_spills. En versiones anteriores, este evento no emite datos y registra un error. Otros eventos no se ven afectados. El acceso asys.dm_exec_procedure_statsrequiereVIEW SERVER STATE(oVIEW SERVER PERFORMANCE STATE, según la versión de SQL Server). Además, se requiereVIEW ANY DEFINITIONpara queOBJECT_NAMEyOBJECT_SCHEMA_NAMEse resuelvan correctamente en todas las bases de datos de usuario, y se necesitaCONNECT SQLpara configurar las sesiones iniciales. El inicio de sesión de gMSA creado en Crear usuario de monitoreo ya tiene los 3 permisos.
Actualizar el registro del servicio de Windows
Actualice el registro de servicios de Windows para usar el nuevo archivo
mssql-config.yamlmediante uno de los siguientes métodos:- Para PowerShell: ejecute el siguiente comando como administrador:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\nrdot-collector" -Name "ImagePath" -Value '"C:\Program Files\nrdot-collector\nrdot-collector.exe" --config "C:\Program Files\nrdot-collector\mssql-config.yaml"'- Para el símbolo del sistema: si PowerShell no está disponible, use el símbolo del sistema en su lugar y ejecute el siguiente comando como administrador:
$sc config "nrdot-collector" binPath= "\"C:\Program Files\nrdot-collector\nrdot-collector.exe\" --config \"C:\Program Files\nrdot-collector\mssql-config.yaml\""- Valide la configuración del NRDOT Collector para asegurarse de que tenga el formato correcto y funcione correctamente:
$& "C:\Program Files\nrdot-collector\nrdot-collector.exe" validate --config="C:\Program Files\nrdot-collector\mssql-config.yaml"Sugerencia
Para correlacionar el rendimiento de su aplicación con las operaciones de la base de datos, puede configurar la identificación del servicio de base de datos. Para obtener más información, consulte configurar la identificación del servicio de base de datos.
Reiniciar NRDOT Collector
Después de actualizar su configuración, reinicie el servicio NRDOT Collector:
$net stop nrdot-collector$ net start nrdot-collectorSugerencia
Siempre reinicie el servicio NRDOT Collector después de realizar cambios de configuración para garantizar que los nuevos ajustes surtan efecto.
Encuentra y utiliza tus datos
Una vez que sus datos se estén recopilando, puede acceder al monitoreo integral de bases de datos SQL Server a través de la UI de New Relic.
Para encontrar su entidad de base de datos SQL Server en New Relic:
Vaya a https://one.newrelic.com > All Capabilities > Databases.
En el menú desplegable Entity type, seleccione MSSQL instance y luego haga clic en Apply.
Seleccione su base de datos SQL Server de la lista de entidades.
Después de configurar el monitoreo de SQL Server con NRDOT, puede:
- Crea dashboards personalizados para visualizar las métricas de tu base de datos
- Configura alertas para umbrales críticos de rendimiento de la base de datos
- Explore los datos con las capacidades de consulta de New Relic
Documentación relacionada
Configurar la correlación de APM y base de datos
Aprenda a correlacionar el rendimiento de la aplicación con las operaciones de la base de datos en New Relic.
Resolución de problemas
Aprenda a solucionar problemas de la configuración de monitoreo de MSSQL Windows en New Relic.
Referencia de métricas
Obtenga información sobre las métricas disponibles recopiladas por NRDOT Collector.