PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明

PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明

概要

Prometheus は、HTTP プロトコルを介してリモート マシンからデータを収集し、ローカルの時系列データベースに保存するオープン ソースのサービス監視システムです。シンプルな Web インターフェイス、強力なクエリ言語、HTTP インターフェイスなどを提供します。 Prometheus は、リモート マシンにインストールされたエクスポーターを介して監視データを収集します。ここでは、次の 2 つのエクスポーターが使用されます。

  1. node_exporter – マシンシステムデータ用
  2. mysqld_exporter – MySQL サーバーデータ用

Grafana は、時系列データの視覚化によく使用される、オープンソースで機能豊富なデータ視覚化プラットフォームです。次のデータ ソースのサポートが組み込まれています。

サポートされるデータ ソースはプラグインを通じて拡張できます。

アーキテクチャ図

以下はこの展開のアーキテクチャ図です。

Prometheusをインストールして実行する

1. モニターにPrometheusをインストールする

/opt/prometheusにインストールする

https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz をダウンロードしてください
$ tar zxvf prometheus-1.5.2.linux-amd64.tar.gz
$ mv prometheus-1.5.2.linux-amd64 /opt/prometheus

2. インストールディレクトリにある設定ファイルprometheus.ymlを編集します。

vim /opt/prometheus/prometheus.yml
# 私のグローバル設定
グローバル:
 scrape_interval: 15s # スクレイプ間隔を 15 秒ごとに設定します。デフォルトは 1 分ごとです。
 evaluation_interval: 15s # 15 秒ごとにルールを評価します。デフォルトは 1 分ごとです。
 # scrape_timeout はグローバルデフォルト (10 秒) に設定されています。
 # 通信時に、これらのラベルを任意の時系列またはアラートに添付します。
 # 外部システム (フェデレーション、リモート ストレージ、Alertmanager)。
 外部ラベル:
 モニター: 'codelab-monitor'
# ルールを一度読み込み、グローバル 'evaluation_interval' に従って定期的に評価します。
ルールファイル:
 # - "最初のルール"
 # - "second.rules"
# スクレイピングするエンドポイントを 1 つだけ含むスクレイピング設定:
# ここでは Prometheus そのもの。
scrape_configs:
 # ジョブ名は、この設定から取得されたすべての時系列にラベル `job=<job_name>` として追加されます。
 - ジョブ名: 'プロメテウス'
 # metrics_path のデフォルトは '/metrics' です
 # スキームのデフォルトは 'http' です。
 静的設定:
 - ターゲット: ['localhost:9090']
 # 以下は追加された部分です - job_name: linux
 静的設定:
 - ターゲット: ['172.30.251.214:9100']
 ラベル:
 インスタンス: db1
 - ジョブ名: mysql
 静的設定:
 - ターゲット: ['172.30.251.214:9104']
 ラベル:
 インスタンス: db1

そのうち、172.30.251.214 は MySQL の IP アドレスであり、ポートはエクスポータの対応するリスニング ポートです。

3. Prometheusを起動する

[loya@centos6 プロメテウス]$ ./プロメテウス
INFO[0000] Prometheusを起動しています (バージョン=1.5.2、ブランチ=master、リビジョン=bd1182d29f462c39544f94cc822830e1c64cf55b) ソース=main.go:75
INFO[0000] ビルドコンテキスト (go=go1.7.5、user=root@a8af9200f95d、date=20170210-14:41:22) source=main.go:76
INFO[0000] 設定ファイル prometheus.yml を読み込んでいます source=main.go:248
INFO[0000] シリーズマップとヘッドチャンクを読み込んでいます... source=storage.go:373
INFO[0000] 0 シリーズがロードされました。ソース = storage.go:378
INFO[0000] ターゲット マネージャーを起動しています... source=targetmanager.go:61
INFO[0000] :9090でリッスンしています ソース=web.go:259

Prometheus には、http://monitor_host:9090 からアクセスできる組み込みの Web インターフェースがあります。

[ステータス] -> [ターゲット] ページには、構成した 2 つのターゲットが表示され、そのステータスは [ダウン] になっています。

4. 次に、監視対象マシンにエクスポーターをインストールして実行する必要があります。

エクスポーターをダウンロードして解凍します:

$ mkdir /opt/prometheus/prometheus_exporters
$ cd /opt/prometheus/prometheus_exporters
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.1/node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
https://github.com/prometheus/mysqld_exporter/releases/download/v0.9.0/mysqld_exporter-0.9.0.linux-amd64.tar.gz をダウンロードしてください
$ tar zxvf node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
$ tar zxvf mysqld_exporter-0.9.0.linux-amd64.tar.gz
# それぞれの実行ファイルを /opt/prometheus/prometheus_exporters に移動します
$ ll /opt/prometheus/prometheus_exporters
合計 24464
-rwxr-xr-x 1 ルート ルート 12182376 2月23日 19:01 mysqld_exporter
-rwxr-xr-x 1 ルート ルート 12862209 2月23日 19:01 node_exporter

node_exporterを実行する

