PrometheusはGrafanaディスプレイを使用してMySQLを監視します

PrometheusはGrafanaディスプレイを使用してMySQLを監視します

Prometheusはエクスポーターを介してMySQLを監視し、Grafanaチャートで表示します。

概要:

Prometheus は、SoundCloud によって開発されたオープンソースの監視およびアラーム システムであり、Go 言語に基づく時系列データベースが付属しています。 Prometheus は、設定されたタスク (ジョブ) に従って、指定されたターゲット (ターゲット) のメトリックを定期的にプル方式で取得します。

Prometheus エコシステムには複数のコンポーネントが含まれています。

  • Prometheus サーバー:構成に従って、データ収集、サービス検出、およびデータ保存を完了します。
  • プッシュ ゲートウェイ:いくつかのプッシュ シナリオを処理するために提供されるプラグイン。監視データは最初にプッシュ ゲートウェイにプッシュされ、その後 Prometheus サーバーによって収集およびプルされます。短命で、Prometheus がプルする前に消えてしまう可能性のあるジョブに使用されます (Prometheus サーバーの収集間隔中に Push Gateway のデータが変更されない場合、Prometheus サーバーはタイムスタンプのみが異なる同じデータを 2 回収集します)
  • エクスポーター (プローブ): Prometheus のデータ収集コンポーネントの一種を表す一般的な用語です。ターゲットからデータを収集し、それを Prometheus でサポートされている形式に変換する役割を担います。従来のデータ収集コンポーネントとは異なり、中央サーバーにデータを送信せず、中央サーバーがデータをアクティブにキャプチャするのを待機します。
  • Alertmanager: Prometheus サーバーは、主に PromQL ベースのアラーム ルールに従ってデータを分析する役割を担います。PromQL で定義されたルールが満たされると、アラームが生成され、Alertmanager に送信されます。Alertmanager は、設定に従ってアラーム情報を処理し、送信します。一般的な受信方法には、電子メール、Webhook などがあります。 Alertmanager には、グループ化、抑制、および消音という 3 つの方法でアラーム情報を処理できます。

それではデモンストレーションを始めましょう

1. テストマシン

プロメテウスサーバー 192.168.56.140
MySQL ホスト01 192.168.56.103
MySQLホスト02 192.168.56.104

2. mysql host01 を設定する

使用される MySQL バージョン:

8.0.25 MySQL コミュニティサーバー

3. 輸出者アカウントを作成する

mysqld_exporter は、mysql のステータス テーブルとステータス コマンドを照会してデータを取得します。したがって、まずMySQLで対応するアカウントを作成する必要があります。

'Xiaopang*803' によって識別されるユーザー 'exporter'@'%' を作成します。
'exporter'@'%' に *.* 上のレプリケーション クライアント、プロセスを許可します。
performance_schema.* に対して 'exporter'@'%' の SELECT 権限を付与します。
権限をフラッシュします。

4. mysqld_exporterをダウンロードしてインストールする

https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz をダウンロードしてください
tar xvzf mysqld_exporter-0.13.0.linux-amd64.tar.gz -C /usr/local/ を実行します。
cd /usr/local && ln -s mysqld_exporter-0.13.0.linux-amd64/mysqld_exporter

4.1 ファイルを編集してパスワードを入力する

次のファイルを編集し、エクスポーターのユーザー名とパスワードを入力します(上記のMySQLで作成したアカウントとパスワードと同じ)。

[root@host01 mysqld_exporter]# vi .my.cnf
[クライアント]
ユーザー=輸出者
パスワード=Xiaopang*803

4.2 スタートアップサービスファイルの追加

[root@host01 ~]# vi /etc/systemd/system/mysqld_exporter.service

[ユニット]
説明=mysqld_exporter
後=ネットワーク.ターゲット

[サービス]
タイプ=シンプル
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
再起動=失敗時

[インストール]
WantedBy=マルチユーザー.ターゲット

4.3 mysqld_exporterの起動

サービス mysqld_exporter の開始

4.4 テスト検証

mysqld_exporter はデフォルトでポート 9104 を使用します。ブラウザに次のアドレスを入力できます。データ出力があるか確認します。

http://192.168.56.103:9104/metricsと入力してください

出力情報は次のようになります。

