- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
이 가이드는 애플리케이션 다이노스에 Datadog 헤로쿠 빌드팩이 설정된 것으로 간주합니다.
Datadog 데이터베이스 모니터링을 사용하면 한 곳에서 모든 데이터베이스의 쿼리 메트릭과 실행 계획을 확인할 수 있습니다. 이 가이드는 헤로쿠 Postgres 관리 데이터베이스를 위해 데이터베이스 모니터링을 설정하는 방법을 다룹니다.
참고: 표준 및 프리미엄 플랜의 데이터베이스에서만 통합에서 사용되는 메트릭을 게시합니다. 데이터베이스 모니터링의 일부 가능은 하비 플랜에서 Postgres 인스턴스를 사용하는 경우 사용할 수 없습니다.
먼저, 데이터베이스에 datadog
사용자를 생성합니다.
# 애플리케이션의 루트 디렉터리에 있는지 확인합니다.
heroku pg:credentials:create --name datadog
# 새로운 자격 증명을 애플리케이션에 연결합니다.
heroku addons:attach <database-name> --credential datadog
애플리케이션에 새로운 자격 증명을 연결하면 연결 URL로 애플리케이션에 새로운 환경 변수를 생성할 수 있습니다. 나중에 사용할 것이므로 환경 변수를 기록해 두세요.
기본 자격 증명을 사용해 Postgres 데이터베이스에 로그인하여 datadog
자격 증명에 올바른 권한을 제공합니다.
heroku pg:psql
psql 터미널에 있는 경우 다음 스키마를 생성합니다.
CREATE SCHEMA datadog;
GRANT USAGE ON SCHEMA datadog TO datadog;
GRANT USAGE ON SCHEMA public TO datadog;
GRANT pg_monitor TO datadog;
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
데이터베이스에서 다음 함수를 생성합니다.
CREATE OR REPLACE FUNCTION datadog.explain_statement(
l_query TEXT,
OUT explain JSON
)
RETURNS SETOF JSON AS
$$
DECLARE
curs REFCURSOR;
plan JSON;
BEGIN
OPEN curs FOR EXECUTE pg_catalog.concat('EXPLAIN (FORMAT JSON) ', l_query);
FETCH curs INTO plan;
CLOSE curs;
RETURN QUERY SELECT plan;
END;
$$
LANGUAGE 'plpgsql'
RETURNS NULL ON NULL INPUT
SECURITY DEFINER;
마지막으로, Datadog 에이전트를 설정하여 새로운 자격 증명으로 Postgres 점검을 활성화합니다.
# Ensure that you are in the root directory of your application
# Create the folder for the integrations configuration in your application code
mkdir -p datadog/conf.d/
다음 콘텐츠를 포함하는 postgres.yaml
설정 파일을 생성합니다. 사전 실행 스크립트의 일부로 실행되므로 해당 콘텐츠를 자격 증명과 교체하지 마십시오.
init_config:
instances:
- dbm: true
host: <YOUR HOSTNAME>
port: <YOUR PORT>
username: <YOUR USERNAME>
password: <YOUR PASSWORD>
dbname: <YOUR DBNAME>
ssl: True
datadog
자격 증명이 애플리케이션에 연결되어 있는 경우 생성된 환경 변수를 사용합니다. 아래 예시에서 이 값은 HEROKU_POSTGRESQL_PINK_URL
로 간주됩니다. 다음을 사전 실행 스크립트를 추가해 Datadog 에이전트 시작 전 해당 값을 교체합니다.
#!/usr/bin/env bash
# Update the Postgres configuration from above using the Heroku application environment variable
if [ -n "$HEROKU_POSTGRESQL_PINK_URL" ]; then
POSTGREGEX='^postgres://([^:]+):([^@]+)@([^:]+):([^/]+)/(.*)$'
if [[ $HEROKU_POSTGRESQL_PINK_URL =~ $POSTGREGEX ]]; then
sed -i "s/<YOUR HOSTNAME>/${BASH_REMATCH[3]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml"
sed -i "s/<YOUR USERNAME>/${BASH_REMATCH[1]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml"
sed -i "s/<YOUR PASSWORD>/${BASH_REMATCH[2]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml"
sed -i "s/<YOUR PORT>/${BASH_REMATCH[4]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml"
sed -i "s/<YOUR DBNAME>/${BASH_REMATCH[5]}/" "$DD_CONF_DIR/conf.d/postgres.d/conf.yaml"
fi
fi
헤로쿠에 배포:
# Deploy to Heroku
git add .
git commit -m "Enable postgres integration"
git push heroku main