Aperçu
Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !
Cette fonctionnalité est actuellement fournie dans le cadre d'un aperçu conformément à nos politiques de pré-sortie.
Le sqlqueryreceiver est un Récepteur OpenTelemetry Collector qui vous permet d’exécuter n’importe quelle requête SQL personnalisée sur votre base de données, et d’ingérer les résultats sous forme de métriques dans New Relic.
Utilisez ceci lorsque vous souhaitez monitorer des données non couvertes par les métriques nroracledbreceiver / nrsqlserverreceiver intégrées. Les métriques personnalisées collectées via sqlqueryreceiver apparaissent sous la même entité Oracle ou SQL Server dans New Relic que les données intégrées du Récepteur, à condition que host.name soit correctement configuré.
Prérequis
- L’utilisateur de base de données configuré dans la source de données doit avoir le privilège
SELECTsur toute vue ou table que vous avez l’intention d’interroger. - Le binaire du collecteur doit inclure le composant
sqlqueryreceiver.
Configuration
Ajoutez le bloc sqlqueryreceiver dans la section receivers: de votre oracle-config.yaml existant, à côté du bloc nroracledb existant :
receivers: nroracledb:
...
sqlquery/oracle: driver: oracle
# Approach 1: Use the `endpoint`, `username`, `password`, and `service` 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: doubleDéfinissez les paramètres suivants pour chaque métrique :
paramètres | Description |
|---|---|
| Votre nom d’hôte ou adresse IP. Par exemple,
|
| Votre numéro de port. La valeur par défaut est définie sur
|
| Votre nom d’utilisateur de base de données Oracle. Par exemple
|
| Le mot de passe de votre base de données Oracle. |
| Le nom de votre service Oracle. Par exemple
|
| À quelle fréquence exécuter les requêtes et collecter les métriques. Par exemple,
,
|
| La requête SQL à exécuter. ImportantAssurez-vous que vos requêtes personnalisées ne collectent, ni n’exposent de PII, ou de données sensibles. |
| L’affichage du nom de votre métrique dans New Relic. Utilisez le préfixe
par souci de cohérence. Par exemple
|
| La colonne du résultat de la requête dont la valeur devient la valeur de la métrique. Par exemple
|
| Type de données de la colonne de valeur. Options :
,
. Par défaut
si omis. Par exemple
|
| Type de métrique OTLP. Utilisez
pour les valeurs actuelles/instantanées. Utilisez
pour les compteurs cumulatifs. Par défaut
si omis. Par exemple
|
| Unité de mesure de la valeur de la métrique. Utilisé comme métadonnées dans New Relic. Par exemple
,
,
,
,
|
| Colonnes du résultat de la requête qui deviennent des étiquettes/dimensions de métrique. Utilisé pour filtrer et facetter dans NRQL. Par exemple
|
Important
Pour les utilisateurs de CDB Oracle (préfixe C##), encodez # en tant que %23 dans l’URL de la source de données. Par exemple : c##newrelic doit être c%23%23newrelic
Convention de nommage
Les noms de métriques doivent commencer par oracledb. pour être associés à l’entité correcte dans New Relic. Les métriques avec un préfixe différent seront ingérées mais n’apparaîtront pas sous l’entité de base de données.
Synthèse d’entité
Ajoutez un Processeur resource/add_host pour définir host.name sur la même valeur que celle utilisée par le Récepteur de base de données. Sans cela, les métriques personnalisées ne seront pas liées à l’entité de base de données.
Ajoutez le Processeur dans la section processors: :
processors: batch: resource/add_event_name: attributes: - key: host.address value: "<YOUR_DB_HOST>" action: upsert resource/add_host: attributes: - key: host.name value: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" action: upsertConfiguration du Pipeline
Ajoutez un pipeline metrics/custom dans la section service.pipelines: de la configuration, à côté des pipelines existants :
service: pipelines: metrics/oracledb: receivers: [nroracledb] processors: [resource/add_event_name, batch] exporters: [otlp/newrelic] logs/oracledb: receivers: [nroracledb] processors: [resource/add_event_name, batch] exporters: [otlp/newrelic]
metrics/custom: receivers: [sqlquery/oracle] processors: [resource/add_host, resource/add_event_name, batch] exporters: [otlp/newrelic]Important
Ajoutez resource/add_host avant batch dans la liste des processeurs.
NRQL pour valider les données
Après avoir redémarré le collecteur, exécutez ce qui suit pour confirmer que les métriques personnalisées arrivent :
SELECT uniques(metricName) FROM MetricWHERE otel.library.name LIKE '%sqlqueryreceiver%'AND metricName LIKE 'oracledb.%'SINCE 1 hour agoDépannage [#troubleshooting]
| Problème | Cause | Réparer |
|---|---|---|
ORA-00942: table or view does not exist | Privilège SELECT manquant pour l’utilisateur de base de données | Accordez SELECT ON <VIEW_NAME> à l’utilisateur |
missing port in address | # dans le nom d’utilisateur / mot de passe non encodé en URL | Remplacez # par %23 dans l’URL de la source de données |
| Aucune donnée dans New Relic | host.name non défini ou non concordant | Ajoutez le Processeur resource/add_host avec la valeur d’hôte correcte |
| Métriques ne figurant pas sous l’entité de base de données | Préfixe requis manquant dans le nom de métrique | Assurez-vous que les noms de métriques commencent par oracledb. pour la base de données Oracle ou sqlserver. pour SQL Server. |
Ajoutez le bloc sqlqueryreceiver dans la section receivers: de votre configuration de collecteur SQL Server, à côté du bloc nrsqlserver existant :
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>"]Définissez les paramètres suivants pour chaque métrique :
paramètres | Description |
|---|---|
| Le nom d’hôte ou l’adresse IP de votre serveur. Par exemple,
|
| Votre numéro de port de serveur. La valeur par défaut est définie sur
|
| Votre nom d’utilisateur SQL Server. Omettre pour l’authentification de domaine Windows / GMSA. Par exemple
|
| Votre mot de passe SQL Server. Omettre pour l’authentification de domaine Windows / GMSA. Par exemple
|
| Le nom de votre base de données à utiliser comme contexte de connexion initial. Par exemple
|
| À quelle fréquence exécuter les requêtes et collecter les métriques. Par exemple,
,
|
| La requête SQL à exécuter. Par exemple, ImportantAssurez-vous que vos requêtes personnalisées ne collectent, ni n’exposent de PII, ou de données sensibles. |
| L’affichage du nom de votre métrique dans New Relic. Utilisez le préfixe
par souci de cohérence. Par exemple
|
| La colonne du résultat de la requête dont la valeur devient la valeur de la métrique. Par exemple
|
| Type de données de la colonne de valeur. Options :
,
. Par défaut
si omis. Par exemple
|
| Type de métrique OTLP. Utilisez
pour les valeurs actuelles/instantanées. Utilisez
pour les compteurs cumulatifs. Par défaut
si omis. Par exemple
|
| Unité de mesure de la valeur de la métrique. Utilisé comme métadonnées dans New Relic. Par exemple
,
,
,
,
|
| Colonnes du résultat de la requête qui deviennent des étiquettes/dimensions de métrique. Utilisé pour filtrer et facetter dans NRQL. Par exemple
|
Convention de nommage
Les noms de métriques doivent commencer par sqlserver. pour être associés à l’entité correcte dans New Relic. Les métriques avec un préfixe différent seront ingérées mais n’apparaîtront pas sous l’entité de base de données.
Synthèse d’entité
Ajoutez un Processeur resource/add_host pour définir host.name sur la même valeur que celle utilisée par le Récepteur de base de données. Sans cela, les métriques personnalisées ne seront pas liées à l’entité de base de données.
Ajoutez le Processeur dans la section processors: :
processors: resource/add_host: attributes: - key: service.instance.id value: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" action: upsertConfiguration du Pipeline
Ajoutez un pipeline metrics/custom dans la section service.pipelines: de la configuration, à côté des pipelines existants :
service: pipelines: metrics/sqlquery: receivers: [sqlquery] processors: [resource/add_host, batch] exporters: [otlphttp]Important
Ajoutez resource/add_host avant batch dans la liste des processeurs.
NRQL pour valider les données
Après avoir redémarré le collecteur, exécutez ce qui suit pour confirmer que les métriques personnalisées arrivent :
SELECT uniques(metricName) FROM MetricWHERE otel.library.name LIKE '%sqlqueryreceiver%'AND metricName LIKE 'sqlserver.%'SINCE 1 hour ago