Obtenga información valiosa completa sobre el rendimiento de su AWS RDS SQL Server con el monitoreo de base de datos, el análisis de consultas y las métricas de estado del sistema mediante el recolector de New Relic Distribution of OpenTelemetry (NRDOT).
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.
Sugerencia
Si utiliza SQL Server en un entorno autohospedado de Linux, consulte Instrumentación de Linux para SQL Server autohospedado.
Requisitos previos
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 AWS RDS SQL Server:
- AWS RDS SQL Server 2017 o posterior.
- Nombre de usuario y contraseña maestro de RDS.
- Grupo de seguridad que permite conexiones entrantes en el puerto
1433o un puerto personalizado.
Requisitos del sistema de Linux:
- La utilidad
sqlcmdinstalada en su sistema Linux.
- La utilidad
Instalar NRDOT Collector
Descargue e instale el paquete NRDOT para su distribución de Linux. Reemplace <NRDOT_VERSION> con la última etiqueta de versión de la página nrdot-collector-releases.
Importante
Instale el Collector de NRDOT en una instancia EC2 o máquina local con conectividad de red a la instancia de RDS SQL Server. Asegúrese de que el grupo de seguridad permita conexiones entrantes en el puerto 1433 (o un puerto personalizado).
Crear usuario de monitoreo
Ejecute este script como usuario root para crear el usuario de monitoreo newrelic y otorgar los permisos necesarios para recopilar las métricas de RDS SQL Server.
Cree un archivo llamado
nr-grant-permission-rds.sql.Pegue el siguiente script de SQL para crear el usuario de monitoreo de
newrelicy reemplace<YOUR_PASSWORD>con la contraseña deseada: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;GOEjecute el script usando
sqlcmdcon cualquier inicio de sesión que tenga permiso para crear inicios de sesión y otorgar permisos a nivel de servidor (por ejemplo, el inicio de sesiónsau otra cuenta con el rolsysadmin). Reemplace<YOUR-RDS-ENDPOINT>con el extremo de RDS y<YOUR_MASTER_PASSWORD>con la contraseña maestra:
$sqlcmd -S <YOUR-RDS-ENDPOINT> -U <YOUR_MASTER_USER> -P '<YOUR_MASTER_PASSWORD>' -C -i nr-grant-permission-rds.sql- (Opcional) Verifique que el usuario se creó correctamente con los permisos correctos:
$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';"Sugerencia
- Use el nombre de usuario y la contraseña maestros de RDS para ejecutar estos comandos. El script excluye automáticamente la base de datos
rdsadmin, que está reservada por AWS. - 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.
Configurar el Colector NRDOT
Seleccione la opción de configuración según sus requisitos de monitoreo:
Cree un archivo de configuración llamado
mssql-config.yaml:bash$sudo nano /etc/nrdot-collector/mssql-config.yamlAgregue 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 su entorno RDS. Para habilitar un monitoreo integral con todas las métricas disponibles, consulte la referencia de configuración.
1receivers:2nrsqlserver:3 collection_interval: 15s4 # Connection details - Use your RDS endpoint5 username: newrelic6 password: YOUR_PASSWORD7 server: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.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]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 el soporte parasys.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, dependiendo de 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 usuario de monitoreo creado en Crear usuario de monitoreo incluye los 3 permisos.
Actualizar la configuración de NRDOT Collector
Después de configurar su archivo YAML con las entradas interactivas anteriores, complete la configuración de NRDOT Collector:
Edite el archivo de configuración del servicio usando el siguiente comando:
bash$sudo nano /etc/nrdot-collector/nrdot-collector.confActualice la ruta de configuración para que apunte a su nuevo archivo
mssql-config.yaml:bash$OTELCOL_CONFIG="/etc/nrdot-collector/mssql-config.yaml"(Opcional) Valide la configuración del Collector de NRDOT:
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/mssql-config.yamlSugerencia
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 la guía de configuración de identificación del servicio de base de datos.
Reiniciar NRDOT Collector
Después de actualizar su configuración, reinicie el servicio NRDOT Collector:
$sudo systemctl restart 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 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 Linux RDS en New Relic.
Referencia de métricas
Obtenga información sobre las métricas disponibles recopiladas por NRDOT Collector.