MySQL 모니터링 환경 구축하기
MySQL 운영에 필요한 모니터링 환경을 구축합니다.
아래는 Prometheus, Grafana를 이용하여 MySQL 대시보드를 구성한 모습니다.
Grafana, Prometheus, MySQL의 위키백과의 정의는 아래와 같습니다.
Grafana는 다중 플랫폼 오픈 소스 분석 및 대화형 시각화 웹 애플리케이션입니다. 지원되는 데이터 소스에 연결되면 웹에 대한 차트, 그래프 및 경고를 제공합니다. 추가 기능이 있는 Grafana Enterprise 버전도 사용할 수 있습니다. 위키백과(영어)
Prometheus는 이벤트 모니터링 및 경고에 사용되는 무료 소프트웨어 응용 프로그램입니다. 유연한 쿼리 및 실시간 경고와 함께 HTTP 풀 모델을 사용하여 구축된 시계열 데이터베이스에 실시간 메트릭을 기록합니다. 위키백과(영어)
MySQL은 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템이다. 다중 스레드, 다중 사용자 형식의 구조 질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 위키백과
MySQL 서버 운영을 위해 OS 및 MySQL 주요 메트릭을 수집합니다. 수집은 Prometheus의 node_exporter, mysqld_exporter를 MySQL 서버에 설치 후 Prometheus 서버로 5초 단위로 수집하도록 설정합니다. 그리고 Grafana 서버에서 Promethus를 데이터 소스로 지정 후 대시보드를 구성합니다.
테스트 환경 정보는 아래와 같습니다.
OS : macOS Big Sur Ver 11.1
Docker : 20.10.2
MySQL : MySQL 8.0.22
Grafana : 7.3
node_exporter : 1.1.0
mysqld_exporter : 0.12.1
Dockerfile을 이용해 MySQL과 node_exporter, mysqld_exporter가 설치된 도커 이미지를 생성합니다.
mysqld_exporter가 접속할 서버 및 사용자, 패스워드 설정 파일을 생성합니다. (파일명 : .my.cnf)
도커 이미지를 빌드하고 빌드된 이미지를 확인합니다.
MySQL 도커를 실행합니다. MySQL의 설정 파일 및 데이터, 로그 경로는 도커가 종료되어도 사라지지 않도록 볼륨으로 구성해놓습니다.
Prometheus 설정 파일을 생성합니다.
Prometheus 도커를 실행합니다. MySQL의 메트릭을 수집할 mysqld_exporter가 접속할 exporter 계정 및 권한을 생성합니다. node_exporter, mysqld_exporter를 실행합니다.
http://localhost:9090/graph 접속 후 up 명령어를 수행하면 연결된 exporter를 확인할 수 있습니다.
Grafana 도커를 실행합니다.
http://localhost:3000/ 접속합니다. 접속 후 데이터 소스를 Prometheus로 선택합니다. HTTP> URL에 Prometheus서버 정보를 입력합니다. (ex. http://promethus:9090)
MySQL 대시보드를 생성하기 위해 percona의 Grafana dashboards json 파일을 다운로드합니다. 그리고 대시보드 생성 시 파일을 불러오거나 Json파일을 붙여 넣습니다. 그러면 대시보드가 생성됩니다.
percona>Grafana dashboards Github에서 AWS RDS, MongoDB, MySQL 등의 다양한 대시보드를 살펴볼 수 있습니다. 필요한 부분을 다운로드하여 수정해가며 사용하면 좋을 것 같습니다.