ウェブサイト検索

Prometheus と Grafana を使用して MySQL または MariaDB を監視する方法


このページでは

  1. 前提条件
  2. MySQL/MariaDB ユーザーのセットアップ
  3. prometheus-mysqld-exporter のインストール
  4. MySQL ユーザーを prometheus-mysqld-exporter に追加する
  5. prometheus-mysqld-exporter エンドポイントを Prometheus に追加する
  6. MySQL サーバー用の Grafana ダッシュボードのセットアップ
  7. 結論

MySQL/MariaDB サーバーが適切に動作していることを確認するには、インフラストラクチャに監視を実装する必要があります。これにより、パフォーマンスを最適化し、問題やボトルネックを特定し、データベースが正常であることを確認できます。 Prometheus と Grafana を使用すると、これらを実現し、MySQL サーバーを監視する美しいダッシュボードを作成できます。

このガイドでは、Prometheus と Grafana を使用して MySQL/MariaDB サーバーを監視する方法を学習します。 「prometheus-mysqld-exporter」をセットアップしてメトリクスを生成し、エンドポイント監視を Prometheus サーバーに追加します。その後、MySQL 監視用の新しい Grafana ダッシュボードを作成します。

前提条件

始めるには、次のものが揃っていることを確認してください。

  • MySQL/MariaDBサーバーがインストールされている
  • 管理者権限を持つ非 root ユーザー
  • サーバーにインストールされた Prometheus と Grafana

MySQL/MariaDB ユーザーのセットアップ

MySQL/MariaDB サーバーを監視するには、新しい専用の MySQL ユーザーを作成する必要があります。このユーザーには、すべてのデータベースに対する PROCESS、REPLICATION CLIENT、SELECT などの最小限の権限が与えられます。

このセクションでは、MySQL サーバーを監視するための新しい MySQL ユーザーを作成します。

次のコマンドを使用して、MySQL/MariaDB サーバーにログインします。プロンプトが表示されたら、「root」パスワードを入力します。

sudo mysql -u root -p

次に、次のクエリを実行して、「unix_socket」 認証を持つ新しい MySQL ユーザー 'prometheus' を作成します。このユーザーは、MySQL サーバー内のすべてのデータベースのプロセスレプリケーション クライアント、および選択を表示する権限を持ちます。

CREATE USER IF NOT EXISTS 'prometheus'@'localhost' IDENTIFIED WITH unix_socket;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'localhost';
FLUSH PRIVILEGES;

次に、以下のクエリを実行して、MySQL ユーザー 'prometheus@localhost' を確認します。レプリケーション クライアントとして SELECT、PROCESS、および BINLOG MONITOR の権限を持つ「prometheus」ユーザーが表示されます。

SHOW GRANTS FOR 'prometheus'@'localhost';

quit」 と入力して MySQL/MariaDB サーバーを終了します。

prometheus-mysqld-exporter のインストール

prometheus-mysqld-exporter」は、MySQL メトリクスのエクスポーターです。 MySQL >= 5.6 および MariaDB >= 10.3 をサポートします。 「prometheus-mysqld-exporter」を使用するには、MySQL サーバーにインストールする必要があります。

この例では、MySQL サーバーは Debian 12 サーバー上で実行されています。デフォルトでは、「prometheus-mysqld-exporter」は公式 Debian リポジトリで利用できるため、APT 経由でインストールします。別のディストリビューションを使用している場合は、GitHub 用に手動でダウンロードしてインストールできます。

まず、以下のコマンドを実行して、Debian パッケージのインデックスを更新します。

sudo apt update

リポジトリが更新されたら、次のコマンドを使用して「prometheus-mysqld-exporter」パッケージをインストールします。 「Y」と入力してインストールを確認します。

sudo apt install prometheus-mysqld-exporter

インストールが完了したら、以下の「systemctl」コマンドを実行して systemd マネージャーをリロードします。

sudo systemctl daemon-reload

次に、以下のコマンドを使用して、「prometheus-mysqld-exporter」サービスを開始して有効にすることができます。これにより、「prometheus-mysqld-exporter」サービスがシステム上で実行され、有効になるはずです。

sudo systemctl enable --now prometheus-mysqld-exporter

MySQL ユーザーを prometheus-mysqld-exporter に追加する

これで、MySQL ユーザーが作成され、「prometheus-mysqld-exporter」がインストールされました。次のステップは、MySQL を「prometheus-mysqld-exporter」構成に追加することです。これを行うと、MySQL サーバーのメトリクスを生成し、デフォルトのポート「9104」でエンドポイントを公開できるようになります。

次の「nano」エディタでファイル「/etc/default/prometheus-mysqld-exporter」を開きます。

sudo nano /etc/default/prometheus-mysqld-exporter

MySQL を「prometheus-mysqld-exporter」と統合するには、「DATA_SOURCE_NAME」環境変数のコメントを解除します。この例では、MySQL ユーザー「prometheus」を使用して、「mysqld.sock」ファイルを通じて MySQL サーバーを監視します。

DATA_SOURCE_NAME="prometheus@unix(/run/mysqld/mysqld.sock)/"

ファイルを保存してエディタを終了します。

次に、以下の「systemctl」コマンドを実行して「prometheus-mysqld-exporter」サービスを再起動し、変更を適用します。次に、ステータスをチェックして、実行されていることを確認します。

sudo systemctl restart prometheus-mysqld-exporter
sudo systemctl status prometheus-mysqld-exporter

以下で「prometheus-mysqld-exporter」が実行されていることがわかります。

最後に、Web ブラウザを開いて http://192.168.10.41:9104/ にアクセスします。これは、「prometheus-mysqld-exporter」のデフォルトのエンドポイントです。構成が成功すると、メトリックが生成され、次のように表示されます。

prometheus-mysqld-exporter エンドポイントを Prometheus に追加する

これで、「prometheus-mysqld-exporter」構成が完了し、メトリクスが生成されました。次に、「prometheus-mysqld-exporter」をエンドポイントとして Prometheus サーバーに追加する必要があります。このガイドに関しては、「prometheus-mysqld-exporter」エンドポイントは「192.168.10.41:9104」で利用できます。

Prometheus サーバーをお持ちでない場合は、「Debian 12 に Prometheus と Node Exporter をインストールする方法」を参照してインストールしてください。

Prometheus サーバーに移動し、「nano」エディターで設定ファイル「/etc/prometheus/prometheus.yml」を開きます。

sudo nano /etc/prometheus/prometheus.yml

scrape_configs」内に、次のように「prometheus-mysqld-exporter」のエンドポイントを追加します。この例では、「prometheus-mysqld-exporter」は、IP アドレスとポート「192.168.10.41:9104」を使用して「server1」上で実行されています。強い>』。

scrape_configs:
- job_name: server1
static_configs:
- targets: ['192.168.10.41:9104']
labels:
alias: db1

ファイルを保存し、完了したらエディタを終了します。

次に、次の「systemctl」コマンドを実行して「prometheus」サービスを再起動し、変更を適用します。

sudo systemctl restart prometheus

最後に、Prometheus サーバーのダッシュボードを開き、[ステータス > ターゲット] メニューを選択します。 MySQL 監視のエンドポイントである「server1」が表示されていることを確認してください。

MySQL サーバー用の Grafana ダッシュボードのセットアップ

「prometheus-mysqld-exporter」エンドポイントを Prometheus サーバーに追加したら、MySQL サーバー監視用の Grafana ダッシュボードを構築する準備が整いました。このセクションでは、GrafanaLabs 経由で MySQL のダッシュボード監視をインポートします。

Grafana がインストールされていない場合は、「Ubuntu 24.04 に Grafana と Prometheus をインストールする方法」を参照してインストールしてください。

Grafana ダッシュボードで、[ダッシュボード > 新規 > インポート] メニューをクリックします。この例では、MySQL サーバーの監視に GrafanaLabs の Grafana テンプレートを使用します。

Grafana ID 番号をコピーして貼り付け、[ロード] をクリックして確認します。

次に、データ ソースとして「Prometheus」を選択し、「インポート」をクリックします。

成功すると、Prometheus と Grafana を使用した MySQL/MariaDB モニタリングのダッシュボードが表示されます。

結論

おめでとう! Prometheus と Grafana を使用した MySQL/MariaDB サーバーの監視が完了しました。 「prometheus-mysqld-exporter」を使用して MySQL サーバーを監視し、MySQL のメトリクスを生成しました。また、「prometheus-mysqld-exporter」をエンドポイントとして Prometheus サーバーに追加しました。最後に、MySQL サーバーを監視するための Grafana ダッシュボードを作成しました。

関連記事: