AWS RDS PostgreSQL 인스턴스용 NRDOT Collector를 사용하여 PostgreSQL 모니터링을 설정하십시오. RDS 환경에는 확장 및 파라미터 그룹에 대한 특정 고려 사항이 있습니다.
전제 조건
설치하기 전에 다음을 갖추고 있는지 확인하십시오:
PostgreSQL
14이상New Relic 라이센스 키 .
NRDOT Collector를 설치한 호스트와 RDS PostgreSQL 인스턴스 간의 네트워크 연결.
뉴렐릭 OTLP 엔드포인트 문서에 대한 네트워크 연결
RDS 마스터 사용자 크리덴셜.
지원되는 PostgreSQL 버전, 필수 권한 및 권장 서버 파라미터에 대한 자세한 내용은 호환성 및 전제 조건을 참조하십시오.
NRDOT Collector 설정
RDS 인스턴스에 연결할 수 있는 시스템에 NRDOT Collector를 설치하십시오.
데이터베이스 사용자 및 권한 설정
RDS PostgreSQL 인스턴스에 필요한 권한을 가진 모니터링 사용자를 생성하십시오.
모니터링 사용자 및 권한을 생성하려면:
마스터 사용자로 RDS 인스턴스에 연결하십시오:
bash$psql --host=<YOUR_RDS_ENDPOINT> --dbname=postgres --port=5432 --username=<YOUR_MASTER_USERNAME>모니터링 사용자를 생성하십시오:
CREATE USER <YOUR_DB_USERNAME> WITH LOGIN PASSWORD '<YOUR_DB_PASSWORD>';필요에 따라 모니터링 사용자 역할 멤버십을 부여하십시오:
PostgreSQL 15 이상을 사용하는 경우, 권한을 상속하도록 역할을 할당하십시오:
ALTER ROLE <YOUR_DB_USERNAME> INHERIT;팁
PostgreSQL 14를 사용하는 경우 모니터링 사용자가 기본적으로 권한을 상속하므로 이 단계를 건너뛸 수 있습니다.
모니터링하려는 모든 데이터베이스에 다음 스키마와 권한을 생성합니다:
CREATE SCHEMA IF NOT EXISTS otel;GRANT USAGE ON SCHEMA otel TO <YOUR_DB_USERNAME>;GRANT USAGE ON SCHEMA public TO <YOUR_DB_USERNAME>;GRANT SELECT ON ALL TABLES IN SCHEMA public TO <YOUR_DB_USERNAME>;GRANT pg_monitor TO <YOUR_DB_USERNAME>;CREATE EXTENSION IF NOT EXISTS pg_stat_statements;(선택 사항) 벡터 메트릭을 수집하려면 각 데이터베이스에
pgvector확장을 생성하십시오:CREATE EXTENSION IF NOT EXISTS vector;l1,hamming및jaccard거리 함수에는pgvector버전0.7.0이상이 필요합니다.(선택 사항) 연결 및 권한을 확인하려면 다음을 실행하십시오:
bash$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> --command '\conninfo'$psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_database LIMIT 1;" && echo "pg_stat_database OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_activity LIMIT 1;" && echo "pg_stat_activity OK">psql --username=<YOUR_DB_USERNAME> --host=<YOUR_RDS_ENDPOINT> --port=5432 --dbname=<YOUR_DATABASE_NAME> \>-c "SELECT * FROM pg_stat_statements LIMIT 1;" && echo "pg_stat_statements OK"각 명령이 오류 없이 완료되면 모니터링 사용자, 호스트 및 포트가 모두 올바른 것입니다.
NRDOT Collector구성
RDS PostgreSQL 특정 설정으로 NRDOT Collector를 구성하십시오.
이 설정은 nrpostgresql 수신기만 사용하여 필수적인 PostgreSQL 모니터링에 중점을 둡니다.
전체 설정
이 기준 설정은 필수 메트릭을 수집합니다. 전체 메트릭 카탈로그를 보려면 설정 참조를 참조하십시오.
이름이
postgresql-config.yaml인 설정 파일을 생성합니다:bash$sudo nano /etc/nrdot-collector/postgresql-config.yaml이전 단계에서 생성한
postgresql-config.yaml파일에 다음 설정을 추가하십시오.postgresql-config.yaml1receivers:2nrpostgresql:3endpoint: "mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com:5432"4username: "newrelic"5password: "YOUR_PASSWORD"6databases:7- YOUR_DATABASE_NAME8# top_query/query_sample scan pg_stat_statements/pg_stat_activity cluster-wide9# regardless of the databases list above; on RDS/Aurora, exclude reserved10# databases the monitoring user can never reach.11exclude_databases:12- rdsadmin13collection_interval: 15s14events:15db.server.top_query:16enabled: true17db.server.query_sample:18enabled: true19db.server.query_plan:20enabled: true21top_query_collection:22max_rows_per_query: 100023top_n_query: 20024collection_interval: 60s25allowed_comment_keys: [nr_service_guid]26query_sample_collection:27max_rows_per_query: 100028allowed_comment_keys: [nr_service_guid]29resource_attributes:30db.system.version:31enabled: true32# Metrics needed for the out-of-the-box dashboard but disabled by default:33# see "Available metrics" below for the full default-on/default-off breakdown.34metrics:35postgresql.database.locks:36enabled: true37postgresql.deadlocks:38enabled: true39postgresql.function.calls:40enabled: true41postgresql.query.conflicts:42enabled: true43postgresql.sequential_scans:44enabled: true45postgresql.temp.io:46enabled: true47postgresql.temp_files:48enabled: true49processors:50batch:51batch/metrics:52send_batch_size: 819253send_batch_max_size: 819254timeout: 10s55exporters:56otlp/newrelic:57endpoint: "https://otlp.nr-data.net:4318"58headers:59api-key: "YOUR_LICENSE_KEY"60compression: gzip61sending_queue:62enabled: true63sizer: bytes64queue_size: 100_000_00065num_consumers: 1066batch:67sizer: bytes68max_size: 1_000_00069min_size: 070flush_timeout: 5s71retry_on_failure:72enabled: true73initial_interval: 5s74max_interval: 30s75max_elapsed_time: 300s76service:77telemetry:78metrics:79level: none80pipelines:81metrics:82receivers: [nrpostgresql]83processors: [batch/metrics]84exporters: [otlp/newrelic]85logs:86receivers: [nrpostgresql]87processors: [batch]88exporters: [otlp/newrelic]구성 매개변수
다음 표에서는
nrpostgresql수신자에 대한 주요 설정 초기화에 대해 설명합니다.매개변수 설명 <YOUR_RDS_ENDPOINT>RDS 인스턴스 엔드포인트 호스트명을 입력하십시오. <YOUR_DB_PORT>PostgreSQL 데이터베이스 포트를 입력하십시오. <YOUR_DB_USERNAME>데이터베이스 사용자 이름을 입력하세요. <YOUR_DB_PASSWORD>데이터베이스 비밀번호를 입력하세요. <YOUR_DATABASE_NAME>모니터링할 데이터베이스의 이름을 입력합니다. databases통계를 수집할 데이터베이스 목록입니다. 기본값: [](모든 비템플릿 데이터베이스). 메트릭에만 적용됩니다. 쿼리 샘플 및 상위 쿼리는 이 목록을 무시하며 오직exclude_databases에 의해서만 필터링됩니다.exclude_databases통계, 쿼리 샘플 및 상위 쿼리에서 제외된 데이터베이스입니다. 기본값: []. 모니터링 사용자가 접근할 수 없는 관리형 서비스 내부 데이터베이스(rdsadmin등)에 이를 사용하십시오.<YOUR_NEWRELIC_OTLP_ENDPOINT>뉴렐릭 OTLP 엔드포인트를 입력하십시오. 자세한 내용은 뉴렐릭 OTLP 엔드포인트를 참조하십시오. <YOUR_NEWRELIC_LICENSE_KEY>뉴렐릭 라이선스 키를 입력하십시오. collection_interval메트릭 스크랩 간격을 입력하십시오. 기본값: 15s.
팁
당신은 또한 수:
- 여러 수신기 구성: 하나의 수집기에서 여러 PostgreSQL 인스턴스를 모니터하기 위해 사용합니다.
- PostgreSQL 데이터베이스를 APM과 연결: 애플리케이션 성능을 데이터베이스 작업과 연관시킵니다. 이를 통해 어떤 애플리케이션이 특정 데이터베이스 워크로드를 생성하는지 정확히 확인할 수 있습니다.
- 쓰기 문에 대한 쿼리 계획: 모니터링 사용자에게 쓰기 권한을 부여하지 않고 잠금 또는 쓰기 문에 대한 쿼리 계획을 수집합니다.
- 시크릿 관리 설정: 데이터베이스 자격 증명과 같은 민감한 정보를 안전하게 관리할 수 있습니다. 이는 설정 파일에 민감한 데이터를 하드코딩하는 것을 방지하여 모니터링 설정의 보안을 강화하는 데 도움이 됩니다.
NRDOT Collector 설정 유효성 검사
새
postgresql-config.yaml파일을 가리키도록 설정 경로를 업데이트하십시오:bash$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/postgresql-config.yaml"|' /etc/nrdot-collector/nrdot-collector.confNRDOT Collector 설정을 검증하여 형식이 올바르고 제대로 작동하는지 확인합니다:
bash$sudo /usr/bin/nrdot-collector validate --config=/etc/nrdot-collector/postgresql-config.yaml
NRDOT Collector를 다시 시작하십시오
수집기를 구성한 후 NRDOT Collector 서비스를 다시 시작하여 변경 사항을 적용합니다:
$sudo systemctl restart nrdot-collector수집기가 제대로 실행되고 있는지 확인하려면 서비스 상태를 확인하십시오:
$sudo systemctl status nrdot-collector팁
새 설정이 적용되도록 설정을 변경한 후에는 항상 NRDOT Collector를 다시 시작하십시오.
데이터 찾기 및 사용
쿼리 샘플 및 상위 쿼리는 로그 이벤트(event.name = 'db.server.query_sample' / 'db.server.top_query', db.system.name = 'postgresql')로 도착합니다. 메트릭은 postgresql.* 네임스페이스 아래에 도착합니다.
뉴렐릭에서 RDS PostgreSQL 데이터베이스 엔티티를 찾으려면 다음을 수행하십시오:
- https://one.newrelic.com > All Capabilities > Databases 으)로 이동합니다.
- Entity type 드롭다운 메뉴에서 PostgreSQL instance을(를) 선택한 다음 Apply을(를) 클릭합니다.
- 엔티티 목록에서 RDS PostgreSQL 데이터베이스를 선택하십시오.