sqlqueryreceiver은(는) 데이터베이스에 대해 커스텀 SQL 쿼리를 실행하고 그 결과를 메트릭으로 뉴렐릭에 수집할 수 있도록 하는 OpenTelemetry Collector 수신자입니다.
내장된 nroracledbreceiver / nrsqlserverreceiver 메트릭에 포함되지 않은 데이터를 모니터할 때 이를 사용하십시오. host.name이(가) 올바르게 구성된 경우, sqlqueryreceiver을(를) 통해 수집된 커스텀 지표는 뉴렐릭에서 내장 수신자 데이터와 동일한 오라클 또는 SQL Server 엔티티 아래에 표시됩니다.
전제 조건
- 데이터소스에 설정된 데이터베이스 사용자는 쿼리하려는 모든 뷰 또는 테이블에 대해
SELECT권한을 가져야 합니다. - 수집기 바이너리에는
sqlqueryreceiver구성 요소가 포함되어야 합니다.
구성
기존 nroracledb 블록과 함께 기존 oracle-config.yaml의 receivers: 섹션 내에 sqlqueryreceiver 블록을 추가해 주십시오:
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: double각 메트릭에 대해 다음 파라미터를 설정하십시오:
매개변수 | 설명 |
|---|---|
| 호스트명 또는 IP 주소입니다. 예를 들어,
|
| 포트 번호입니다. 기본값은 다음으로 설정되어 있습니다
|
| 오라클 데이터베이스 사용자 이름입니다. 예를 들어
|
| 오라클 데이터베이스 비밀번호입니다. |
| 오라클 서비스 이름. 예를 들어
|
| 쿼리를 실행하고 메트릭을 수집하는 빈도입니다. 예:
,
|
| 실행할 SQL 쿼리. 중요사용자 지정 쿼리가 PII 또는 민감한 데이터를 수집하거나 노출하지 않도록 하십시오. |
| 뉴렐릭에 표시될 메트릭 이름. 일관성을 위해
접두사를 사용하십시오. 예를 들어
|
| 값이 메트릭 값이 되는 쿼리 결과의 열입니다. 예를 들어
|
| 값 열의 데이터 유형입니다. 옵션:
,
. 생략 시
로 기본 설정됩니다. 예를 들어
|
| OTLP 메트릭 유형입니다. 현재/스냅샷 값에
을(를) 사용하십시오. 누적 카운터에
을(를) 사용하십시오. 생략할 경우
(으)로 기본 설정됩니다. 예를 들어
|
| 메트릭 값의 측정 단위입니다. 뉴렐릭에서 메타데이터로 사용됩니다. 예를 들어
,
,
,
,
|
| 메트릭 레이블/차원이 되는 쿼리 결과의 열입니다. NRQL에서 필터링 및 패싯하는 데 사용됩니다. 예를 들어
|
중요
오라클 CDB 사용자(C## 접두사)의 경우 데이터소스 URL에서 #을(를) %23 (으)로 인코딩해 주십시오. 예: c##newrelic은(는) 다음과 같아야 합니다. c%23%23newrelic
명명 규칙
뉴렐릭의 올바른 엔티티와 연결되려면 메트릭 이름이 oracledb.로 시작해야 합니다. 다른 접두사가 있는 메트릭은 수집되지만 데이터베이스 엔티티 아래에 표시되지 않습니다.
엔티티 합성
데이터베이스 수신기가 사용하는 것과 동일한 값으로 host.name을(를) 설정하려면 resource/add_host 프로세서를 추가하십시오. 이것이 없으면 커스텀 지표가 데이터베이스 엔티티에 연결되지 않습니다.
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: upsertPipeline 설정
기존 파이프라인과 함께 구성의 service.pipelines: 섹션에 metrics/custom 파이프라인을 추가하십시오:
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]중요
프로세서 목록에서 batch 앞에 resource/add_host을(를) 추가합니다.
데이터를 검증하기 위한 NRQL
수집기를 다시 시작한 후 다음을 실행하여 커스텀 지표가 수신되는지 확인하십시오:
SELECT uniques(metricName) FROM MetricWHERE otel.library.name LIKE '%sqlqueryreceiver%'AND metricName LIKE 'oracledb.%'SINCE 1 hour ago문제점 해결 [#troubleshooting]
| 문제 | 원인 | 고치다 |
|---|---|---|
ORA-00942: table or view does not exist | 데이터베이스 사용자의 SELECT 권한 누락 | 사용자에게 SELECT ON <VIEW_NAME>을(를) 부여하십시오 |
missing port in address | # 사용자 이름/비밀번호가 URL 인코딩되지 않음 | 데이터 소스 URL에서 #를 %23로 변경하십시오 |
| 뉴렐릭에 데이터 없음 | host.name 설정되지 않았거나 일치하지 않음 | 올바른 호스트 값으로 resource/add_host 프로세서를 추가하십시오 |
| 데이터베이스 엔티티 아래에 없는 메트릭 | 메트릭 이름에 필수 접두사 누락 | 오라클 데이터베이스의 경우 메트릭 이름이 oracledb. (으)로 시작하고 SQL Server의 경우 sqlserver. (으)로 시작하는지 확인하십시오. |
SQL Server 수집기 설정의 receivers: 섹션 내에 기존 nrsqlserver 블록과 함께 sqlqueryreceiver 블록을 추가하십시오:
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>"]각 메트릭에 대해 다음 파라미터를 설정하십시오:
매개변수 | 설명 |
|---|---|
| 서버 호스트명 또는 IP 주소입니다. 예를 들어,
|
| 서버 포트 번호입니다. 기본값은 다음으로 설정되어 있습니다
|
| SQL Server 사용자 이름입니다. Windows 도메인/GMSA 인증의 경우 생략하십시오. 예를 들어
|
| SQL Server 비밀번호입니다. Windows 도메인/GMSA 인증의 경우 생략합니다. 예를 들어
|
| 초기 연결 컨텍스트로 사용할 데이터베이스 이름입니다. 예를 들어
|
| 쿼리를 실행하고 메트릭을 수집하는 빈도입니다. 예:
,
|
| 실행할 SQL 쿼리입니다. 예를 들어, 중요사용자 지정 쿼리가 PII 또는 민감한 데이터를 수집하거나 노출하지 않도록 하십시오. |
| 뉴렐릭에 표시될 메트릭 이름. 일관성을 위해
접두사를 사용하십시오. 예를 들어
|
| 값이 메트릭 값이 되는 쿼리 결과의 열입니다. 예를 들어
|
| 값 열의 데이터 유형입니다. 옵션:
,
. 생략 시
로 기본 설정됩니다. 예를 들어
|
| OTLP 메트릭 유형입니다. 현재/스냅샷 값에
을(를) 사용하십시오. 누적 카운터에
을(를) 사용하십시오. 생략할 경우
(으)로 기본 설정됩니다. 예를 들어
|
| 메트릭 값의 측정 단위입니다. 뉴렐릭에서 메타데이터로 사용됩니다. 예를 들어
,
,
,
,
|
| 메트릭 레이블/차원이 되는 쿼리 결과의 열입니다. NRQL에서 필터링 및 패싯하는 데 사용됩니다. 예를 들어
|
명명 규칙
뉴렐릭의 올바른 엔티티와 연결되려면 메트릭 이름이 sqlserver.로 시작해야 합니다. 다른 접두사가 있는 메트릭은 수집되지만 데이터베이스 엔티티 아래에 표시되지 않습니다.
엔티티 합성
데이터베이스 수신기가 사용하는 것과 동일한 값으로 host.name을(를) 설정하려면 resource/add_host 프로세서를 추가하십시오. 이것이 없으면 커스텀 지표가 데이터베이스 엔티티에 연결되지 않습니다.
processors: 섹션에 프로세서를 추가하십시오:
processors: resource/add_host: attributes: - key: service.instance.id value: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" action: upsertPipeline 설정
기존 파이프라인과 함께 구성의 service.pipelines: 섹션에 metrics/custom 파이프라인을 추가하십시오:
service: pipelines: metrics/sqlquery: receivers: [sqlquery] processors: [resource/add_host, batch] exporters: [otlphttp]중요
프로세서 목록에서 batch 앞에 resource/add_host을(를) 추가합니다.
데이터를 검증하기 위한 NRQL
수집기를 다시 시작한 후 다음을 실행하여 커스텀 지표가 수신되는지 확인하십시오:
SELECT uniques(metricName) FROM MetricWHERE otel.library.name LIKE '%sqlqueryreceiver%'AND metricName LIKE 'sqlserver.%'SINCE 1 hour ago