LoginSignup
0
0

More than 1 year has passed since last update.

[Prometheus] MySQL Exporter with Docker

Last updated at Posted at 2021-06-06

目次

概要

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の環境構築

docker-compose.yaml
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
.env
DATA_SOURCE_NAME=exporter:XXXXXXXXX@tcp(your_db_name:3306)/performance_schema
$ docker-compose up -d --build

Prometheusの設定

こちらの記事で構築したPrometheus環境の設定ファイルを編集する。

監視対象を追加

prometheus.yamlに以下を追記。

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

ルールを追加

/etc/prometheus/alert.rules
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 として検出される。
Screen Shot 2021-06-13 at 16.00.04.png

関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0