Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[MySQL] 그라파나를 이용해 MySQL 서버 모니터링 하기
data_engineering
mysql

[MySQL] 그라파나를 이용해 MySQL 서버 모니터링 하기

Jay Kim
Jay Kim 03 Jul 2022
[MySQL] 성능 최적화 [MySQL] SQL 문제

Table of Contents

  • 모니터링 적용 과정
    • 도커 컴포즈 파일에 prometheus, grafana, exporter 컨테이너를 추가한다
    • prometheus.yml 파일을 작성한다
    • localhost:3000 을 통해 그라파나 웹 UI에 접속한다
    • 프로메테우스를 데이터 소스로 등록한다
    • 대시보드 템플릿을 다운받는다
    • 대시보드를 등록한다
    • 결과
  • 참고

모니터링 적용 과정

도커 컴포즈 파일에 prometheus, grafana, exporter 컨테이너를 추가한다

version: '3.2'

services:
  mysql:
    hostname: mysql
    image: ziontkim0510/mysql-server:1.2
    ports:
      - 3306:3306
    environment:
      MYSQL_USER: root
      MYSQL_ROOT_HOST: "%%"
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: passwd
    command: mysqld
      --server-id=1234
      --max-binlog-size=4096
      --binlog-format=ROW
      --log-bin=bin-log
      --sync-binlog=1
      --binlog-rows-query-log-events=ON
    volumes:
      - ./dataset:/var/lib/mysql-files

  mysqld-exporter:
    hostname: mysqld-exporter
    image: prom/mysqld-exporter
    ports:
      - 9104:9104
    environment:
      DATA_SOURCE_NAME: root:passwd@(mysql:3306)/

  prometheus:
    hostname: prometheus
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    hostname: grafana
    image: grafana/grafana
    ports:
      - 3000:3000

prometheus.yml 파일을 작성한다

  • 프로메테우스가 메트릭을 읽어오도록 잡을 생성한다
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s

scrape_configs:
- job_name: prometheus
  metrics_path: /metrics
  static_configs:
  - targets:
    - localhost:9090

- job_name: mysql
  metrics_path: /metrics
  static_configs:
  - targets:
    - mysqld-exporter:9104

localhost:3000 을 통해 그라파나 웹 UI에 접속한다

프로메테우스를 데이터 소스로 등록한다

대시보드 템플릿을 다운받는다

  • 대시보드 템플릿 제공 사이트

MySQL Overview 말고도 다양한 대시보드를 템플릿으로 제공해준다. 템플릿은 JSON 파일로 작성돼 있다.

JSON 파일을 직접 다운 받아도 되고, 그냥 번호만 알고 있어도 된다.

대시보드를 등록한다

나는 번호로 그냥 입력했다.

아까 등록했던 프로메테우스를 데이터 소스로 사용한다.

결과

아래는 MySQL InnoDB Metrics 라는 템플릿을 사용했을 때의 모습이다

참고

  • 44bits, 그라파나(Grafana)란?
  • How-To Geek, How to Monitor MySQL Server Activity With a Grafana Dashboard
  • Grafana 공식문서, Grafana documentation
  • jssvs, 프로메테우스(prometheus) 구성 및 기본 사용법
  • alice_k106, 169. [Prometheus] 1편 : Prometheus (프로메테우스) 사용 방법, 기본 개념, 데이터 구조
  • ExporterHub, MySQL Server Exporter
  • 고양이 중독, 프로메테우스 Aurora MySQL 성능 지표 모니터링 구성
  • 대시보드 템플릿 제공 사이트
  • Docker Hub, prom/mysqld-exporter 컬렉터 플래그 종류 알 수 있음
[MySQL] 성능 최적화 [MySQL] SQL 문제

You may also like

See all mysql
12 Jul 2022 [MySQL] SQL을 이용한 데이터 분석에서 겪었던 다양한 경험들
data_engineering
mysql

[MySQL] SQL을 이용한 데이터 분석에서 겪었던 다양한 경험들

11 Jul 2022 [MySQL] SQL 문제
data_engineering
mysql

[MySQL] SQL 문제

02 Jul 2022 [MySQL] 성능 최적화
data_engineering
mysql

[MySQL] 성능 최적화

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.