tencent cloud

Prometheusを使用してMySQLとMariaDBをモニタリングします
最終更新日:2025-09-28 19:59:50
Prometheusを使用してMySQLとMariaDBをモニタリングします
最終更新日: 2025-09-28 19:59:50

ユースケース

MySQLは、一般的に使われているリレーショナルデータベースです。MariaDBは、MySQのブランチバージョンとして、MySQLプロトコルと互換性があり、普及が進んでいます。Kubernetesの環境では、オープンソースmysqld-exporterの助けを借りてPrometheusを使用し、MySQLとMariaDBをモニタリングできます。ここでPrometheusについて学び、使用を開始してください。

mysqld-exporterの概要

mysqld-exporterは、MySQLやMariaDBの特定のデータベースのステータスに関するデータを読み込み、Prometheusのメトリクス形式に変換してHTTPインターフェースとして公開し、PrometheusによってキャプチャされることでPrometheusメトリクスをサポートしていないMySQLやMariaDBを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. 以下のコマンドを実行し、SQLステートメントを入力してアカウントを作成します。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定義の例は次のとおりです(クラスターでサポートする必要があります)。
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ファイルの内容をインポートするだけでOKです。
この記事はお役に立ちましたか?
営業担当者に お問い合わせ いただくか チケットを提出 してサポートを求めることができます。
はい
いいえ

フィードバック