HyperDX: PostgreSQL 대시보드 깎기 (AWS RDS)
Datadog처럼 돈받고 파는 APM들의 장점은, DB를 포함한 이런저런 시스템들에 대한 관측성을 제공한다는 것이다. 큰 공수를 들이지 않아도 에이전트만 붙이면 바로 보인다.
DB의 리소스 사용 상태, slow query 목록 등을 한눈에 볼 수 있다.
clickstack hyperdx에 PostgreSQL 대시보드를 내재화하는 방법을 정리한다.
AWS RDS PostgreSQL 기준이다.
하지만 Cloudwatch metric 요소를 제외한 부분은 Self-Hosted나 다른 플랫폼도 호환될 것이다.
데이터 원천
일단 대시보드에 표시할 데이터를 어떻게 가져오는지부터 알아야한다.
PostgreSQL 자체 데이터만으로 가져올 수 있는 것이 있고, AWS Cloudwatch에서 가져올 수 있는 것이 있다.
예를 들어 CPU 사용량 같은 지표는 호스트에서만 관측할 수 있는 지표라서 AWS Cloudwatch의 metric API를 통해서만 가져올 수 있다. 그리고 Cloudwatch metric은 API 비용이 약간 발생한다.
계정 설정
PostgreSQL에서 데이터를 가져오려면, pg_monitor 권한을 가진 계정이 필요하다.
관측할 DB마다 별도 계정을 하나씩 다 들어가서 만들어준다.
CREATE USER otel_monitor WITH PASSWORD '패스워드 알아서';
GRANT CONNECT ON DATABASE chainshift TO otel_monitor;
GRANT pg_monitor TO otel_monitor;

그리고 Cloudwatch용 IAM 계정도 만들어서 액세스키를 받아둔다.

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:GetMetricData",
"cloudwatch:ListMetrics"
],
"Effect": "Allow",
"Resource": "*",
"Sid": "CloudWatchMetricsRead"
}
]
}
권한은 이것만 있으면 된다.
Otel Collector 구성
그냥 코드만 받아서 실행해도 된다. compose로 말아놓은 것이 있다.
https://github.com/myyrakle/infrastructures/tree/master/dashboards/hyperdx/rds-postgresql
dev와 prod DB가 있다는 가정 하에 만들어져있는데, 프로필이 더 필요하면 복붙해서 비슷하게 추가하면 된다.

cloudwatch metric API는 찌르는만큼 비용이 나가기 때문에, 5분 주기로 적당히 찌르도록 해놨다.
더 촘촘하게 쌓기를 원한다면 커스텀하면 된다.

대시보드
JSON으로 말아놓은 것이 있으니까, import만 하면 바로 쓸 수 있다.
https://github.com/myyrakle/infrastructures/tree/master/dashboards/hyperdx/rds-postgresql/templates
파일들은 여기있다. 총 3가지다.


오버뷰 대시보드
쿼리 목록 대시보드
개별 쿼리 클릭하면 뜨는 쿼리 상세 대시보드