MySQL 데이터베이스 모니터링을 위한 Prometheus와 Grafana 연동

Prometheus 설치 및 설정

Prometheus는 Go 언어로 개발되어 별도의 의존성 없이 단일 바이너리로 실행할 수 있습니다. 운영체제에 맞는 패키지를 공식 사이트에서 다운로드합니다.

tar -xzf prometheus-2.45.2.linux-amd64.tar.gz
sudo mv prometheus-2.45.2.linux-amd64 /opt/prometheus

기본 설정 파일(prometheus.yml)은 다음과 같은 구조를 가집니다:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus-server'
    static_configs:
      - targets: ['localhost:9090']

시스템 서비스로 등록하여 백그라운드에서 실행되도록 구성합니다:

[Unit]
Description=Prometheus Monitoring System
After=network-online.target

[Service]
User=prometheus
ExecStart=/opt/prometheus/prometheus \
  --config.file=/opt/prometheus/prometheus.yml \
  --storage.tsdb.path=/opt/prometheus/data
Restart=always

[Install]
WantedBy=multi-user.target

서비스 계정 생성 및 권한 설정:

sudo useradd -s /bin/false prometheus
sudo chown -R prometheus:prometheus /opt/prometheus
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus

Grafana 배포 및 구성

Grafana는 다양한 메트릭 소스를 시각화해주는 오픈소스 플랫폼입니다. CentOS 환경에서는 다음 명령으로 설치합니다:

sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.3-1.x86_64.rpm

/etc/grafana/grafana.ini 파일에서 웹 서버 포트를 변경할 수 있습니다:

[server]
http_port = 3000
domain = localhost
root_url = %(protocol)s://%(domain)s:%(http_port)s/

서비스 시작 및 상태 확인:

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

MySQL 메트릭 수집 구성

데이터베이스에서 exporter용 계정을 생성합니다:

CREATE USER 'metrics_agent'@'%' IDENTIFIED BY 'SecurePass123!';
GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'metrics_agent'@'%';
FLUSH PRIVILEGES;

mysqld_exporter 도구를 다운로드하고 압축을 해제합니다:

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
tar xzf mysqld_exporter-0.15.1.linux-amd64.tar.gz
sudo mv mysqld_exporter-0.15.1.linux-amd64 /opt/mysql_exporter

.my.cnf 파일을 생성하여 연결 정보를 저장합니다:

[client]
user=metrics_agent
password=SecurePass123!
host=127.0.0.1
port=3306

수집기를 독립 실행하거나 시스템 서비스로 등록할 수 있습니다:

/opt/mysql_exporter/mysqld_exporter \
  --web.listen-address=:9104 \
  --config.my-cnf=/opt/mysql_exporter/.my.cnf

서비스 등록 예시:

[Unit]
Description=MySQL Metrics Exporter
After=network.target

[Service]
User=mysql_exporter
ExecStart=/opt/mysql_exporter/mysqld_exporter \
  --config.my-cnf=/opt/mysql_exporter/.my.cnf
Restart=always

[Install]
WantedBy=multi-user.target

사용자 생성 및 서비스 활성화:

sudo useradd -s /bin/false mysql_exporter
sudo chown -R mysql_exporter:mysql_exporter /opt/mysql_exporter
sudo systemctl daemon-reload
sudo systemctl enable mysql_exporter
sudo systemctl start mysql_exporter

Prometheus 설정에 MySQL 작업 대상을 추가합니다:

scrape_configs:
  - job_name: 'database-monitoring'
    static_configs:
      - targets: ['your-server-ip:9104']

변경사항 적용을 위해 Prometheus를 재시작합니다. 이후 Grafana에서 Dashboard ID 7362를 사용하여 사전 정의된 MySQL 템플릿을 불러올 수 있습니다.

태그: prometheus Grafana MySQL Monitoring DevOps

7월 1일 06:51에 게시됨