Cloud DB for MySQL은 내부 모니터링 기능 외에도, 다양한 오픈소스 및 상용 외부 도구와 연동하여 성능 데이터를 수집하고 시각화할 수 있습니다. 아래는 대표적인 방안 및 구성 예시입니다.
Prometheus, Grafana
Prometheus와 Grafana를 사용하여 Cloud DB for MySQL의 성능 데이터를 수집하고 시각화할 수 있습니다. Prometheus는 메트릭을 수집하고, Grafana는 이를 시각화합니다. Prometheus를 통해 MySQL Server의 성능 지표를 수집하기 위해서는 mysqld_exporter 설치가 필요합니다.
- 모니터링을 수행하기 위해서는 애플리케이션 서버 및 DB 서버 생성이 필요합니다. 서버 생성 및 환경 설정에 대한 설명은 Cloud DB for MySQL 시나리오를 참조해 주십시오.
- Cloud DB for MySQL에서 제공하는 READ, CRUD, DDL 권한 모두 모니터링 수행이 가능합니다.
- 본 가이드에서는 Docker 기반 컨테이너 환경을 사용하여 모니터링 구성을 진행합니다. Docker 설치에 대한 설명은 Docker 공식 문서(영문)을 참조해 주십시오.
mysqld_exporter 설치
MySQL Server의 메트릭을 수집하는 오픈소스 에이전트인 mysqld_exporter를 통해 MySQL Server에 접속하여 다양한 성능 지표를 수집할 수 있습니다.
mysqld_exporter를 설치하는 방법은 다음과 같습니다.
- Cloud DB form MySQL 시작을 참조하여 애플리케이션 서버에 접속해 주십시오.
- /home/user 경로에 my.cnf 파일을 생성하고
[Client]
구문 아래에 DB Client 정보를 추가해 주십시오.[client] user=<username> password=<password> host=<hostname> port=3306
- 아래 명령어를 차례대로 실행하여 mysqld_exporter 컨테이너를 실행해 주십시오.
docker network create my-mysql-network docker pull prom/mysqld-exporter docker run -d \ --name mysqld-exporter \ --network my-mysql-network \ -v /home/user/my.cnf:/.my.cnf \ -p 9104:9104 \ prom/mysqld-exporter
Prometheus 설치
오픈소스 시스템 모니터링 및 알림 도구인 Prometheus를 사용하여 mysqld_exporter에서 메트릭을 수집하고, Grafana와 연동하여 MySQL 성능 데이터를 시각화하고 알림 조건을 설정할 수 있습니다.
Prometheus를 설치하는 방법은 다음과 같습니다.
- prometheus.yml 파일을 생성하고 아래와 같이 설정 파일을 작성하여 Prometheus가 mysqld_exporter로부터 성능 데이터를 수집할 수 있도록 구성해 주십시오. 설정 항목에 대한 자세한 설명은 Prometheus 공식 문서(영문)을 참조해 주십시오.
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'mysql' static_configs: - targets: ['mysqld-exporter:9104']
- 아래 명령어를 실행하여 설정한 prometheus.yml 파일을 기반으로 prometheus 컨테이너를 실행해 주십시오.
docker run \ -d \ -p 9090:9090 \ --name prometheus \ --network my-mysql-network \ -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
- ACG 설정 가이드를 참조하여 애플리케이션 서버의 ACG 설정에서 9090 포트를 허용해 주십시오.
- 브라우저에서 http://<서버 IP>:9090에 접속하여 Prometheus 웹 UI에 접속해 주십시오.
Grafana 설치
Grafana는 Prometheus에서 수집한 시계열 데이터를 시각화할 수 있는 오픈소스 대시보드 도구입니다.
Grafana를 설치하는 방법은 다음과 같습니다.
- 아래 명령어를 실행하여 Grafana 컨테이너를 실행해 주십시오.
docker run -d \ --name grafana \ --network my-mysql-network \ -p 3000:3000 \ grafana/grafana
- ACG 설정 가이드를 참조하여 애플리케이션 서버의 ACG 설정에서 3000 포트를 허용해 주십시오.
Grafana 대시보드 생성
Prometheus를 데이터 소스로 사용하여 Grafana에서 대시보드를 생성할 수 있습니다.
Grafana에서 Prometheus 대시보드를 생성하는 방법은 다음과 같습니다.
- 브라우저에서 http://<서버 IP>:3000에 접속하여 Grafana 웹 UI에 접속해 주십시오.
- 기본 사용자명과 비밀번호는 모두 ’admin’이며, 최초 로그인 시 비밀번호 변경이 필요합니다.
- 기본 Grafana 메뉴에서 Connection > Data sources를 클릭한 후 data source로 Prometheus를 추가해 주십시오.
- data source의 이름을 지정하고 URL 필드를 http://<서버 IP>:9090으로 설정해 주십시오.
- [Save & test] 버튼을 클릭하여 데이터 소스가 올바르게 구성되었는지 확인해 주십시오.
- 기본 Grafana 메뉴에서 Dashboards를 클릭한 후 [New] 버튼을 클릭하여 대시보드를 생성해 주십시오. [import] 버튼을 클릭하여 제공 템플릿을 활용할 수 있습니다.
Telegraf, InfluxDB, Grafana
Telegraf는 시계열 데이터 수집 및 전송을 위한 오픈소스 플러그인 기반 서버 에이전트입니다. 300개 이상의 입출력 플러그인을 제공하며 데이터베이스, 클라우드 서비스, IoT 센서 등 다양한 소스로부터 메트릭을 수집할 수 있습니다. InfluxDB는 시계열 데이터를 저장하고 관리하는 데 최적화된 오픈소스 데이터베이스입니다. InfluxQL 및 Flux 언어를 통해 유연한 쿼리가 가능하며, 다운샘플링, 보존정책 설정을 통해 장기 데이터 보관도 최적화할 수 있습니다.
Cloud DB for MySQL을 모니터링하기 위해서는 애플리케이션 서버에 Telegraf를 설치하고, inputs.mysql 플러그인을 통해 MySQL 서버의 성능 지표를 수집하도록 설정합니다. 수집된 데이터는 outputs.influxdb 플러그인을 통해 InfluxDB로 전송되며, 이후 Grafana에서 대시보드로 시각화할 수 있습니다.
브라우저에서 InfluxDB UI, http://<서버 공인 ip>:8086에 접속하기 위해서는 ACG 설정 가이드를 참조하여 ACG 설정에서 8086 포트를 허용해 주십시오.
Percona Monitoring and Management (PMM)
Percona Monitoring and Management (PMM)은 Prometheus로 데이터를 수집 및 저장하고, Grafana로 시각화하는 Percona사의 오픈소스 모니터링 도구입니다. 전체 DB 클러스터부터 단일 쿼리 수준까지의 성능 지표를 하나의 대시보드에서 확인할 수 있습니다. Query Analytics 기능을 사용하면 실행 비용이 크거나 응답이 느린 쿼리를 신속하게 식별하여 병목 현상을 해결할 수 있습니다.
PMM은 Server와 Client 두 구성 요소로 이루어집니다. PMM Server는 모니터링 데이터를 저장하고, PMM Client는 모니터링 대상 서버에 설치되어 서버 및 데이터베이스 관련 데이터를 수집합니다. 온프레미스, 클라우드, 하이브리드 환경 등 다양한 인프라에 유연하게 배포할 수 있습니다.
Cloud DB for MySQL 환경에서는 PMM Client를 설치하지 않고, PMM Server가 외부에서 DB 인스턴스에 접근하여 주요 성능 지표와 쿼리 정보를 수집합니다.
브라우저에서 PMM UI, http://<서버 공인 ip>:8080에 접속하기 위해서는 ACG 설정을 참조하여 ACG 설정에서 8080 포트를 허용해 주십시오.
Percona Toolkit
Percona Toolkit은 데이터베이스 관리를 위한 다양한 커맨드라인 도구 모음입니다. 별도 서버 설치 없이 명령어 실행만으로 품질 높은 DB 성능 분석 작업을 수행할 수 있습니다.
Cloud DB for MySQL 모니터링을 위한 대표적인 도구는 다음과 같습니다.
pt-mysql-summary
pt-mysql-summary는 MySQL 서버의 상태, 설정값, 시스템 정보 등을 요약해 텍스트 형식으로 제공하는 도구입니다. 다양한 출력 제어 옵션이 제공되며, 상황에 맞게 필터링하거나 요약 범위를 조절할 수 있습니다. 자세한 내용은 pt-mysql-summary 공식 문서(영문)을 참조해 주십시오.
Cloud DB for MySQL 모니터링을 위한 pt-mysql-summary 사용 방법은 다음과 같습니다.
pt-mysql-summary --host=<hostname> --user=<username> --password=<password>
pt-query-digest
pt-query-digest는 로그 쿼리를 분석하여 분석 결과를 텍스트 형식으로 제공하는 도구입니다. 기본적으로 쿼리를 fingerprint 단위로 그룹화하며, 총 실행 시간을 기준으로 가장 느린 쿼리부터 정렬해 보여줍니다. 다양한 출력 제어 옵션이 제공되며, 그룹화 방식과 필터링 조건 등을 조절할 수 있습니다. 자세한 내용은 pt-query-digest 공식 문서(영문)을 참조해 주십시오.
Cloud DB for MySQL 모니터링을 위한 pt-query-digest 사용 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Database > Cloud DB for MySQL 메뉴를 차례대로 클릭해 주십시오.
- DB Server 메뉴를 클릭해 주십시오.
- 관리할 MySQL Server를 클릭한 다음 [DB Status] > [DB Server Logs] 탭 메뉴를 차례대로 클릭해 주십시오.
- 드롭다운 메뉴에서 Slow Log를 선택해 주십시오.
- 관리할 로그 파일을 클릭한 다음 [Object Storage로 보내기] 버튼을 클릭해 주십시오.
- Object Storage로 보내기 팝업 창이 나타나면 파일을 업로드할 버킷을 선택하고 [Object Storage로 보내기] 버튼을 클릭해 주십시오.
- 네이버 클라우드 플랫폼 콘솔에서 Services > Storage > Object Storage 메뉴를 차례대로 클릭해 주십시오.
- Bucket Management 메뉴를 클릭해 주십시오.
- 버킷 목록에서 원하는 버킷을 클릭해 주십시오.
- 폴더/파일 목록이 나타나면 원하는 파일을 클릭하여 [다운로드] 버튼을 클릭해 주십시오.
- 파일이 로컬 PC에 다운로드되면, 아래 명령어를 실행해 주십시오.
pt-query-digest –-type=’slowlog’ <파일명>
MySQL Workbench
MySQL 클라이언트인 Workbench의 Performance Tool을 사용해 Cloud DB for MySQL의 기본적인 성능 모니터링을 수행할 수 있습니다. Workbench는 별도의 설치 과정 없이 DB에 접속하는 것만으로도 모니터링 기능을 활용할 수 있으며, 주요 기능은 다음과 같습니다.
- Performance Dashboard: 서버 상태 요약 대시보드
- Performance Schema Reports: 주요 성능 지표 확인
- Query Statistics: 쿼리 통계 확인
Workbench에서 MySQL 서버에 접속하기 위해서는 클라우드 외부에서 DB Server 접속 가이드를 참고해 연결을 설정해야 합니다. 접속이 완료되면, Workbench의 Performance Tool 기능을 사용할 수 있습니다.