본문 바로가기

Monitoring/R&D

rds_exporter API Call 비용 이슈(+ Customizing)

1. 배경

Amazon RDS 를 사용하게 되면 mysqld_exporter 를 통해 mysql 에 대한 정보를 가져올 수는 있으나, 

OS 정보 수집을 위해서는 rds_exporter 를 통해서 가져와야한다. 

 

RDS 의 Monitoring Enhanced 를 enable 시켰을 경우 rds_exporter 에서는 대략 인스턴스 당 400~500개의 메트릭을 수집하게 된다.

아주 deep 하게 보면 필요한 지표들도 있겠지만, 대부분은 비용을 소모하면서까지 수집할 필요가 없는 지표들이다.

 

 

2. 문제점

1) 쓸모 없는 metric

RDS Exporter 가 scrap 하는 지표들은 CloudWatch 에 쌓인 정보들을 scrap 하는 형태이고,

amazon manual 을 살펴보면 scrap 할 경우 지표 당 과금이라고 명시 되어있다.

 

즉, 사용하지않는 지표들을 scrap 하더라도 비용은 계속 소모된다는 것이다.

반대로, 꼭 필요한 정보만 scrap 한다면 cost 를 낮출 수 있다.

 

2) 중복 데이터 Scrap

CloudWatch 의 내부 flush 주기는 60초이다. 이 사항은 aws support potal 에서 문의를 해보았는데, fix 된 주기라고 한다.

그런데 rds_exporter 의 내부 scrap interval 은 10초로 하드코딩 되어있다.

 

즉, rds_exporter 가 10초마다 scrap 을 해와도 최소 60초동안은 같은 지표들을 scrap 해온다는 것이다.

쓸데 없이 최대 6번 만큼의 중복 지표를 수집해서 비용도 6배를 지불하고 있다는 것이다.

 

 

 

3. Customizing

1) 쓸모 없는 metric

살펴보니 20개 가량의 지표들만 있으면 RDS 에선 큰 이슈 없이 모니터링이 가능하다고 결론을 내렸다.

 

https://github.com/yanolja/rds_exporter/commit/6f4701753c102495f238cf8ff2535c586b5e9fc1

 

위 commit 내용들을 보면 적용 사항은 아래와 같다.

 

1. basic metric 은 아예 collector 에 등록하지않음.

2. enhanced 의 일부 metric 만 제외하고 주석처리

 

위와 같이 적용하니 실제로 수집되는 metric 은 400~500 개에서 인스턴스 당 22개 수준으로 떨어졌다.

 

2) Interval 수정

./enhanced/collector.go

 

* 원본 소스

 23 // Maximal and minimal metrics update interval.
 24 const (
 25     maxInterval = 10 * time.Second
 26     minInterval = 2 * time.Second
 27 )

 

* 수정 소스

 23 // Maximal and minimal metrics update interval.
 24 const (
 25     maxInterval = 60 * time.Second
 26     minInterval = 52 * time.Second
 27 )

위와 같이 적용하면 동일 지표를 scrap 하는 현상은 회피할 수 있을 것이다.

 

4. Conclusion

Amazon RDS 에서는 monitoring 지표를 제공해주지만, 매번 aws console 에 들어가서 monitoring 지표를 확인하기엔 이슈가 있다.

따라서 보통은 모니터링을 구축하게 되는데, rds_exporter 를 사용할 경우 위와 같은 문제들로 인해 추가적인 비용 지출이 생길 수 밖에 없다.

 

최대한 비용을 줄이기 위해서 정말 필요한 지표만 수집해서 사용을 하려면, 

위와 같은 customizing 내역을 정리하면 좋을 듯 하다.

 

추가적으로 CloudWatch 의 수집 주기는 60초로 고정된 것에 반해, rds_exporter 의 scrap interval 을 10초로 고정한 이유가 궁금하여 percona 에 문의 중이나 아직 답변은 없다.

(https://jira.percona.com/browse/PMM-5797)