目次
概要
Prometheusでの、MySQLのメトリクス収集用のMySQL ExporterのDocker環境構築手順。
前提条件
以下の手順でPrometheus環境を構築していることを前提とする。
https://qiita.com/Esfahan/items/0feaedfd771f49ac7ee4
Prometheus公式のexporter
環境
- mysqld_exporter v0.13.0
- MySQL 5.7(監視対象)
注意
MySQLのperformance_schemaから情報を収集する。
performance_schemaはMySQL 5.5.3から導入されたパフォーマンスをモニタリングするためのスキーマ。
MySQL 5.6以降ではデフォルトでONになっているが、それ以前のバージョンではOFFになっている可能性があるので注意。
監視対象のMySQLの設定
監視対象のMySQLに以下のユーザーを追加。
MySQL Exporterから監視対象のperformance_schemaにアクセスできるようになっている必要がある。
CREATE USER 'exporter'@'%' IDENTIFIED BY 'XXXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
MySQL Exporterの環境構築
version: '3'
services:
mysqld-exporter:
container_name: mysqld-exporter
image: prom/mysqld-exporter
env_file:
- .env
ports:
- 9104:9104
networks:
- sample-network
networks:
sample-network:
external: true
DATA_SOURCE_NAME=exporter:XXXXXXXXX@tcp(your_db_name:3306)/performance_schema
$ docker-compose up -d --build
Prometheusの設定
こちらの記事で構築したPrometheus環境の設定ファイルを編集する。
監視対象を追加
prometheus.yamlに以下を追記。
# 前略
scrape_configs:
+ - job_name: mysqld
+ metrics_path: /mysqld_exporter/metrics
+ static_configs:
+ - targets:
+ - your-mysql-exporter-hostname:9104
+ labels:
+ env: development
設定を反映
$ sudo docker-compose restart prometheus
ルールを追加
groups:
- name: sample001
rules:
# MySQL用のルールを追記
- alert: mysql_down
# MySQLが起動しているかのPromQL。
expr: mysql_up == 0
# 5分間応答がなければアラートを飛ばす
for: 5m
labels:
severity: critical
# エラー文言
annotations:
firing_text: "[{{ $labels.env }}] {{ $labels.instance }} MySQL has been down for more than 5 minutes."
resolved_text: "[{{ $labels.env }}] {{ $labels.instance }} MySQL has recoverd."
UI確認
http://your_prometeus.com:9090/graph
mysql_upで検索すると、正常時は 1
となっている。監視対象のMySQLをダウンさせると、 0
として検出される。