ウェブサイト検索

Prometheus MySQL Exporterを使用してMySQLおよびMariaDBドロップレットを監視する


紹介

MySQLおよびMariaDBデータベースの効果的な監視は、最適なパフォーマンスを維持し、潜在的なボトルネックを特定し、全体的なシステムの信頼性を確保するために不可欠です。Prometheus MySQL Exporterは、プロアクティブな管理とトラブルシューティングに重要なデータベースメトリックに関する詳細な洞察を提供する堅牢なツールです。

このチュートリアルでは、手動設定とスクリプトベースの自動化を使用してMySQLおよびMariaDBデータベースを監視するためのPrometheus MySQL Exporterの設定方法を学びます。これらの方法は、最適なデプロイメント戦略と運用ワークフローアプローチを選択する柔軟性を提供します。

最終的には、リアルタイムのパフォーマンス分析のためにPrometheusとGrafanaを使用した運用監視システムを構築できるようになります。

注意:このチュートリアルの準備時間はおおよそ25分です。

前提条件

始める前に、次の前提条件が整っていることを確認してください:

  • Ubuntu Droplet上でMySQLまたはMariaDBデータベースサーバーを設定し、稼働させる必要があります。UbuntuにMariaDBをインストールする方法や、UbuntuにMySQLをインストールする方法に関するチュートリアルを参照できます。監視したいサーバーは、Prometheus MySQL Exporterをインストールする予定のマシンからアクセスできる必要があります。

  • Prometheus MySQL Exporterをインストールして設定するには、MySQLまたはMariaDBのUbuntuドロップレットにSSHアクセスが必要です。

  • Prometheus MySQL エクスポーターは、メトリクスのスクレイピングのために Prometheus と統合され、可視化のために Grafana と統合されます。ここでは、データベースの Droplets を監視するために DigitalOcean Marketplace からの Prometheus と Grafana のイメージを使用します。

方法1-手動設定

このセクションでは手動設定方法を進めましょう。

Prometheusシステムユーザーとグループを追加する

このステップでは、ターゲットのドロップレットを設定します。エクスポータサービスを管理するために、“prometheus ”という名前のシステムユーザーとグループを作成しましょう。

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

Prometheus MySQLエクスポーターをダウンロードしてインストールする

このステップでは、GitHubからPrometheus MySQL Exporterの最新リリースをダウンロードし、ダウンロードしたファイルを抽出して、バイナリを/usr/local/bin/ディレクトリに移動します。

curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
tar xvf mysqld_exporter*.tar.gz
sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/mysqld_exporter

Prometheusエクスポーター用のデータベースユーザーを作成する

MySQLにrootとしてログインし、エクスポーター用に必要な権限を持つ専用ユーザーを作成します。

mysql -u root -p

必要に応じてルートパスワードを入力すると、MySQL/MariaDBプロンプトが表示されます。その後、以下のコマンドを実行します(以下のコマンドのgiveapasswordをmysqld_exporterデータベースユーザー用の新しいパスワードに置き換えてください)。

ローカル接続用に、パスワードgiveapasswordを使用してmysqld_exporterという名前の新しいMySQLユーザーを作成します。

CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'giveapassword';

mysqld_exporter ユーザーにプロセスリスト、クライアントレプリケーションステータス、すべてのデータベースからのクエリデータを表示する権限を付与します。

GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'localhost';

ユーザー権限に対する変更を適用するために、グラントテーブルを再読み込みしてください。

FLUSH PRIVILEGES;

MySQL コマンドラインインターフェースを終了します。

EXIT

データベースの認証情報を設定する

MySQLエクスポータの資格情報を保存するための設定ファイルを作成します。

sudo vi /etc/.mysqld_exporter.cnf

次のユーザー資格情報をファイルに追加してください:

[client]
user=mysqld_exporter
password=giveapassword

設定ファイルの所有権を設定します:

sudo chown root:prometheus /etc/.mysqld_exporter.cnf

systemdユニットファイルを作成する

MySQL Exporterサービスを管理するためのsystemdサービスユニットファイルを作成します:

sudo vi /etc/systemd/system/mysql_exporter.service

次のデータをファイルに追加してください:

[Unit]
Description=Prometheus MySQL Exporter
After=network.target
User=prometheus
Group=prometheus

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /etc/.mysqld_exporter.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target

systemdを再読み込みし、MySQLエクスポータサービスを開始する

systemdの設定を再読み込みし、MySQL Exporterサービスを開始します。

sudo systemctl daemon-reload
sudo systemctl enable mysql_exporter
sudo systemctl start mysql_exporter

Prometheusドロップレットの設定

まずはprometheus.ymlファイルのバックアップを取ります:

cp /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml-$(date +'%d%b%Y-%H:%M')

今、あなたのPrometheusサーバーにログインし、スクレイプするためのMySQL Exporterエンドポイントを追加してください。

IPアドレスとポートをあなたのMySQLエクスポータのエンドポイントに置き換えてください(9104はPrometheus MySQLdエクスポータのデフォルトポートです)。

