• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Receptor de consulta SQL con NRDOT

|View as Markdown (English)

El sqlqueryreceiver es un receptor de OpenTelemetry Collector que permite ejecutar cualquier consulta SQL personalizada en la base de datos e ingerir los resultados como métricas en New Relic.

Úselo cuando desee monitorear datos que no estén cubiertos por las métricas integradas de nroracledbreceiver / nrsqlserverreceiver / nrmysqlreceiver / nrpostgresqlreceiver. Las métricas personalizadas recopiladas mediante sqlqueryreceiver aparecen bajo la misma entidad de Oracle, SQL Server, MySQL o PostgreSQL en New Relic que los datos del receptor integrado, siempre que los atributos de vinculación de entidades estén configurados correctamente.

Requisitos previos

  • El usuario de la base de datos configurado en la fuente de datos debe tener el privilegio SELECT en cualquier vista o tabla que pretenda consultar.
  • El binario del recolector debe incluir el componente sqlqueryreceiver.

Configuración

Agregue el bloque sqlqueryreceiver dentro de la sección receivers: de oracle-config.yaml existente, junto al bloque nroracledb existente:

receivers:
nroracledb:
...
sqlquery/oracle:
driver: oracle
# Approach 1: Use the `host`, `port`, `database`, `username`, and `password` fields to connect to your database. The receiver will construct the datasource URL for you.
# host: <YOUR_DB_HOST>
# port: <YOUR_DB_PORT>
# database: <YOUR_DATABASE_NAME>
# username: <YOUR_DB_USERNAME>
# password: <YOUR_DB_PASSWORD>
# Approach 2: Use the `datasource` field to provide a full connection string.
datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>/<YOUR_SERVICE_NAME>"
collection_interval: 60s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: oracledb.<YOUR_METRIC_NAME>
value_column: <RESULT_COLUMN>
attribute_columns: [<DIMENSION_COLUMN_1>, <DIMENSION_COLUMN_2>]
value_type: double

Establezca los siguientes parámetros para cada métrica:

Parámetro

Descripción

<YOUR_DB_HOST>

Su nombre de host o dirección IP. Por ejemplo,

10.12.0.4

<YOUR_DB_PORT>

El número de puerto. El valor predeterminado está establecido en

1433

<YOUR_DB_USERNAME>

Su nombre de usuario de la base de datos Oracle. Por ejemplo

newrelic

<YOUR_DB_PASSWORD>

La contraseña de su base de datos Oracle.

<YOUR_SERVICE_NAME>

El nombre del servicio de Oracle. Por ejemplo

master

collection_interval

Con qué frecuencia ejecutar las consultas y recopilar métricas. Por ejemplo,

30s

,

60s

<YOUR_CUSTOM_SQL>

La consulta SQL a ejecutar.

Importante

Asegúrese de que sus consultas personalizadas no recopilen ni expongan PII o datos confidenciales.

<YOUR_METRIC_NAME>

El nombre de su métrica que se muestra en New Relic. Use el prefijo

oracledb.

para mantener la coherencia. Por ejemplo

oracledb.custom.wait_time_ms

<VALUE_COLUMN>

La columna del resultado de la consulta cuyo valor se convierte en el valor de la métrica. Por ejemplo

wait_time_ms

<VALUE_TYPE>

Tipo de datos de la columna de valor. Opciones:

int

,

double

. Por defecto es

int

si se omite. Por ejemplo

int

<DATA_TYPE>

Tipo de métrica OTLP. Use

gauge

para valores actuales/de instantánea. Use

sum

para contadores acumulativos. Por defecto es

gauge

si se omite. Por ejemplo

gauge

<UNIT>

Unidad de medida para el valor de la métrica. Utilizado como metadatos en New Relic. Por ejemplo

ms

,

By

,

s

,

%

,

1

<ATTRIBUTE_COLUMNS>

Columnas del resultado de la consulta que se convierten en etiquetas/dimensiones de métrica. Se utiliza para filtrar y facetar en NRQL. Por ejemplo

["wait_type", "database_name"]

Importante