# HELP go_gc_duration_seconds ガベージ コレクション サイクルの一時停止期間の概要。
# TYPE go_gc_duration_seconds サマリー
go_gc_duration_seconds{quantile="0"} 2.5395e-05
go_gc_duration_seconds{quantile="0.25"} 3.5372e-05
go_gc_duration_seconds{quantile="0.5"} 3.9393e-05
go_gc_duration_seconds{quantile="0.75"} 5.5068e-05
go_gc_duration_seconds{quantile="1"} 0.062537624
go_gc_duration_seconds_sum 0.453204071
go_gc_duration_seconds_count 2131
# HELP go_goroutines 現在存在する goroutine の数。
# TYPE go_goroutines ゲージ

5. node_exporterをダウンロードしてインストールする

mysqld_exporter のみをインストールすると OS 関連のデータを監視できないため、OS 監視には node_exporter をインストールする必要があります。

https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz をダウンロードしてください

tar xvzf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/local/ を実行します。
cd /usr/local && ln -s node_exporter-1.2.2.linux-amd64/ node_exporter

5.1 スタートアップサービスファイルの追加

[root@host01 ~]# vi /etc/systemd/system/node_exporter.service
[ユニット]
説明=node_export
ドキュメント=https://github.com/prometheus/node_exporter
後=ネットワーク.ターゲット

[サービス]
タイプ=シンプル
ユーザー=root
グループ=ルート
ExecStart=/usr/local/node_exporter/node_exporter
再起動=失敗時
[インストール]
WantedBy=マルチユーザー.ターゲット

5.2 node_exporterを起動する

サービス node_exporter の開始

5.3 テスト検証

デフォルトでは、node_exporter はポート 9100 を使用します。ブラウザに次のアドレスを入力できます。データ出力があるか確認します。

http://192.168.56.103:9100/metricsと入力してください

出力は次のようになります。

# HELP go_gc_duration_seconds ガベージ コレクション サイクルの一時停止期間の概要。
# TYPE go_gc_duration_seconds サマリー
go_gc_duration_seconds{quantile="0"} 2.5934e-05
go_gc_duration_seconds{quantile="0.25"} 4.0072e-05
go_gc_duration_seconds{quantile="0.5"} 4.7616e-05
go_gc_duration_seconds{quantile="0.75"} 6.726e-05
go_gc_duration_seconds{quantile="1"} 0.228887598
go_gc_duration_seconds_sum 0.550266258
go_gc_duration_seconds_count 793
# HELP go_goroutines 現在存在する goroutine の数。
# TYPE go_goroutines ゲージ

6. prometheus+grafanaをインストールする

使用バージョン:

プロメテウス 2.28

グラファナ 6.7.6

6.1 インストール

パッケージをダウンロードする

https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz をダウンロードしてください

6.2 解凍してソフトリンクを追加する

tar xvzf prometheus-2.28.1.linux-amd64.tar.gz -C /usr/local/ を実行します。
/usr/local/ をコピーします
ln -s プロメテウス-2.28.1.linux-amd64/プロメテウス

6.3 スタートアップサービスの追加

[root@prometheus-server prometheus]# vi /etc/systemd/system/prometheus.service
[ユニット]
説明=プロメテウス監視システム
ドキュメント=Prometheus 監視システム

[サービス]
タイプ=シンプル
ユーザー=root
グループ=ルート
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path="データ/" \
--storage.tsdb.retention.time=15d \
--web.max-connections=512 \
--web.listen-address=:9090

6.4 MySQL監視の追加

vi /usr/local/prometheus/prometheus.yml

scrape_configs:
# ジョブ名は、この設定から取得されたすべての時系列にラベル `job=<job_name>` として追加されます。

  - ジョブ名: 'mysql'
    静的設定:
      - ターゲット: ['192.168.56.103:9104']
        ラベル:
          インスタンス: mysql_instance1
  - ジョブ名: 'linux'
    静的設定:
      - ターゲット: ['192.168.56.103:9100']
        ラベル:
          インスタンス: mysql_instance1


6.5 プロメテウスを起動する

サービスプロメテウス開始

6.7 プロメテウスを見る

Prometheusのデフォルトの監視ポート

http://192.168.56.140:9090/

ステータス -> ターゲットをクリックします。すべてが正常であれば、mysql/linuxの状態が次のようにUPであることがわかります。

7. Grafanaをダウンロードしてインストールする

https://dl.grafana.com/oss/release/grafana-6.7.6-1.x86_64.rpm を実行します。

rpm -ivh grafana-6.7.6-1.x86_64.rpm

7.1 Grafanaへのアクセス

Prometheusの表示機能は非常に弱いです。グラフィックスをより良く表示するには、Grafanaが必要です。

http://192.168.56.140:3000/ と入力します

データソースをproemtheusのHTTPリンクとして設定します(HTTPSではなくHTTPであることに注意してください)

7.2 MySQL監視テンプレートのインポート

Grafana データの表示はテンプレートを通じて実現されます。 Grafana の Web サイトには、自分で調べることができる共有テンプレートが多数あります。

このテンプレートは次のリンクからダウンロードしました。

https://grafana.com/api/dashboards/9623/revisions/4/download

バージョン不一致の問題

バージョン不一致により、完了後に一部の項目が正常に表示されません。使用されているバージョンは grafana5.0 で、私のバージョンは 6.x です。

しかし、この小さな問題は私にとっては問題ではなく、自分で修正しました。正常に表示できました。以下は修正したJSONファイルです。

josn_jb51.rar

修正プロセス

多くの場合、多くのものはまだ使用できる状態になっていません。ニーズに応じていくつかの変更を加える必要があります。

それを変更する方法を理解するのに約 30 分かかりました。その後、対応するプロジェクトを修正して完了するのにさらに約 2 時間かかりました。

変更プロセス中に発生する問題には、主に 2 つの種類があります。

1) Grafana 5.x および 6.x コンポーネントの名前が変更されました。

6.0 と 5.0 のコンポーネント名が異なるため、「合計 RAM のバッファー プール サイズ」を正しく表示できません。

これを実行するには、pmm-singlestat-panel -> singlestat を置き換えます。

2) エクスポーターによって抽出された属性の名前が変更されました

node_exporter-1.2.2 を使用していますが、OS について抽出されたプロパティが JSON ファイルで定義されたプロパティ名と一致しません。

方法は、「http://192.168.56.103:9100/metrics」で新しい属性名を直接検索し、JSON ファイル内の古い属性名を置き換えることです。

例えば:

node_memory_MemTotal->node_memory_MemTotal_bytes を置き換えます
node_memory_MemTotal->node_memory_MemTotal_bytes を置き換えます

輸入

いくつか修正を加えたので、インポート時にJSONの内容を直接入力できるようになりました。

[ロード] をクリックし、データ ソースとして prometheus を選択します。

7.3 sysbenchストレステストツールを起動する

sysbench ツールを有効にする目的は、ストレス テストを通じてデータの変更を示すグラフを生成することです (そうでない場合、トラフィックがなければデータは移動しません)。

ここでは、リモートでテストしています (別のマシン host02 で sysbench を実行しています)。目的は、ネットワーク トラフィック データを生成することです。

[root@host02 ~]# sysbench /usr/share/sysbench/oltp_read_write.lua --time=9180 --mysql-host=host01 --mysql-port=3306 --mysql-user=dbusr --mysql-password=Xiaopang*803 --mysql-db=db1 --table-size=50000 --tables=15 --threads=15 --report-interval=10 実行
sysbench 1.0.20 (バンドルされた LuaJIT 2.1.0-beta2 を使用)

次のオプションでテストを実行します。
スレッド数: 15
10秒ごとに中間結果を報告します
現在の時刻から乱数ジェネレータを初期化しています


ワーカー スレッドを初期化しています...

スレッドが始まりました!

[ 10 秒 ] スレッド: 15 tps: 112.68 qps: 2268.92 (r/w/o: 1589.76/452.30/226.85) lat (ms,95%): 277.21 エラー/秒: 0.00 偵察/秒: 0.00
[ 20 秒 ] スレッド: 15 tps: 113.91 qps: 2282.81 (r/w/o: 1598.47/456.52/227.81) lat (ms,95%): 211.60 エラー/秒: 0.00 偵察/秒: 0.00
[ 30 秒 ] スレッド: 15 tps: 109.80 qps: 2192.95 (r/w/o: 1536.66/436.69/219.59) lat (ms,95%): 240.02 エラー/秒: 0.00 偵察/秒: 0.00
[ 40 秒 ] スレッド: 15 tps: 112.70 qps: 2265.36 (r/w/o: 1583.17/456.79/225.40) lat (ms,95%): 193.38 エラー/秒: 0.00 偵察/秒: 0.00
[ 50 秒 ] thds: 15 tps: 101.00 qps: 2013.42 (r/w/o: 1413.32/398.10/202.00) lat (ms,95%): 325.98 err/s: 0.00 reconn/s: 0.00

7.4 Grafanaをチェックして完了後の結果を確認する

ここに掲載されているのは一部の図のみです。

これで、Grafana を使用した Prometheus MySQL モニタリングに関するこの記事は終了です。MySQL Grafana に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明
  • Grafanaのインストールと使用に関する詳細なチュートリアル
  • Grafana を使用して Docker コンテナの監視チャートを表示し、電子メールアラートルールを設定する (図)
  • Prometheus+Grafana を使用した Springboot アプリケーションの監視に関するチュートリアルの詳細な説明
  • Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する
  • docker ベースで Prometheus+Grafana を構築する手順の詳細説明
  • Influx+Grafana のカスタム Python データ収集の概要といくつかの落とし穴
  • SpringBoot+Prometheus+Grafanaでアプリケーション監視とアラームを実装するための詳細な手順
  • Linux で Grafana をインストールし、InfluxDB モニタリングを追加する方法
  • Prometheus+Grafanaによるnginxの監視方法を分析する
  • Ubuntu で Grafana を使用して Docker を監視する方法
  • Docker を使用した JMeter+Grafana+Influxdb 監視プラットフォームの構築に関する詳細なチュートリアル
  • Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル
  • dockerを使用してGrafana+Prometheus構成をデプロイする
  • ELKとGrafanaが共同でnginxログを分析するための視覚的なモニタリングを開発
  • Grafana のパスワードを忘れても大丈夫です。Grafana の管理者パスワードをリセットする 2 つの方法

<<:  VUEプロジェクトでXSS攻撃に遭遇した実体験

>>:  CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)

推薦する

Centos7 ベースの Varnish キャッシュ プロキシ サーバーを展開する

1. ワニスの概要1. ワニスの紹介Varnish は、新しいソフトウェア アーキテクチャを使用し、...

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

Linux クラウド サーバーに JDK と Tomcat をインストールするための詳細な手順 (推奨)

JDKをダウンロードしてインストールするステップ 1: まず、公式 Web サイト http://...

初心者のためのウェブサイト構築入門 - ウェブサイト構築に必要な条件とツール

今日は、初心者の次のような質問に答えます。学ぶ勇気さえあれば、自分のウェブサイトを構築するのは簡単で...

LinuxでIPアドレスが表示されない問題の解決方法

目次序文解決:ステップ1ステップ2序文環境: VMware Workstation 上に Linux...

Windows での MySQL 8.0.11 インストール チュートリアル

この記事は、WindowsでのMySQL 8.0.11のインストールチュートリアルを記録しています。...

MySQL 5.7.17 winx64 無料インストールバージョン設定方法グラフィックチュートリアル

mysql5.7.17無料インストールバージョンのインストールに関する最近の経験1.ダウンロードして...

JavaScript リフレクション学習のヒント

目次1. はじめに2. インターフェース3. 簡単な例4. 結論1. はじめにMDN の公式 Web...

http:// の代わりに // を使用する利点は何ですか (アダプティブ https)

//デフォルトプロトコル/ デフォルト プロトコルの使用は、リソース アクセス プロトコルが現在の...

Docker イメージに基づいて Go プロジェクトをデプロイする方法と手順

知識への依存Go クロスコンパイルの基礎Dockerの基礎Dockerfileカスタムイメージの基本...

MySQL例外に対する一般的な解決策をいくつか分析する

目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...

Docker 構成 Alibaba Cloud イメージアクセラレーション プル実装

今日はdockerを使ってイメージをpullしたのですが、速度が悪くて見れず最後まで待ち続けました。...

DockerにMinIOをインストールするための詳細な手順

目次1. docker環境が正常かどうかを確認する2. miniIOイメージをダウンロードする3. ...