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가지다.


오버뷰 대시보드


쿼리 목록 대시보드


개별 쿼리 클릭하면 뜨는 쿼리 상세 대시보드

Search