Para los usuarios de Oracle CDB (prefijo C##), codifique # como %23 en la URL de la fuente de datos. Por ejemplo: c##newrelic debe ser c%23%23newrelic

Convención de nomenclatura

Los nombres de las métricas deben comenzar con oracledb. para asociarse con la entidad correcta en New Relic. Las métricas con un prefijo diferente se ingerirán, pero no aparecerán bajo la entidad de la base de datos.

Síntesis de entidad

Agregue los procesadores resource/add_event_name y resource/add_host para establecer server.address y server.port en los mismos valores utilizados por el receptor de la base de datos. Sin esto, las métricas personalizadas no se vincularán a la entidad de la base de datos.

Agregue los procesadores en la sección processors::

processors:
batch:
resource/add_event_name:
attributes:
- key: server.address
value: "<YOUR_DB_HOST>"
action: upsert
resource/add_host:
attributes:
- key: server.port
value: "<YOUR_DB_PORT>"
action: upsert

Configuración del Pipeline

Agregue un pipeline metrics/custom en la sección service.pipelines: de la configuración, junto a los pipelines existentes:

service:
pipelines:
metrics/oracledb:
receivers: [nroracledb]
processors: [batch]
exporters: [otlp/newrelic]
logs/oracledb:
receivers: [nroracledb]
processors: [batch]
exporters: [otlp/newrelic]
metrics/custom:
receivers: [sqlquery/oracle]
processors: [resource/add_event_name, resource/add_host, batch]
exporters: [otlp/newrelic]

Importante

Agregue tanto resource/add_event_name como resource/add_host antes de batch en la lista de procesadores.

NRQL para validar datos

Después de reiniciar el recolector, ejecute lo siguiente para confirmar que están llegando las métricas personalizadas:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'oracledb.%'
SINCE 1 hour ago

Resolución de problemas [#troubleshooting]

ProblemaCausaArreglar
ORA-00942: table or view does not existAl usuario de la base de datos le falta el privilegio SELECTOtorgue SELECT ON <VIEW_NAME> al usuario
missing port in address# en nombre de usuario/contraseña no codificados en URLReemplace # con %23 en la URL de la fuente de datos
No hay datos en New Relicserver.address/server.port no establecido o no coincideAgregue los procesadores resource/add_event_name y resource/add_host con los valores correctos
Métricas que no están bajo la entidad de base de datosNombre de la métrica sin el prefijo requeridoAsegúrese de que los nombres de las métricas comiencen con oracledb.

Si nada de lo anterior resuelve el problema, revise los logs del propio recolector en busca de errores:

bash
$
sudo journalctl -u nrdot-collector -f

Agregue el bloque sqlqueryreceiver dentro de la sección receivers: de la configuración del recolector de SQL Server, junto al bloque nrsqlserver existente:

receivers:
nrsqlserver:
...
sqlquery:
driver: sqlserver
# Approach 1: Use the `host`, `port`, `database`, `username`, and `password` fields to connect to your database. The receiver will construct the datasource URL for you.
# host: <YOUR_DB_HOST>
# port: <YOUR_DB_PORT>
# database: <YOUR_DATABASE_NAME>
# username: <YOUR_DB_USERNAME>
# password: <YOUR_DB_PASSWORD>
# Approach 2: Use the `datasource` field to provide a full connection string.
datasource: "sqlserver://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>?database=<YOUR_DATABASE_NAME>"
collection_interval: 30s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: sqlserver.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: sqlserver.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]

Establezca los siguientes parámetros para cada métrica:

Parámetro

Descripción

<YOUR_DB_HOST>

El nombre de host o la dirección IP del servidor. Por ejemplo,

10.12.0.4

<YOUR_DB_PORT>

El número de puerto del servidor. El valor predeterminado está establecido en

1433

<YOUR_DB_USERNAME>

Su nombre de usuario de SQL Server. Omita para la autenticación de dominio de Windows/GMSA. Por ejemplo

newrelic

<YOUR_DB_PASSWORD>

Su contraseña de SQL Server. Omita para la autenticación de dominio de Windows/GMSA. Por ejemplo

secret

<YOUR_DATABASE_NAME>

El nombre de su base de datos para usar como contexto de conexión inicial. Por ejemplo

master

collection_interval

Con qué frecuencia ejecutar las consultas y recopilar métricas. Por ejemplo,

30s

,

60s

<YOUR_CUSTOM_SQL>

La consulta SQL a ejecutar. Por ejemplo, SELECT SUM(pages_kb) / 1024 AS size_mb, type FROM sys.dm_os_memory_clerks GROUP BY type

Importante

Asegúrese de que sus consultas personalizadas no recopilen ni expongan PII o datos confidenciales.

<YOUR_METRIC_NAME>

El nombre de su métrica que se muestra en New Relic. Use el prefijo

sqlserver.

para mantener la coherencia. Por ejemplo

sqlserver.custom.wait_time_ms

<VALUE_COLUMN>

La columna del resultado de la consulta cuyo valor se convierte en el valor de la métrica. Por ejemplo

wait_time_ms

<VALUE_TYPE>

Tipo de datos de la columna de valor. Opciones:

int

,

double

. Por defecto es

int

si se omite. Por ejemplo

int

<DATA_TYPE>

Tipo de métrica OTLP. Use

gauge

para valores actuales/de instantánea. Use

sum

para contadores acumulativos. Por defecto es

gauge

si se omite. Por ejemplo

gauge

<UNIT>

Unidad de medida para el valor de la métrica. Utilizado como metadatos en New Relic. Por ejemplo

ms

,

By

,

s

,

%

,

1

<ATTRIBUTE_COLUMNS>

Columnas del resultado de la consulta que se convierten en etiquetas/dimensiones de métrica. Se utiliza para filtrar y facetar en NRQL. Por ejemplo

["wait_type", "database_name"]

Convención de nomenclatura

Los nombres de las métricas deben comenzar con sqlserver. para asociarse con la entidad correcta en New Relic. Las métricas con un prefijo diferente se ingerirán, pero no aparecerán bajo la entidad de la base de datos.

Síntesis de entidad

Agregue un procesador resource/add_host para establecer server.address y server.port en los mismos valores utilizados por el receptor de la base de datos. Sin esto, las métricas personalizadas no se vincularán a la entidad de la base de datos.

Agregue el procesador en la sección processors::

processors:
resource/add_host:
attributes:
- key: server.address
value: "<YOUR_DB_HOST>"
action: upsert
- key: server.port
value: "<YOUR_DB_PORT>"
action: upsert

Configuración del Pipeline

Agregue un pipeline metrics/custom en la sección service.pipelines: de la configuración, junto a los pipelines existentes:

service:
pipelines:
metrics/custom:
receivers: [sqlquery]
processors: [resource/add_host, batch]
exporters: [otlp]

Importante

Agregue resource/add_host antes de batch en la lista de procesadores.

NRQL para validar datos

Después de reiniciar el recolector, ejecute lo siguiente para confirmar que están llegando las métricas personalizadas:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'sqlserver.%'
SINCE 1 hour ago

Agregue el bloque sqlqueryreceiver dentro de la sección receivers: de mysql-config.yaml existente, junto al bloque nrmysql existente:

receivers:
nrmysql:
...
sql_query/mysql:
driver: mysql
# Approach 1: Use the `host`, `port`, `database`, `username`, and `password` fields to connect to your database. The receiver will construct the datasource string for you.
host: <YOUR_DB_HOST>
port: <YOUR_DB_PORT>
database: <YOUR_DATABASE_NAME>
username: <YOUR_DB_USERNAME>
password: <YOUR_DB_PASSWORD>
# Approach 2: Use the `datasource` field to provide a full connection string.
# datasource: "<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@tcp(<YOUR_DB_HOST>:<YOUR_DB_PORT>)/<YOUR_DATABASE_NAME>"
collection_interval: 60s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: mysql.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]

