【クラウドネイティブ】Grafana入門と実践運用

【クラウドネイティブ】Grafana入門と実践運用

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方式を使用すると非常に便利です。

<<:  Kubernetes でのパケットのトレース

>>:  エッジ コンピューティングとクラウド コンピューティング: 主な違いは何ですか?

推薦する

arebz -peer1データセンター/中国最適化回線/無制限トラフィック/年間支払い189元から

peer1 データセンターは、中国では多くの人から中級から高級のデータセンターと見なされています。国...

Googleに対するドメインの信頼性を向上させるいくつかの簡単な方法

読者の皆様は、ドメイン名の信頼性に対する Google の要件がますます厳しくなり、過剰なレベルにま...

Baidu K-stationを一括してご利用になる場合は、ウェブサイトのコンテンツ構成にご注意ください。

7月2日、百度は公式発表を行い、6月22日と28日にサイトを大量に削除した主な理由を説明した。ユーザ...

量子コンピューティング、機械学習など、注目すべき 6 つのクラウド コンピューティングのトレンド

近年、社内の効率性とビジネス範囲を改善するために、クラウド上でビジネスをホストする企業が増えています...

pq.hostingはどうですか?スウェーデンのVPSレビュー、データ共有

pq.hostingはどうですか? pq.hosting スウェーデン VPS はいかがでしょうか?...

機密情報ネットワークの宣伝手法の解明

今日のインターネットの急速な発展に伴い、さまざまなオンラインマーケティングプロモーション方法があり、...

IoT とエッジ コンピューティングの将来はどうなるのでしょうか?

モノのインターネットとエッジコンピューティングは、将来の技術開発に関する議論において長い間注目されて...

SEOは決して死なない、外部リンク運用提案の新時代

数年前までは、外部リンクは SEO に大きな影響を与えていました。当時は、ウェブサイトを構築した後、...

AVICカルチャーのIPOの夢は打ち砕かれた:CCTVへの依存度が高まっていると非難される

AVICカルチャーのIPOの夢は打ち砕かれたAVIC CultureはIPO審査会議を通過した後も、...

電子商取引は終焉を迎え、実店舗の好調な時代が再び到来するのでしょうか?

[[211677]] 最近、盛京ネットワークグループは「新小売、新産業パターンの再構築」をテーマにし...

RackNerd: 米国の建国記念日、米国 VPS は年間 11.38 ドルから、複数のデータ センターが利用可能

Racknerd は、米国建国記念日 (7 月 4 日、独立記念日) に合わせて、年間 11.38 ...

レビューサイトは、肯定的なレビューを獲得するためにアカウントを増やすために商人が利用しており、完全な業界チェーンを形成しています。

都市住民にとって、さまざまな口コミサイトは徐々に人々の衣食住や交通を導く「道標」となってきた。消費者...

インターネット上のトラフィックの40%以上が偽物

2週間前、国内マーケティング業界で大きな出来事が起こりました。甲社がWeiboのトップトラフィックエ...

クラウドへの複数のパス

現在でもクラウド コンピューティングについては多くの誤解や誤解が残っています。この混乱により、多くの...