Grafana でメトリクスを可視化する:データソース、パネル、コミュニティのダッシュボード
Grafana を Prometheus に接続し、1 つのパネルをゼロから作り、すべてを手作業で作る代わりに、既製のコミュニティダッシュボードをインポートします。
Prometheus はメトリクスを保存してクエリするもので、日々それを見る場所になることを意図したものではありません。Grafana は、それと最も一般的に組み合わされるダッシュボードのレイヤーです。このガイドでは、両者を接続し、内部で何が起きているかを理解するために 1 つのパネルを手作業で作り、その後、すべてをゼロから作る代わりに、コミュニティのダッシュボードをインポートします。これが、実際の Grafana の使い方のほとんどです。
Prometheus をデータソースとして追加する
# docker-compose.yml (前のガイドのスタックに追加)
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
docker compose up -d の後、http://localhost:3000 を開き、デフォルトの admin / admin でログインします(変更を求められます)。Connections → Data sources → Add new data source でデータソースを追加し、Prometheus を選び、その URL を http://prometheus:9090 に設定します。これは前のガイドの Compose サービス名で、Grafana と Prometheus は同じ Docker ネットワークを共有しているためです。保存してテストします。接続に成功すれば、その上に何かを構築する前に、Grafana が Prometheus に到達できることが確認できます。
1 つのパネルを手作業で作る
新しいダッシュボードを作成し、ビジュアライゼーションを追加して、Prometheus のデータソースを選択します。PromQL を直接入力する代わりに、Grafana のクエリビルダーを使うと、フィールドごとにクエリを構築でき、クエリが実際に何をしているかを学ぶ妥当な方法になります。
- メトリクス:
node_cpu_seconds_totalを選択します。 - ラベルフィルター:
mode != "idle"を追加します。idle モードの CPU 時間は、可視化したい部分ではないからです。node_exporter のインスタンスが 1 つだけなら、jobとinstanceのラベルは何も区別せず、省略できます。複数のホストを監視するようになると重要になります。 - Grafana は、このような counter にはレート関数を適用する必要があると促します。
rate()(またはirate()。ただし PromQL のガイドで説明したとおり、デフォルトとしてはrate()のほうが安定しています)に切り替え、1mのような時間枠を指定します。 - Options で、凡例を Auto からカスタム形式の
{{mode}}に変更します。そうすると、結果の線が、完全で繰り返しの多いラベルセットの代わりに、system、user、iowaitなどとラベル付けされます。
パネルに名前を付けて保存し、ダッシュボードに追加します。ビルダーの下には、Grafana が構築した実際の PromQL を表示する Code ビューがあります。一度確認する価値があります。いずれビルダーを使わずに、クエリを直接書けるようになるからです。
2 つ目のパネル:式からのディスク使用量
すべてのパネルが、単一のメトリクスから来るわけではありません。いくつかを組み合わせるものもあります。
node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}
これは、合計サイズから空きバイトを引いて、ルートファイルシステムで実際に使われているバイト数を計算します。一時的な、あるいは仮想のファイルシステムが結果を乱さないよう、ルートのマウントポイントに絞り込んでいます。ビルダーでフィールドごとに構築しようとするのではなく、パネルの Code ビューに直接貼り付けてください。2 つのメトリクス間の演算を伴うものは、通常、ビルダーでクリックするより書くほうが速いです。
ゼロから作る代わりに、コミュニティのダッシュボードをインポートする
すべてのパネルを手作業で作る方法は、追跡する価値のあるメトリクスが数十になるとスケールしません。一般的な exporter については、他の誰かがほぼ確実に、すでに包括的なダッシュボードを作って公開しています。Grafana のダッシュボードライブラリは exporter 名で検索でき、各ダッシュボードには数値の ID があります。
- 使っている exporter(
node exporter、cadvisor)でライブラリを検索し、評価が高く、最近更新されたものを選びます。 - ダッシュボードの ID をコピーします。
- Grafana で Dashboards → New → Import に進み、ID を貼り付けて読み込みます。
- 求められたら Prometheus のデータソースを選択して、インポートします。
これで、CPU、メモリ、スワップ、ディスク I/O、ネットワークエラー、稼働時間などの、完全で事前構築されたパネルのセットが、各パネルを手作業で作ることなく手に入ります。PromQL を学ぶ本当に有用な方法でもあります。インポートしたパネルのエディターを開いて、よく理解しているメトリクスに対して使われているクエリを読んでみてください。ドキュメントを単独で読むより、分かりやすいことがよくあります。
そこからカスタマイズする
インポートしたダッシュボードは出発点であり、最終的な答えではありません。すべてのパネルは完全に編集可能です。ラベルフィルターを調整し、ビジュアライゼーションの種類を変更し、しきい値や色を調整し、不要なパネルを削除します。インポートは、変更せずにそのまま使うか避けるかのどちらかではなく、そこから外へ向かって構築していく足場として扱ってください。
人気のガイド
-
Prometheus のアーキテクチャと pull モデル Prometheus が受信ではなくスクレイプする理由と、ターゲット、exporter、サービスディスカバリーがどう組み合わさるか。 -
Prometheus のデータモデル:メトリクス、ラベル、メトリクスの種類 Prometheus における時系列とは実際に何か、そしてターゲットがそれを公開するプレーンテキスト形式。 -
PromQL をはじめる:選択、レート、集約 単純なメトリクスのセレクターから、実際のクエリまで段階的に組み立てます。パスごとのエラー率を、ライブで計算します。 -
node_exporter と cAdvisor でホストとコンテナを監視する Prometheus、node_exporter、cAdvisor を一緒に実行し、両方をスクレイプして、ターゲットが正常であることを確認します。