Prometheusはエクスポーターを介してMySQLを監視し、Grafanaチャートで表示します。概要: Prometheus は、SoundCloud によって開発されたオープンソースの監視およびアラーム システムであり、Go 言語に基づく時系列データベースが付属しています。 Prometheus は、設定されたタスク (ジョブ) に従って、指定されたターゲット (ターゲット) のメトリックを定期的にプル方式で取得します。 Prometheus エコシステムには複数のコンポーネントが含まれています。
それではデモンストレーションを始めましょう 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 をダウンロードしてください 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)
Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...
展開環境: ここでは docker コンテナ、Linux システム、VmWare 仮想マシンが使用さ...
1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...
1. はじめにElasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを...
この記事では、mysql8.0.11クライアントがログインできない問題の解決策を紹介します。参考まで...
ファイルシステムとは何かInnoDB や MyIASM などのストレージ エンジンはテーブルをディス...
場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...
目次2. カンマ演算子3. JavaScript Null 結合演算子 (??) 4. JavaSc...
序文Nginxの組み込みモジュールは、同時リクエスト数の制限とリクエストのソースの制限をサポートして...
目次序文フロントエンドモジュール開発の価値厄介な名前の競合面倒なファイル依存関係モジュール化の利点C...
JavaScript - 原則シリーズ日常の開発では、既存のプロジェクトを引き継ぐときは常に、まず他...
docker によってプルされたコマンドは、デフォルトでは /var/lib/docker/ フォル...
目次環境仮想マシンバージョンMySQL バージョン事前準備MySQLの実行ステータスを確認するルート...
目次入力ボックスをクリックして開始します拡張機能入力ボックスをクリックすると複数のイベントが発生しま...
シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...