vi /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: server1_db
    static_configs:
      - targets: ['10.10.1.10:9104']
        labels:
          alias: db1

  - job_name: server2_db
    static_configs:
      - targets: ['10.10.1.11:9104']
        labels:
          alias: db2

メソッド2 - スクリプトを使用した設定

これを達成するために、ターゲットのドロップレット用のスクリプトと、Prometheusのドロップレット用のスクリプトの2つを実行することもできます。

ターゲットドロップレットを設定することから始めましょう。

ステップ 1: ターゲットドロップレットにSSH接続します。

ステップ2: 次のコマンドを使用してターゲット設定スクリプトをダウンロードします。

wget https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_MySQL_MariaDB_Target_Config.sh

ステップ3: スクリプトがダウンロードされたら、次のコマンドを実行して実行権限を確認します:

chmod +x DO_MySQL_MariaDB_Target_Config.sh

ステップ4: 次のコマンドを実行してスクリプトを実行します:

./DO_MySQL_MariaDB_Target_Config.sh

ステップ5: mysql_exporter ユーザーの新しいパスワードを入力し、その後 MySQL の root パスワードを入力してください:

設定が完了しました。

注意 - スクリプトは次の場合に終了します:

  • ターゲットのDropletにmysql_exporterが既に存在する場合

  • 間違ったmysqlパスワードを入力すると

Prometheusドロップレットの設定(スクリプト方式)

ステップ1:PrometheusドロップレットにSSH接続します.

ステップ2:次のコマンドを使用して、Prometheus設定スクリプトをダウンロードしてください。

wget https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_MySQL_MariaDB_Prometheus_Config.sh

このbashスクリプトは、Prometheusの設定ファイルを自動的に更新して新しいサーバーエンドポイントを追加します。最初に、現在のprometheus.ymlファイルをタイムスタンプ付きのファイル名でバックアップします。

スクリプトは次に、追加するサーバーの数を指定するようユーザーに促し、この入力を検証します。

各サーバーについて、ホスト名とIPアドレスを要求し、各IPアドレスが設定ファイル内で一意であることを確認します。有効なサーバー構成はprometheus.ymlファイルに追加されます。設定を更新した後、スクリプトはPrometheusサービスを再起動し、変更が適用されたことを確認するために、そのステータスをチェックします。

最後に、終了する前にユーザー入力を待ちます。

ステップ3: スクリプトがダウンロードされたら、次のコマンドを実行して実行権限を確認します:

chmod +x DO_MySQL_MariaDB_Prometheus_Config.sh

ステップ4: 次のコマンドを実行してスクリプトを実行します:

./DO_MySQL_MariaDB_Prometheus_Config.sh

ステップ5: 監視に追加するドロップレットの数を入力してください。

ステップ6: ホスト名とIPアドレスを入力します。

ステップ7: 設定が完了しました。

ステップ8: 追加したら、URLprometheushostname:9090/targetsにアクセスして、ターゲットが更新されているか確認します。

注意: 既に監視に追加されているIPアドレスを入力すると、再度詳細を入力するよう求められます。また、追加するサーバーがもうない場合は、スクリプトを終了するために0を入力できます。

Grafanaの設定

ステップ1: ブラウザで Grafana-IP:3000 にアクセスして、Grafanaダッシュボードにログインしてください。

ステップ2: 設定 > データソースに移動します。

ステップ3: データソースを追加をクリックします。

ステップ4: Prometheusを検索して選択します。

ステップ5: 名前をPrometheus、URLを(Prometheushostname:9090)として入力し、保存してテストをクリックします。“データソースが正常に動作しています”というメッセージが表示されたら、データソースを正常に追加できたことになります。完了したら、作成 > インポートに進んでください。

ステップ6: ダッシュボードを手動で設定するか、JSONファイルをアップロードしてダッシュボードをインポートできます。MySQLおよびMariaDBの監視用のJSONテンプレートは、以下のリンクで見つけることができます:

https://solutions-files.ams3.digitaloceanspaces.com/MySQL-MariaDB-Monitoring/DO_Grafana-Mysql-MariaDB_Monitoring.json

ステップ 7: フィールドに入力してインポートしてください。

ステップ8: Grafanaダッシュボードの準備ができました。ホストを選択し、メトリクスが表示されているか確認してください。必要に応じて、ダッシュボードを変更および編集できます。

結論

このチュートリアルでは、サーバーにPrometheus MySQL Exporterをデプロイするためのセットアッププロセスを自動化する方法を学びました。手順に従うことで、MySQLのメトリクスを収集して監視するために、エクスポーターを効率的にインストールおよび構成することができます。

これらのステップを自動化することで、デプロイメントプロセスを効率化し、人為的エラーのリスクを減少させ、複数のサーバーにわたる一貫したセットアップを保証することができます。このチュートリアルは、あなたの監視インフラにおけるPrometheus MySQL Exporterのデプロイに対する信頼性が高く効率的なソリューションです。

関連記事: