Dolphie?
최근에 Real-Time DB 모니터링 오픈소스를 하나 발견하게 되어 간단한 이야기를 하고자 한다.
먼저 혹할만한 사진을 하나 첨부하고..

위의 그림은 실제 서비스에 사용되는 DB 서버의 real-time 대시보드이다.
DB 인스턴스별로 QPS(SELECT,DML), Lock, Thread 정보 등을 실시간으로 확인할 수 있어서 현재 시점의 DB 서버 리소스 사용량이 궁금할 때 바로 확인해볼 수 있다.
MySQL DBA라면 다 아는 사람일테지만 lefred라는 사람이 최초로 개발한 오픈소스이고, 이후에 몇명 안되는 Contributor가 일부 기능들을 추가했다.
설치는 아래 경로를 참조하면 된다. 설치도 아주 심플하고(물론 악랄한 의존성 문제가 있지만 잘 해결하면 될 것이다.), 사용 방법도 간단하다.
깃헙: https://github.com/charles-001/dolphie
Aurora MySQL도 가능?
나도 회사에서 Aurora MySQL을 사용하고 있기 때문에 이 오픈소스를 사용하는 목적 자체가 Aurora MySQL을 모니터링 하기 위함이었다. 그런데 이게 가능할지가 의문이었다.
그런데 또 문서를 보니까 AWS, Azure도 모니터링 할 수 있도록 누군가가 기여를 했던 것. 하지만 막상 사용하려고 보니까 오류가 발생했다.
오류가 발생하는 부분이 아래 코드 때문인데, 아래 명령을 수행하려면 BACKUP_ADMIN 권한이 있어야 한다. But, Aurora MySQL에서는 해당 권한을 사용자에게 부여할 수가 없다.
checkpoint_age: str = """
SELECT
STORAGE_ENGINES ->> '$."InnoDB"."LSN"' - STORAGE_ENGINES ->> '$."InnoDB"."LSN_checkpoint"' AS checkpoint_ag
FROM
performance_schema.log_status
"""
즉, 예외처리든 뭐든 해야하는 것이다. __init__.py 코드를 보니까 이미 Azure는 이 부분을 조건문으로 분개하고 있었다.
그래서 나는 Aurora MySQL도 동일한 상황이기 때문에 코드를 수정해야 한다고 생각했고, 코드를 수정하고 PR을 올렸다. 다행히 바로 적용해주었다. 저 끝에 있는게 나이다.

어쨌든, 최종 수정된 코드를 바탕으로 Dolphie를 설치하면 Aurora MySQL도 real-time으로 DB를 모니터링 할 수 있다.
Configuration 설정
10대의 DB 인스턴스가 있고, 이 10대의 인스턴스를 총 3개의 클러스터 그룹으로 만들 수 있다고 가정해보겠다.
그러면 클러스터 구성은 아래와 같을 것이다.
silver-cluster
- silver-instance-1
- silver-instance-2
- silver-instance-3
gold-cluster
- gold-instance-1
- gold-instance-2
- gold-instance-3
- gold-instance-4
bronze-cluster
- bronze-instance-1
- bronze-instance-2
- bronze-instance-3
실시간으로 모니터링을 해야 한다면, 클러스터별로 모니터링을 해야할 것이다.
Dolphie는 DB 클러스터에 구성되어 있는 DB 인스턴스들을 그룹화할 수 있다. 무슨 말인가 하면, 호스트들을 그룹화할 수 있다는 말이다.
my.cnf 파일보면 아래처럼 섹션별로 설정이 다르게 적용되어 있다.
// .my.cnf
[mysql]
...
[mysqld]
...
[client]
...
이 설정처럼 dophie의 configuration 파일도 비슷하게 설정하면 된다.
// .dolphie.cnf
[dolphie]
user=<username>
password=<password>
[silver-cluster]
1=silver-instance-1~Writer
2=silver-instance-2~Reader1
3=silver-instance-3~Reader2
[gold-cluster]
1=gold-instance-1~Writer
2=gold-instance-2~Reader1
3=gold-instance-3~Reader2
4=gold-instance-4~Reader3
[bronze-cluster]
1=bronze-instance-1~Writer
2=bronze-instance-2~Reader1
3=bronze-instance-3~Reader2
위의 [dolphie] 섹션에 의문을 가질 수 있는데, 이 섹션은 dolphie가 실행될 때 기본 값으로 읽어들이는 섹션이다. 그래서 user, password 정보를 넣어둔 것이다. (물론 .my.cnf로도 설정은 가능)
실행은 아래처럼 –hostgroup 파라미터에 섹션명을 넣어주면 된다.
$ dolphie --hostgroup silver-cluster (또는 gold-cluster, bronze-cluster)
그리고 대시보드에서 Shift+? 누르면 도움말이 나오는데, 기본 대시보드 이외에도 memory usage, kill thread, error log 등을 확인할 수 있다.

그럼 재밌게 사용해보자.
댓글 남기기