$ cd /opt/prometheus/prometheus_exporters
$ ./node_exporter 
INFO[0000] node_exporter を起動しています (バージョン=0.14.0-rc.1、ブランチ=master、リビジョン=5a07f4173d97fa0dd307db5bd3c2e6da26a4b16e) ソース="node_exporter.go:136"
INFO[0000] ビルドコンテキスト (go=go1.7.4、user=root@ed143c8f2fcd、date=20170116-16:00:03) source="node_exporter.go:137"
INFO[0000] ディレクトリが指定されていません。--collector.textfile.directory source="textfile.go:57" を参照してください。
INFO[0000] 有効なコレクター: source="node_exporter.go:156"
INFO[0000] - エントロピーソース="node_exporter.go:158"
情報[0000] - loadavg ソース="node_exporter.go:158"
情報[0000] - 統計ソース="node_exporter.go:158"
情報[0000] - ディスク統計ソース="node_exporter.go:158"
INFO[0000] - テキストファイルソース="node_exporter.go:158"
情報[0000] - vmstat ソース="node_exporter.go:158"
INFO[0000] - meminfo ソース="node_exporter.go:158"
INFO[0000] - ファイルfdソース="node_exporter.go:158"
INFO[0000] - ファイルシステムソース="node_exporter.go:158"
情報[0000] - mdadm ソース="node_exporter.go:158"
情報[0000] - netdevソース="node_exporter.go:158"
情報[0000] - sockstat ソース="node_exporter.go:158"
INFO[0000] - 時間ソース="node_exporter.go:158"
情報[0000] - zfsソース="node_exporter.go:158"
情報[0000] - edac ソース="node_exporter.go:158"
情報[0000] - hwmonソース="node_exporter.go:158"
情報[0000] - netstatソース="node_exporter.go:158"
情報[0000] - uname ソース="node_exporter.go:158"
情報[0000] - conntrackソース="node_exporter.go:158"
INFO[0000] :9100でリッスンしています source="node_exporter.go:176"

mysqld_exporter は MySQL に接続する必要があるため、MySQL 権限が必要です。そのためのユーザーを作成し、必要な権限を付与します。

mysql> 'abc123' によって識別される 'prom'@'localhost' に、*.* のレプリケーション クライアント、プロセスを許可します。
mysql> performance_schema.* に対して 'prom'@'localhost' の SELECT 権限を付与します。

.my.cnf ファイルを作成し、mysqld_exporter を実行します。

$ cd /opt/prometheus/prometheus_exporters
$
$ cat << EOF > .my.cnf
[クライアント]
ユーザー=プロム
パスワード=abc123
終了
$
$ ./mysqld_exporter -config.my-cnf=".my.cnf"
INFO[0000] mysqld_exporter を起動しています (バージョン=0.9.0、ブランチ=master、リビジョン=8400af20ccdbf6b5e0faa2c925c56c48cd78d70b) ソース=mysqld_exporter.go:432
INFO[0000] ビルドコンテキスト (go=go1.6.3、user=root@2c131c66ca20、date=20160926-18:28:09) source=mysqld_exporter.go:433
INFO[0000] :9104 でリッスンしています ソース=mysqld_exporter.go:451

Prometheus Web インターフェースの Status->Targets に戻ると、2 つのターゲットのステータスが UP になっていることがわかります。

Grafanaをインストールして実行する

インストール:

Grafana のインストールに関する公式ドキュメントは非常に明確なので、ここでは詳細には触れません。

構成:

設定ファイル /etc/grafana/grafana.ini を編集し、dashboards.json セクションの 2 つのパラメータの値を変更します。

[ダッシュボード]
有効 = true
パス = /var/lib/grafana/dashboards

Prometheus ダッシュボードをインポートします。

$ git クローン https://github.com/percona/grafana-dashboards.git
$ cp -r grafana-dashboards/ダッシュボード /var/lib/grafana

起動する:

$ /etc/init.d/grafana-serverを起動します

http://monitor_host:3000 経由で Grafana Web インターフェースにアクセスします (デフォルトのユーザー名/パスワードは admin/admin です)

ログイン後、「データ ソース」ページからデータ ソースを追加します。

次に、さまざまなダッシュボード (左上) と期間 (右上) を選択してグラフをレンダリングできます。

システム概要:

MySQL の概要:

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

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

<<:  Javascriptジェネレータの紹介と使用

>>:  Linux で ping は成功するがポートが利用できない問題を解決する方法

推薦する

CSS 水平プログレスバーと垂直プログレスバーの実装コード

時々、素敵なスクロールバー効果を見るのは楽しいものです。ここでは、CSSを使用してそれを実現する方法...

MySQL 8.0.22 の最新バージョンのダウンロードとインストールの超詳細なチュートリアル (Windows 64 ビット)

目次序文1. 公式サイトからMySQL 8.0.22をダウンロードする2. 環境変数を設定する3. ...

Vueプロジェクトでスケルトンスクリーンを使用する方法

現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...

Spring Boot Docker パッケージング ツールの概要

目次スプリングブートDocker spring-boot-maven-プラグインSpotify Ma...

ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...

MySQLデータベーステーブルの容量を確認する方法の例

この記事では、MySQL のデータベース テーブルの容量を確認するためのコマンド ステートメントを紹...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

MySQL 接続制御プラグインの紹介

目次1. 接続制御プラグイン(connection_control)の紹介1.1 connectio...

Alibaba Cloud SSHリモート接続がしばらくすると切断される問題を解決

問題の再現Alibaba Cloud Server は、Finalshell リモート接続を使用して...

Vue ページをリフレッシュするために provide と injection を適用する

目次方法1: 関数を直接呼び出す方法2: provide / inject (静的更新) を使用する...

MySQL EXPLAIN ステートメントの使用例

目次1. 使用方法2. 出力結果1.id 2.選択タイプ3.表4.パーティション5.タイプ6.可能な...

Docker で MySQL マスターとスレーブをデプロイする方法

画像をダウンロードMySQLイメージの選択 docker 検索 mysql MySQL 5.7 イメ...

フォームデータを取得するための Node.js メソッドの 3 つの例

序文Nodejs はサーバーサイド言語です。開発中、登録やログインなどでは、判断のためにフォームを通...

mysql8.0.11データディレクトリ移行の実装

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

CentOS7でXShellとネットワーク設定を接続する方法

1. Linuxネットワーク構成ネットワークを構成する前に、まずローカル IPv4 アドレスやデフォ...