tencent cloud

Prometheus를 사용하여 MySQL 및 MariaDB 모니터링
마지막 업데이트 시간:2025-09-28 19:59:50
Prometheus를 사용하여 MySQL 및 MariaDB 모니터링
마지막 업데이트 시간: 2025-09-28 19:59:50

작업 시나리오

MySQL은 일반적인 관계형 데이터베이스 관리 시스템입니다. MariaDB는 MySQL의 브랜치 버전으로서 MySQL과 호환되어 점점 인기를 얻고 있습니다. Kubernetes 환경에서 Prometheus를 사용하여 오픈 소스 mysqld-exporter를 사용하여 MySQL 및 MariaDB 데이터베이스를 모니터링할 수 있습니다. 본문은 Prometheus를 사용하여 MySQL 및 MariaDB를 모니터링하는 방법을 설명합니다.

mysqld-exporter 소개

mysqld-exporter는 MySQL 또는 MariaDB에서 데이터베이스 상태 데이터를 읽고 이를 Prometheus 메트릭 형식으로 변환한 다음 HTTP 인터페이스로 엽니다. 이 경우 Prometheus는 이러한 메트릭을 수집하고 모니터링할 수 있습니다. 다음 이미지와 같습니다.


작업 단계

mysqld-exporter 배포

참고
mysqld-exporter를 배포하기 전에 MySQL 또는 MariaDB가 클러스터, 클러스터 외부 또는 사용된 클라우드 서비스에 배포되었는지 확인하십시오.

MySQL 배포

다음 예시는 마켓플레이스에서 MySQL을 클러스터에 배포하는 방법을 보여줍니다.
1. TKE 콘솔에 로그인하고 왼쪽 사이드바에서 마켓플레이스를 클릭합니다.
2. 마켓플레이스 페이지에서 MySQL을 검색하고 클릭합니다.
3. 애플리케이션 세부 정보 페이지에서 애플리케이션 생성을 클릭합니다.
4. 애플리케이션 생성 페이지에서 필요한 정보를 입력하고 생성을 클릭합니다.
5. 애플리케이션 생성 후 왼쪽 사이드바에서 애플리케이션을 선택하고, 애플리케이션 페이지에서 애플리케이션 세부 정보를 봅니다.
6. 다음 명령을 실행하여 MySQL이 제대로 실행되는지 확인합니다.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-698b898bf7-4dc5k 1/1 Running 0 11s
7. 다음 명령을 실행하여 root 비밀번호를 가져옵니다.
$ kubectl get secret -o jsonpath={.data.mysql-root-password} mysql | base64 -d
6ZAj33yLBo

mysqld-exporter 배포

MySQL 배포 후 다음과 같이 mysqld-exporter를 배포합니다.
1. 다음 명령을 순서대로 실행하여 mysqld-exporter 계정을 생성하고 MySQL에 로그인합니다.
$ kubectl exec -it mysql-698b898bf7-4dc5k bash
$ mysql -uroot -p6ZAj33yLBo
2. 다음 명령을 실행하여 계정을 생성합니다. mysqld-exporter/123456이 예시로 사용됩니다.
CREATE USER 'mysqld-exporter' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, REPLICATION SLAVE, SELECT ON *.* TO 'mysqld-exporter';
flush privileges;
3. yaml 파일을 사용하여 mysqld-exporter를 배포합니다. 예시는 다음과 같습니다.
참고
DATA_SOURCE_NAME의 계정, 비밀번호, MySQL 연결 주소를 실제 주소로 교체합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysqld-exporter
spec:
replicas: 1
selector:
matchLabels:
app: mysqld-exporter
template:
metadata:
labels:
app: mysqld-exporter
spec:
containers:
- name: mysqld-exporter
image: prom/mysqld-exporter:v0.12.1
args:
- --collect.info_schema.tables
- --collect.info_schema.innodb_tablespaces
- --collect.info_schema.innodb_metrics
- --collect.global_status
- --collect.global_variables
- --collect.slave_status
- --collect.info_schema.processlist
- --collect.perf_schema.tablelocks
- --collect.perf_schema.eventsstatements
- --collect.perf_schema.eventsstatementssum
- --collect.perf_schema.eventswaits
- --collect.auto_increment.columns
- --collect.binlog_size
- --collect.perf_schema.tableiowaits
- --collect.perf_schema.indexiowaits
- --collect.info_schema.userstats
- --collect.info_schema.clientstats
- --collect.info_schema.tablestats
- --collect.info_schema.schemastats
- --collect.perf_schema.file_events
- --collect.perf_schema.file_instances
- --collect.perf_schema.replication_group_member_stats
- --collect.perf_schema.replication_applier_status_by_worker
- --collect.slave_hosts
- --collect.info_schema.innodb_cmp
- --collect.info_schema.innodb_cmpmem
- --collect.info_schema.query_response_time
- --collect.engine_tokudb_status
- --collect.engine_innodb_status
ports:
- containerPort: 9104
protocol: TCP
env:
- name: DATA_SOURCE_NAME
value: "mysqld-exporter:123456@(mysql.default.svc.cluster.local:3306)/"
--
apiVersion: v1
kind: Service
metadata:
name: mysqld-exporter
labels:
app: mysqld-exporter
spec:
type: ClusterIP
ports:
- port: 9104
protocol: TCP
name: http
selector:
app: mysqld-exporter

모니터링 데이터 수집 구성

mysqld-exporter 배포 후 mysqld-exporter에서 노출된 데이터를 수집할 수 있도록 모니터링 데이터 수집을 구성합니다. 다음 예시는 ServiceMonitor 정의를 보여줍니다(수집 규칙을 구성하려면 클러스터가 ServiceMonitor 정의를 지원해야 함).
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: mysqld-exporter
spec:
endpoints:
interval: 5s
targetPort: 9104
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: mysqld-exporter
다음 예시는 네이티브 Prometheus 구성을 보여줍니다.
- job_name: mysqld-exporter
scrape_interval: 5s
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- default
relabel_configs:
- action: keep
source_labels:
- __meta_kubernetes_service_label_app_kubernetes_io_name
regex: mysqld-exporter
- action: keep
source_labels:
- __meta_kubernetes_endpoint_port_name
regex: http

모니터링 대시보드 추가

데이터가 수집되면 Grafana용 모니터링 대시보드를 추가하여 데이터를 표시합니다.
MySQL 또는 MariaDB 개요 정보만 보려면 아래 이미지와 같이 grafana.com 대시보드를 가져옵니다.

더 많은 기능이 있는 대시보드가 필요한 경우 percona 오픈 소스 대시보드에서 MySQL_ 접두사가 붙은 json 파일을 가져옵니다.
문제 해결에 도움이 되었나요?
더 자세한 내용은 문의하기 또는 티켓 제출 을 통해 문의할 수 있습니다.
아니오

피드백