1. 概要Grafana は、大量の測定データを視覚化するためのオープンソース プログラムです。データを作成、共有、閲覧するための強力かつエレガントな方法を提供します。ダッシュボードには、さまざまなメトリック データ ソースからのデータが表示されます。 - Grafana はインターネット インフラストラクチャとアプリケーションの分析に最もよく使用されますが、産業用センサー、ホーム オートメーション、プロセス制御などの他の分野でも使用できます。
- Grafana にはホットスワップ可能なコントロール パネルと拡張可能なデータ ソースがあり、現在は Graphite、InfluxDB、OpenTSDB、Elasticsearch をサポートしています。
- Grafana の上位バージョンでは、アラーム機能とさまざまなアラーム チャネル (Webhook、AlertManager、メール、DingTalk など) もサポートされます。
- 各データ ソースのクエリ言語と機能は異なります。複数のデータ ソースのデータを 1 つのダッシュボードに組み合わせることができますが、各ダッシュボードは特定のデータ ソースに関連付けられており、そのデータ ソースは特定の組織に属しています。
Prometheus は通常、Grafana と組み合わせて使用されます。一部の企業では、アラートに Grafana を直接使用し、alertmanager を放棄しています。関連する参考文書は次のとおりです。 - Grafana 公式ドキュメント: https://grafana.com/docs/grafana/latest/
- Grafana GitHub アドレス: https://github.com/grafana/grafana
- プロメテウス原理の詳細な説明
- 【クラウドネイティブ】Prometheus Pushgetwayの解説と実践的な操作
- 【クラウドネイティブ】Prometheus AlertManagerの解説と実践的な操作
- 【クラウドネイティブ】Prometheus PromQLの解説と実践的な操作
- [クラウドネイティブ] Prometheus カスタムアラートルール
2. Grafanaのインストール1) ダウンロードしてインストールするダウンロードアドレス: https://grafana.com/grafana/download?platform=linux https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.2-1.x86_64.rpmを取得します。 sudo yum install grafana -エンタープライズ- 9.3.2-1.x86_64.rpm - y 2) インストールパッケージ情報- バイナリファイル: /usr/sbin/grafana-server
- init.d スクリプト: /etc/init.d/grafana-server
- 環境変数ファイル: /etc/sysconfig/grafana-server
- 設定ファイル: /etc/grafana/grafana.ini
- 起動項目: /usr/lib/systemd/system/grafana-server.service
- ログファイル: /var/log/grafana/grafana.log
- デフォルトで設定されている sqlite3 データベース: /var/lib/grafana/grafana.db
- Grafanaプラグインのデフォルトの保存場所: /var/lib/grafana/plugins
3) サービスを開始する sudo systemctlデーモン-リロード sudo systemctl start grafana -サーバー # Grafanaは起動時に自動的に起動します sudo systemctl enable grafana -サーバー sudo systemctl status grafana -サーバー # デフォルトポート3000 netstat -nlpt を実行します。 grep 3000 4) Grafanaへのアクセスデフォルトのポートは 3000 です。アクセス アドレス: http://IP:3000。デフォルトのアカウント/パスワード: admin/admin 3. Grafana関数の紹介- データ ソース: Grafana は、さまざまな時系列データベース データ ソースをサポートしています。 Grafana は各データ ソースに対して異なるクエリ メソッドを提供し、各データ ソースの特性を適切にサポートできます。公式アドレス: https://grafana.com/docs/grafana/latest/datasources/
- ダッシュボード: ダッシュボードは、車のダッシュボードと同様に、車両の速度、水タンクの温度など、多くの情報を表示できます。Grafana のダッシュボードは、データソースから取得したデータをさまざまなグラフィック形式で表示します。 https://grafana.com/grafana/dashboards/
- 行: 行はダッシュボードの基本単位です。ダッシュボードには複数の行を含めることができます。 1 行には、システム メモリの使用状況、5 分間および 10 分間の平均 CPU 負荷など、1 種類の情報または複数の種類の情報の組み合わせを表示できます。そのため、1 つのダッシュボードに多くのコンテンツを表示できます。
- パネル: パネルは、実際には行に情報を表示する方法です。表、リスト(アラートリスト)、ヒートマップ(ヒートマップ)など複数の方法をサポートしています。詳細は公式サイトで確認できます。
- クエリ エディター: 取得するデータの部分を指定するために使用されるクエリ エディター。 SQL クエリ ステートメントと同様に、たとえば、特定の行のテスト テーブルのデータを表示する場合は、クエリ エディターで select * from test と記述できます。これは単なる例です。実際、各 DataSource は異なる方法でデータを取得するため、書き込み方法も異なります (https://grafana.com/docs/grafana/latest/datasources/)。例えば、zabbixでは、特定の監視項目を指定してデータを取得します。
- 組織: 組織は非常に広い概念です。各ユーザーは複数の組織を持つことができます。 Grafana にはデフォルトのメイン組織があります。ログイン後、ユーザーが複数の組織を持っている場合は、異なる組織間を切り替えることができます。データソース、ダッシュボードなど、組織はそれぞれ完全に異なります。組織を作成することは、完全に新しいビューを開くことと同じであり、すべてのデータソース、ダッシュボードなどを最初から作成する必要があります。
- ユーザー: ユーザー、この概念は非常に単純なので、これ以上の説明は必要ありません。 Grafana には、管理者、編集者、閲覧者の 3 つのユーザー ロールがあります。管理者は最高の権限を持ち、ユーザーの作成、データソースの追加、ダッシュボードの作成など、あらゆる操作を実行できます。編集者ロールではユーザーを作成したりデータソースを追加したりすることはできませんが、ダッシュボードを作成することはできます。閲覧者ロールではダッシュボードの表示のみ可能です。バージョン 2.1 以降では、読み取り専用編集者という新しいロールが追加されました。このモードでは、ユーザーはダッシュボードを変更できますが、保存することはできません。各ユーザーは複数の組織を持つことができます。
4. ストレージにMySQLを使用する1) MySQLをインストールするMySQL のインストールについては、ここでは繰り返さない次の記事を参照してください: MySQL High Availability Practice (MHA) 2) Grafanaの設定を変更する1. GrafanaユーザーとGrafanaライブラリを作成する # ログインクライアント mysql -uroot -p パスワード: 123456
# データベースを作成する データベースが存在しない場合は作成します。grafana のデフォルトの文字セットは utf8 です。COLLATE utf8_general_ci ;
# ユーザーを作成して承認する すべてをGrafanaに許可します。 * '123456'で識別される'192.168.182.%'の'grafana'へ; 2. Grafanaの設定を変更する設定ファイル: /etc/grafana/grafana.ini [データベース] タイプ= mysql ホスト= 192.168 .182 .110 : 3306 名前=グラファナ ユーザー= grafana パスワード= 123456 # URLを直接設定することもできます # url = mysql : //グラファナ: grafana@192 .168 .182 .110 : 3306 /グラファナ Grafanaを再起動します systemctl 再起動 grafana -サーバー 5. データソースを構成する1) Prometheusデータソースを構成するすでに Prometheus をデプロイしているので、Prometheus データ ソースを追加できます。 2) MySQLデータソースを構成する 6.ダッシュボードを構成するアドレス: https://grafana.com/grafana/dashboards/ 1) node_exporter モニタリングパネル1. node_exporterをインストールするダウンロードアドレス: https://github.com/prometheus/node_exporter/releases/ 【1】ダウンロード https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gzをダウンロードしてください tar - xzf node_exporter - 1.5 .0 .linux - amd64 .tar .gz 【2】node_exporter.serviceの起動設定 # デフォルトポート 9100 cat > /usr/lib/systemd/system/node_exporter.service << EOF [ユニット] 説明notallow = node_exporter 後=ネットワーク.ターゲット #対応するユーザーとグループを作成して開始することができます #ユーザー=プロメテウス #グループ=プロメテウス
[サービス] ExecStart =/ opt / prometheus / exporter / node_exporter / node_exporter - 1.5 .0 .linux - amd64 / node_exporter --web.listen-address=:9100 [インストール] WantedBy =マルチユーザー.target 終了 【3】サービスを開始する systemctlデーモン-reload systemctl ノードエクスポーターを起動します systemctl ステータス node_exporter systemctl を有効にする node_exporter 【4】検査 curl http : // localhost : 9100 /メトリック 2. Prometheusを設定してnode_exporterをロードする設定prometheus.ymlを追加または変更する リロード systemctl でプロメテウスを再起動します。 # 1.キルメソッド #kill -HUP pid # 2. curl メソッド (推奨) #curl - X POST http : // IP /-/リロード # [注意] 起動コマンドラインにパラメータ--web.enable-lifecycleを追加する必要があります。 カール- # 3.再起動します(推奨されません。再起動すると、すべての接続が一時的に中断されます) # systemctl でプロメテウスを再起動します 3. 監視パネルを構成するアドレス: https://grafana.com/grafana/dashboards/?search=node_exporter ロードには、オフライン(json ファイル)とオンライン(ID による json のリモートダウンロード)の 2 つの方法があります。 インポート後、データを確認できます。 2) mysql_exporter モニタリングパネルダウンロードアドレス: https://github.com/prometheus/mysqld_exporter 1. node_exporterをインストールする【1】ダウンロード # MySQLの対応するバージョンに注意してください エクスポートVER = 0.12.0 https://github.com/prometheus/mysqld_exporter/releases/download/v${VER}/mysqld_exporter-${VER}.linux-amd64.tar .gzを取得します。 tar xvf mysqld_exporter - $ { VER } .linux - amd64 .tar .gz mv mysqld_exporter - $ { VER } .linux -amd64 / mysqld_exporter / usr / local / bin / chmod + x / usr /ローカル/ bin / mysqld_exporter 【2】データベース資格情報を構成する データベース資格情報ファイルを作成し、ユーザーの正しいユーザー名とパスワードを追加し、すべての権限を設定します。 cat > /root/.my .cnf << EOF [クライアント] ホスト= 192.168.182.110 ポート= 3306 ユーザー= mha パスワード= 123456 終了 【3】mysql_exporter.serviceを起動するように設定する # デフォルトポート: 9104 cat > /etc/systemd/system/mysqld_exporter.service << EOF [ユニット] Descriptinotallow = Prometheus MySQL エクスポーター 後=ネットワーク.ターゲット #ユーザー=プロメテウス #グループ=プロメテウス
[サービス] タイプ=シンプル 再起動=常に ExecStart =/ usr / local / bin / mysqld_exporter\ --config.my-cnf /root/.my.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
[インストール] WantedBy =マルチユーザー.target 終了 【4】サービスを開始する systemctlデーモン-reload systemctl で mysqld_exporter を起動します。 systemctl ステータス mysqld_exporter systemctl で mysqld_exporter を有効にする # 開始して自動的に開始します。上記の2行に相当します # systemctl enable --now mysqld_exporter 【5】検査 curl http : // localhost : 9104 /メトリック 2. Prometheusを設定してmysql_exporterをロードする設定prometheus.ymlを追加または変更する リロード systemctl でプロメテウスを再起動します。 # 1.キルメソッド #kill -HUP pid # 2. curl メソッド (推奨) #curl - X POST http : // IP /-/リロード # [注意] 起動コマンドラインにパラメータ--web.enable-lifecycleを追加する必要があります。 カール- # 3.再起動します(推奨されません。再起動すると、すべての接続が一時的に中断されます) # systemctl でプロメテウスを再起動します 3. 監視パネルを構成するアドレス: https://grafana.com/grafana/dashboards/7362-mysql-overview/ 3) Grafanaクエリ構文4) カスタマイズされた監視パネル上記2つはオンラインで提供されているパネルです。実際、実稼働環境では、カスタマイズされた監視項目が必要になることがよくあります。 1. Prometheusデータソース【1】新しい空のパネルを作成する- パネル: パネルは、実際には行に情報を表示する方法です。表、リスト(アラートリスト)、ヒートマップ(ヒートマップ)など複数の方法をサポートしています。詳細は公式サイトで確認できます。
- 行: 行はダッシュボードの基本単位です。ダッシュボードには複数の行を含めることができます。 1 行には、システム メモリの使用状況、5 分間および 10 分間の平均 CPU 負荷など、1 種類の情報または複数の種類の情報の組み合わせを表示できます。そのため、1 つのダッシュボードに多くのコンテンツを表示できます。
【2】PromQL式の記述Prometheus データ ソースを選択し、[クエリ] を選択して PromQL を直接書き込みます。まず Prometheus で promql をデバッグし、それを貼り付けます。 # メモリ使用量 100 - ( ( node_memory_MemAvailable_bytes {インスタンス= "192.168.182.110:9100" 、ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {インスタンス= "192.168.182.110:9100" 、ジョブ= "prometheus" } ) 上記は 1 台のマシンのメモリのみを示しており、明らかに完璧ではありません。複数のマシンを表示する場合は、次のように表現できます。 # インスタンスを削除= "192.168.182.110:9100" 100 - ( ( node_memory_MemAvailable_bytes {ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {ジョブ= "prometheus" } )
# または複数のコピーを作成する 100 - ( ( node_memory_MemAvailable_bytes {インスタンス= "192.168.182.110:9100" 、ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {インスタンス= "192.168.182.110:9100" 、ジョブ= "prometheus" } ) 100 - ( ( node_memory_MemAvailable_bytes {インスタンス= "192.168.182.111:9100" 、ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {インスタンス= "192.168.182.111:9100" 、ジョブ= "prometheus" } ) 100 - ( ( node_memory_MemAvailable_bytes {インスタンス= "192.168.182.112:9100" 、ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {インスタンス= "192.168.182.112:9100" 、ジョブ= "prometheus" } ) 【3】変数の使い方明らかに、上記の方法はあまり良くありません。ここでは、変数を使用してインスタンスの数を動的に取得します。まず、Grafana のいくつかの機能を理解しましょう。 関数
| 効果
| label_values(ラベル)
| Promthues のすべての監視インジケーターのラベル名のすべてのオプション値を返します。
| label_values(メトリック、ラベル)
| すべての Promthues 監視インジケーターのラベル名のすべてのオプション値を返します。
| メトリック(メトリック)
| メトリック定義の正規表現を満たすすべてのメトリック名を返します。
| query_result(クエリ)
| プロメテウスクエリステートメントのクエリ結果を返します
|
パラメータの説明: 1. インスタンス - type: 変数の型。変数には多くの種類があります。クエリは、変数がクエリ ステートメントであることを意味します。タイプはカスタムまたはデータ ソースにすることができます。データ ソースとは、変数がデータ ソースを表すことを意味します。データソースの場合は、変数を使用してダッシュボード全体のデータソースを変更できます。変数タイプは、時間間隔、Interval などにもできます。ここでは、Query を選択します。
2. 一般事項 - 名前: 変数名。たとえば、ip という名前を付けました。この変数名を使用する必要がある場合は、$ip を使用して呼び出します。
- ラベル: 対応するドロップダウン ボックスの名前です。デフォルトは変数名なので、デフォルトを選択してください。
- 説明: 説明。
3. クエリオプション - データ ソース: 言うまでもなく、データ ソースです。
- クエリ: クエリ式。データ ソースが異なれば、クエリ式も異なります。
- Regex: キャプチャしたデータをフィルタリングするために使用される正規表現。デフォルトではフィルタリングは実行されません。
- 並べ替え: ドロップダウン ボックス内の変数値を並べ替えます。並べ替えの方法はたくさんあります。デフォルトでは無効になっており、クエリ結果はドロップダウン ボックスと同じ方法で表示されます。ここで無効を選択します。
- 更新: 変数の値をいつ更新するか。変数の値はデータ ソースをクエリすることで取得されますが、データ ソース自体も変更されるため、変数に対応するドロップダウン ボックスにデータ ソースの変更が表示されるように、変数の値を随時更新する必要があります。リフレッシュには選択できる値が 2 つあります。ダッシュボードの読み込み時: ダッシュボードが読み込まれると更新されます。時間範囲の変更時: 時間範囲が変更されたときに更新します。ここで、「ダッシュボードの読み込み時」を選択します。データ ソースが更新されると、現在のダッシュボードが更新され、変数値も更新されます。
4. 選択オプション - 複数値: この機能を有効にすると、変数に複数の値を選択できます。具体的には、変数に対応するドロップダウンボックスで複数の値の組み合わせを選択できます。
- すべてを含めるオプション: この機能を有効にすると、変数ドロップダウン ボックスにすべてオプションが表示されます。
- すべての値をカスタマイズ: 「すべてを含める」オプションを有効にすると、「すべての値をカスタマイズ」入力ボックスが表示され、すべてのオプションの値をカスタマイズできるようになります。 all オプションはデフォルトですべての値の組み合わせですが、カスタマイズすることもできます。
【ヒント】 結合値を選択することで複数の監視データを 1 つのパネルで表示できますが、異なる監視データの数値や形式が異なる場合があり、1 つのグラフ内で形式の互換性を保つことが難しく、問題が発生します。したがって、デフォルトではいずれも選択しないことをお勧めします。
式を次のように変更します。 100 - ( ( node_memory_MemAvailable_bytes {インスタンス= "$instance" 、ジョブ= "prometheus" } * 100 ) / node_memory_MemTotal_bytes {インスタンス= "$instance" 、ジョブ= "prometheus" } ) 2. MySQLデータソース SQLを直接記述してテーブル形式で表示できるので非常に便利です。ビッグデータの分野ではSQLが最も頻繁に使用されるため、チャート監視状況を表示するためにこの直接SQL方式を使用すると非常に便利です。 |