Establezca los siguientes parámetros para cada métrica:

Parámetro

Descripción

<YOUR_DB_HOST>

El nombre de host o la dirección IP de MySQL. Por ejemplo,

10.12.0.4

<YOUR_DB_PORT>

El número de puerto de MySQL. El valor predeterminado es

3306

<YOUR_DATABASE_NAME>

La base de datos a la cual conectarse. Por ejemplo

information_schema

<YOUR_DB_USERNAME>

Su nombre de usuario de monitoreo de MySQL. Por ejemplo

newrelic

<YOUR_DB_PASSWORD>

La contraseña de monitoreo de MySQL.

collection_interval

Con qué frecuencia ejecutar las consultas y recopilar métricas. Por ejemplo,

30s

,

60s

<YOUR_CUSTOM_SQL>

La consulta SQL a ejecutar.

Importante

Asegúrese de que sus consultas personalizadas no recopilen ni expongan PII o datos confidenciales.

<YOUR_METRIC_NAME>

El nombre de su métrica que se muestra en New Relic. Debe tener el prefijo

mysql.

por coherencia. Por ejemplo

mysql.custom.wait_time_ms

<VALUE_COLUMN>

La columna del resultado de la consulta cuyo valor se convierte en el valor de la métrica. Por ejemplo

wait_time_ms

<VALUE_TYPE>

Tipo de datos de la columna de valor. Opciones:

int

,

double

. Por defecto es

int

si se omite. Por ejemplo

int

<DATA_TYPE>

Tipo de métrica OTLP. Use

gauge

para valores actuales/de instantánea. Use

sum

para contadores acumulativos. Por defecto es

gauge

si se omite. Por ejemplo

gauge

<UNIT>

Unidad de medida para el valor de la métrica. Utilizado como metadatos en New Relic. Por ejemplo

ms

,

By

,

s

,

%

,

1

<ATTRIBUTE_COLUMNS>

Columnas del resultado de la consulta que se convierten en etiquetas/dimensiones de métrica. Se utiliza para filtrar y facetar en NRQL. Por ejemplo

["wait_type", "database_name"]

Importante

La cadena de conexión datasource de MySQL utiliza el formato <user>:<password>@tcp(<host>:<port>)/<dbname>. No reutilice aquí el formato de la cadena de conexión de otra base de datos.

Convención de nomenclatura

Los nombres de las métricas deben comenzar con mysql. para asociarse con la entidad correcta en New Relic. Las métricas con un prefijo diferente se ingerirán, pero no aparecerán bajo la entidad de la base de datos.

Configuración del Pipeline

Agregue un pipeline metrics/custom en la sección service.pipelines: de la configuración, junto al pipeline existente:

service:
pipelines:
metrics/mysql:
receivers: [nrmysql]
processors: [batch]
exporters: [otlp/newrelic]
metrics/custom:
receivers: [sql_query/mysql]
processors: [batch]
exporters: [otlp/newrelic]

NRQL para validar datos

Después de reiniciar el recolector, ejecute lo siguiente para confirmar que están llegando las métricas personalizadas:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'mysql.%'
SINCE 1 hour ago

Resolución de problemas [#troubleshooting-mysql]

ProblemaCausaArreglar
Error 1045: acceso denegado para el usuarioNombre de usuario/contraseña incorrectosVerifique las credenciales; utilice el enfoque de campos individuales en lugar de crear manualmente la cadena del origen de datos
Error 1146: la tabla no existe/error de sintaxis SQLEl SQL personalizado hace referencia a una tabla/columna que no existe en esta versión de MySQL/MariaDB, o utiliza una sintaxis no admitidaPruebe primero la consulta directamente contra la instancia con el mismo usuario antes de agregarla a la configuración del receptor.
Métricas que no están bajo la entidad de base de datosFalta el prefijo mysql. en el nombre de la métricaAsegúrese de que los nombres de las métricas comiencen con mysql.
Error de negociación de TLS/SSL al conectarse a un servidor que requiere TLSEl controlador no usa TLS de forma predeterminada a menos que se configureConfigure el parámetro tls en additional_params para que coincida con los requisitos de TLS del servidor.

Si nada de lo anterior resuelve el problema, revise los logs del propio recolector en busca de errores:

bash
$
sudo journalctl -u nrdot-collector -f

Agregue el bloque sqlqueryreceiver dentro de la sección receivers: de postgres-config.yaml existente, junto al bloque nrpostgresql existente:

receivers:
nrpostgresql:
...
sql_query/postgres:
driver: postgres
# Approach 1: Use the `host`, `port`, `database`, `username`, and `password` fields to connect to your database. The receiver will construct the datasource URL for you.
host: <YOUR_DB_HOST>
port: <YOUR_DB_PORT>
database: <YOUR_DATABASE_NAME>
username: <YOUR_DB_USERNAME>
password: <YOUR_DB_PASSWORD>
additional_params:
sslmode: disable
# Approach 2: Use the `datasource` field to provide a full connection string.
# datasource: "host=<YOUR_DB_HOST> port=<YOUR_DB_PORT> user=<YOUR_DB_USERNAME> password=<YOUR_DB_PASSWORD> dbname=<YOUR_DATABASE_NAME> sslmode=disable"
collection_interval: 60s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: postgresql.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]

Establezca los siguientes parámetros para cada métrica:

Parámetro

Descripción

<YOUR_DB_HOST>

Su nombre de host o dirección IP. Por ejemplo,

10.12.0.4

<YOUR_DB_PORT>

El número de puerto. El valor predeterminado es

5432

<YOUR_DATABASE_NAME>

El nombre de su base de datos para usar como contexto de conexión inicial. Por ejemplo

testdb

<YOUR_DB_USERNAME>

Su nombre de usuario de la base de datos PostgreSQL. Por ejemplo

newrelic

<YOUR_DB_PASSWORD>

Su contraseña de la base de datos PostgreSQL.

collection_interval

Con qué frecuencia ejecutar las consultas y recopilar métricas. Por ejemplo,

30s

,

60s

<YOUR_CUSTOM_SQL>

La consulta SQL a ejecutar.

Importante

Asegúrese de que sus consultas personalizadas no recopilen ni expongan PII o datos confidenciales.

<YOUR_METRIC_NAME>

El nombre de su métrica que se muestra en New Relic. Debe tener el prefijo

postgresql.

por coherencia. Por ejemplo

postgresql.custom.connections_by_state

<VALUE_COLUMN>

La columna del resultado de la consulta cuyo valor se convierte en el valor de la métrica. Por ejemplo

conn_count

<VALUE_TYPE>

Tipo de datos de la columna de valor. Opciones:

int

,

double

. Por defecto es

int

si se omite. Por ejemplo

int

<DATA_TYPE>

Tipo de métrica OTLP. Use

gauge

para valores actuales/de instantánea. Use

sum

para contadores acumulativos. Por defecto es

gauge

si se omite. Por ejemplo

gauge

<UNIT>

Unidad de medida para el valor de la métrica. Utilizado como metadatos en New Relic. Por ejemplo

ms

,

By

,

s

,

%

,

1

<ATTRIBUTE_COLUMNS>

Columnas del resultado de la consulta que se convierten en etiquetas/dimensiones de métrica. Se utiliza para filtrar y facetar en NRQL. Por ejemplo

["state"]

Importante

Si el servidor de PostgreSQL requiere TLS, configure sslmode en consecuencia en additional_params (enfoque 1) o en la cadena datasource (enfoque 2) —por ejemplo, sslmode: require. Cuando se omite, el controlador subyacente negocia SSL de forma predeterminada para las conexiones no locales, lo que falla en un servidor que no está configurado para ello.

Convención de nomenclatura

Los nombres de las métricas deben comenzar con postgresql. para asociarse con la entidad correcta en New Relic. Las métricas con un prefijo diferente se ingerirán, pero no aparecerán bajo la entidad de la base de datos.

Síntesis de entidad

nrpostgresql sintetiza su entidad de base de datos a partir de server.address y server.port. Agregue un procesador resource/add_host para marcar los mismos valores server.address/server.port que usa el receptor de la base de datos. Sin esto, las métricas personalizadas no se vincularán a la entidad de base de datos.

Agregue el procesador en la sección processors::

processors:
batch:
resource/add_host:
attributes:
- key: server.address
value: "<YOUR_DB_HOST>"
action: upsert
- key: server.port
value: "<YOUR_DB_PORT>"
action: upsert

Importante

Si su pipeline nrpostgresql ya tiene un procesador resource/* que establece server.address/server.port (por ejemplo, resource/postgresql), reutilice ese mismo procesador en el pipeline metrics/custom a continuación en lugar de duplicarlo —ambos receptores deben asignar valores idénticos para asociarse a la misma entidad.

Configuración del Pipeline

Agregue un pipeline metrics/custom en la sección service.pipelines: de la configuración, junto a los pipelines existentes:

service:
pipelines:
metrics/postgresql:
receivers: [nrpostgresql]
processors: [resource/add_host, batch]
exporters: [otlp/newrelic]
logs/postgresql:
receivers: [nrpostgresql]
processors: [resource/add_host, batch]
exporters: [otlp/newrelic]
metrics/custom:
receivers: [sql_query/postgres]
processors: [resource/add_host, batch]
exporters: [otlp/newrelic]

Importante

Agregue resource/add_host antes de batch en la lista de procesadores.

NRQL para validar datos

Después de reiniciar el recolector, ejecute lo siguiente para confirmar que están llegando las métricas personalizadas:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'postgresql.%'
SINCE 1 hour ago

Resolución de problemas [#troubleshooting-postgresql]

ProblemaCausaArreglar
pq: SSL is not enabled on the serversslmode no establecido, el controlador usó de forma predeterminada la negociación de SSLEstablezca sslmode: disable (o el modo que admita su servidor) en additional_params o en la cadena datasource
pq: password authentication failed for userNombre de usuario/contraseña incorrectos, o caracteres especiales no escapados en una cadena datasource sin procesarUse el Enfoque 1 (campos individuales) —el receptor escapa username/password para URL automáticamente— o escape manualmente los caracteres especiales en datasource
Métricas que no están bajo la entidad de base de datosFalta el prefijo postgresql. requerido en el nombre de la métrica, o server.address/server.port no están configurados o no coincidenAsegúrese de que los nombres de las métricas comiencen con postgresql. y agregue resource/add_host (o reutilice el procesador de recursos nrpostgresql existente) con los valores correctos de host/puerto

Si nada de lo anterior resuelve el problema, revise los logs del propio recolector en busca de errores:

bash
$
sudo journalctl -u nrdot-collector -f
Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.