- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Supported OS
Postgres 통합은 Postgres 데이터베이스에 대한 상태 및 성능 메트릭을 거의 실시간으로 제공합니다. 제공된 대시보드를 사용하여 이러한 메트릭을 시각화하고 모니터를 만들어 팀에 PostgreSQL 상태를 알릴 수 있습니다.
데이터베이스 모니터링(DBM)을 활성화하면 쿼리 성능 및 데이터베이스 상태에 대한 향상된 인사이트를 얻을 수 있습니다. 표준 통합, Datadog DBM은 쿼리 수준 메트릭, 실시간 및 과거 쿼리 스냅샷, 대기 이벤트 분석, 데이터베이스 로드, 쿼리 설명 계획, 차단 쿼리 인사이트 등을 제공합니다.
Postgres 버전 9.6-16이 지원됩니다.
PostgreSQL 점검은 에이전트와 함께 패키지화되어 있습니다. PostgreSQL 메트릭 및 로그를 수집하려면 에이전트을 설치하세요.
참고: PostgreSQL용 데이터베이스 모니터링을 설치하려면 데이터베이스 모니터링 설명서에서 호스팅 솔루션을 선택하여 지침을 확인하세요.
표준 통합을 단독으로 설치하는 경우에만 이 가이드의 다음 단계를 진행하세요.
표준 PostgreSQL 통합을 시작하려면 PostgreSQL 서버에 대한 적절한 액세스 권한이 있는 읽기 전용 datadog
사용자를 만드세요. PostgreSQL 데이터베이스에서 psql
을 시작합니다.
PostgreSQL 버전 10 이상의 경우 실행합니다.
create user datadog with password '<PASSWORD>';
grant pg_monitor to datadog;
grant SELECT ON pg_stat_database to datadog;
이전 PostgreSQL 버전의 경우 다음을 실행합니다.
create user datadog with password '<PASSWORD>';
grant SELECT ON pg_stat_database to datadog;
권한이 올바른지 확인하려면 다음 명령을 실행합니다.
psql -h localhost -U datadog postgres -c \
"select * from pg_stat_database LIMIT(1);" \
&& echo -e "\e[0;32mPostgres connection - OK\e[0m" \
|| echo -e "\e[0;31mCannot connect to Postgres\e[0m"
비밀번호를 입력하라는 메시지가 표시되면 첫 번째 명령에 사용한 비밀번호를 입력합니다.
참고: PostgreSQL 버전 9.6 이하의 경우 다음을 실행하고 SECURITY DEFINER
를 생성하여 pg_stat_activity
에서 읽습니다.
CREATE FUNCTION pg_stat_activity() RETURNS SETOF pg_catalog.pg_stat_activity AS
$$ SELECT * from pg_catalog.pg_stat_activity; $$
LANGUAGE sql VOLATILE SECURITY DEFINER;
CREATE VIEW pg_stat_activity_dd AS SELECT * FROM pg_stat_activity();
grant SELECT ON pg_stat_activity_dd to datadog;
참고: 추가 테이블을 쿼리해야 하는 커스텀 메트릭을 생성하는 경우 해당 테이블에 대한 SELECT
권한을 datadog
사용자에게 부여해야 할 수 있습니다. 예: grant SELECT on <TABLE_NAME> to datadog;
. 자세한 내용은 FAQ 섹션을 참조하세요.
호스트에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
postgres.d/conf.yaml
파일을 편집하여 host
/port
를 가리키도록 하고 마스터를 모니터로 설정합니다. 사용 가능한 모든 설정 옵션은 샘플 postgres.d/conf.yaml을 참조하세요.
init_config:
instances:
## @param host - string - required
## The hostname to connect to.
## NOTE: Even if the server name is "localhost", the agent connects to
## PostgreSQL using TCP/IP, unless you also provide a value for the sock key.
#
- host: localhost
## @param port - integer - optional - default: 5432
## The port to use when connecting to PostgreSQL.
#
# port: 5432
## @param username - string - required
## The Datadog username created to connect to PostgreSQL.
#
username: datadog
## @param password - string - optional
## The password associated with the Datadog user.
#
# password: <PASSWORD>
## @param dbname - string - optional - default: postgres
## The name of the PostgresSQL database to monitor.
## Note: If omitted, the default system Postgres database is queried.
#
# dbname: <DBNAME>
# @param disable_generic_tags - boolean - optional - default: false
# The integration will stop sending server tag as is redundant with host tag
disable_generic_tags: true
관계 메트릭을 수집하려면, 에이전트를 모든 논리적 데이터베이스에 연결합니다. 이러한 데이터베이스는 자동으로 검색되거나 설정에서 각 데이터베이스를 명시적으로 나열할 수 있습니다.
instances:
- host: localhost
# port: 5432
database_autodiscovery:
enabled: true
# Optionally, set the include field to specify
# a set of databases you are interested in discovering
include:
- mydb.*
- example.*
relations:
- relation_regex: .*
instances:
- host: example-service-primary.example-host.com
# port: 5432
username: datadog
password: '<PASSWORD>'
relations:
- relation_name: products
- relation_name: external_seller_products
- host: example-service-replica-1.example-host.com
# port: 5432
username: datadog
password: '<PASSWORD>'
relations:
- relation_regex: inventory_.*
relkind:
- r
- i
- host: example-service-replica-2.example-host.com
# port: 5432
username: datadog
password: '<PASSWORD>'
relations:
- relation_regex: .*
Datadog 애플리케이션 성능 모니터링(APM)은 분산 시스템에서 트레이스를 볼 수 있도록 Postgres와 통합됩니다. 트레이스 수집은 Datadog 에이전트 v6+에서 기본적으로 활성화됩니다. 트레이스 수집을 시작하려면 다음을 수행합니다.
에이전트 버전 > 6.0에서 사용 가능
PostgreSQL 기본 로깅은 stderr
입니다. 로그에는 자세한 정보가 포함되어 있지 않습니다. 로그 줄 접두어에 지정된 추가 세부 정보를 사용해 파일에 로그인하는 것이 좋습니다. 자세한 내용은 오류 보고 및 로깅에 대한 PostgreSQL 설명서를 참조하세요.
/etc/postgresql/<VERSION>/main/postgresql.conf
파일에서 로깅을 설정합니다. 문 출력과 같은 정기적인 로그 결과를 보려면 로그 섹션에서 다음 파라미터의 주석 처리를 제거합니다.
logging_collector = on
log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA
log_filename = 'pg.log' # log file name, can include pattern
log_statement = 'all' # log all queries
#log_duration = on
log_line_prefix= '%m [%p] %d %a %u %h %c '
log_file_mode = 0644
## For Windows
#log_destination = 'eventlog'
자세한 기간 메트릭을 수집하여 Datadog 인터페이스에서 검색할 수 있도록 하려면 문 자체를 사용해 인라인으로 설정해야 합니다. 위와 권장 설정의 차이점은 아래를 참조하세요. 참고: log_statement
및 log_duration
옵션은 모두 주석 처리되어 있습니다. 이 주제에 대한 자세한 내용은 같은 줄에 문/기간 로깅하기를 참조하세요.
이 설정은 모든 문을 기록합니다. 기간에 따라 출력을 줄이려면 log_min_duration_statement
값을 원하는 최소 기간(밀리초)으로 설정합니다.
log_min_duration_statement = 0 # -1 is disabled, 0 logs all statements
# and their durations, > 0 logs only
# statements running at least this number
# of milliseconds
#log_statement = 'all'
#log_duration = on
로그 수집은 Datadog 에이전트에서 기본적으로 비활성화되어 있습니다. datadog.yaml
파일에서 활성화합니다.
logs_enabled: true
이 설정 블록을 postgres.d/conf.yaml
파일에 추가하고 편집하여 PostgreSQL 로그 수집을 시작하세요.
logs:
- type: file
path: "<LOG_FILE_PATH>"
source: postgresql
service: "<SERVICE_NAME>"
#To handle multi line that starts with yyyy-mm-dd use the following pattern
#log_processing_rules:
# - type: multi_line
# pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
# name: new_log_start_with_date
service
및 path
파라미터 값을 변경하여 환경을 설정합니다. 사용 가능한 모든 설정 옵션은 샘플 postgres.d/conf.yaml을 참조하세요.
컨테이너에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
애플리케이션 컨테이너에 자동탐지 통합 템플릿을 Docker 레이블로 설정하세요.
LABEL "com.datadoghq.ad.check_names"='["postgres"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"host":"%%host%%", "port":5432,"username":"datadog","password":"<PASSWORD>"}]'
기본적으로 로그 수집은 Datadog 에이전트에서 비활성화되어 있습니다. 활성화하려면 Docker 로그 수집을 참고하세요.
그런 다음 Docker 레이블로 로그 통합을 설정하세요.
LABEL "com.datadoghq.ad.logs"='[{"source":"postgresql","service":"postgresql"}]'
컨테이너화된 앱용 APM은 Agent v6+에서 지원되지만 트레이스 수집을 시작하려면 추가 구성이 필요합니다.
Agent 컨테이너의 필수 환경 변수:
파라미터 | 값 |
---|---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | true |
<DD_APM_NON_LOCAL_TRAFFIC> | true |
사용 가능한 환경 변수 및 구성의 전체 목록은 Docker 애플리케이션 추적을 참조하세요.
그런 다음 [Postgres에 요청하는 애플리케이션 컨테이너]를 계측하고3 DD_AGENT_HOST
를 에이전트 컨테이너의 이름으로 설정합니다.
쿠버네티스에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
자동탐지 통합 템플릿을 애플리케이션 컨테이너의 포드 주석으로 설정합니다. 이외 템플릿은 또한 파일, configmap, key-value store로 설정할 수 있습니다.
주석 v1(Datadog 에이전트 v7.36 이하용)
apiVersion: v1
kind: Pod
metadata:
name: postgres
annotations:
ad.datadoghq.com/postgresql.check_names: '["postgres"]'
ad.datadoghq.com/postgresql.init_configs: '[{}]'
ad.datadoghq.com/postgresql.instances: |
[
{
"host": "%%host%%",
"port":"5432",
"username":"datadog",
"password":"<PASSWORD>"
}
]
spec:
containers:
- name: postgres
주석 v2(Datadog 에이전트 v7.36 이상용)
apiVersion: v1
kind: Pod
metadata:
name: postgres
annotations:
ad.datadoghq.com/postgres.checks: |
{
"postgres": {
"init_config": {},
"instances": [
{
"host": "%%host%%",
"port":"5432",
"username":"datadog",
"password":"<PASSWORD>"
}
]
}
}
spec:
containers:
- name: postgres
Datadog 에이전트에서 기본적으로 로그 수집이 비활성화되어 있습니다. 활성화하려면 [쿠버네티스 로그 수집]을 확인하세요.
그런 다음 로그 통합을 포드 주석으로 설정합니다. 또한 파일, configmap, 또는 key-value store로 설정할 수 있습니다.
주석 v1/v2
apiVersion: v1
kind: Pod
metadata:
name: postgres
annotations:
ad.datadoghq.com/postgres.logs: '[{"source":"postgresql","service":"<SERVICE_NAME>"}]'
spec:
containers:
- name: postgres
컨테이너화된 앱용 APM은 Agent v6+를 실행하는 호스트에서 지원되지만 트레이스 수집을 시작하려면 추가 구성이 필요합니다.
Agent 컨테이너의 필수 환경 변수:
파라미터 | 값 |
---|---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | true |
<DD_APM_NON_LOCAL_TRAFFIC> | true |
사용 가능한 환경 변수 및 구성의 전체 목록은 Kubernetes 애플리케이션 추적 및 Kubernetes DaemonSet 설정을 참조하세요.
그런 다음 Postgres에 요청하는 애플리케이션 컨테이너를 계측합니다.
ECS에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
애플리케이션 컨테이너에 자동탐지 통합 템플릿을 Docker 레이블로 설정하세요.
{
"containerDefinitions": [{
"name": "postgres",
"image": "postgres:latest",
"dockerLabels": {
"com.datadoghq.ad.check_names": "[\"postgres\"]",
"com.datadoghq.ad.init_configs": "[{}]",
"com.datadoghq.ad.instances": "[{\"host\":\"%%host%%\", \"port\":5432,\"username\":\"datadog\",\"password\":\"<PASSWORD>\"}]"
}
}]
}
기본적으로 로그 수집은 Datadog 에이전트에서 비활성화되어 있습니다. 활성화하려면 ECS 로그 수집을 참조하세요.
그런 다음 Docker 레이블로 로그 통합을 설정하세요.
{
"containerDefinitions": [{
"name": "postgres",
"image": "postgres:latest",
"dockerLabels": {
"com.datadoghq.ad.logs": "[{\"source\":\"postgresql\",\"service\":\"postgresql\"}]"
}
}]
}
컨테이너화된 앱용 APM은 Agent v6+에서 지원되지만 트레이스 수집을 시작하려면 추가 구성이 필요합니다.
Agent 컨테이너의 필수 환경 변수:
파라미터 | 값 |
---|---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | true |
<DD_APM_NON_LOCAL_TRAFFIC> | true |
사용 가능한 환경 변수 및 구성의 전체 목록은 Docker 애플리케이션 추적을 참조하세요.
그런 다음 Postgres에 요청하는 애플리케이션 컨테이너 을 계측하고 [DD_AGENT_HOST
]를 EC2 비공개 IP 주소로 설정합니다.
에이전트의 상태 하위 명령을 실행하고 점검 섹션에서 postgres
를 찾습니다.
아래 나열된 메트릭 중 일부는 추가 설정이 필요합니다. 설정 가능한 모든 옵션은 샘플 postgres.d/conf.yaml을 참조하세요.
에이전트 버전 7.32.0
이상의 경우, 데이터베이스 모니터링를 활성화한 경우 postgresql.connections
메트릭에 state
, app
, db
및 user
태그가 지정됩니다.
PostgreSQL 점검에는 이벤트가 포함되어 있지 않습니다.
도움이 필요하신가요? Datadog 지원팀에 문의하세요.
기타 유용한 문서, 링크 및 기사: