このハンズオンでは、Grafanaを使用してダッシュボードを作成する基本的なスキルを学びます。TestDataソースを使用して、様々なタイプのビジュアライゼーションを作成し、ダッシュボードをカスタマイズする方法を学びます。
このGrafanaハンズオンでは、Grafana Cloudの基本操作を学び、TestDataソースを活用してデータ可視化の基礎を習得します。ビジュアライゼーションの編集とアラート機能の設定を通じて、ダッシュボード構築の基礎を学びます。
- Grafana Cloudの基本的な操作とナビゲーション
- TestDataソースを使用したデータの可視化
- 複数のタイプのビジュアライゼーションの作成と設定
- ダッシュボードの構築とカスタマイズ
- 変数を用いた動的なダッシュボードの作成
- アラート機能の設定と通知の作成
本ハンズオンは、Grafana CloudのGrafana v11.4.0-78678
を対象としています。全てのハンズオンは、ブラウザで完結します。
自分が試したバージョンでは、?アイコンをクリックしてもバージョンが表示されなかったので、上で紹介されている以下のコマンドを実行しています。
curl your-grafana-cloud-url/api/health
今回のハンズオンでは、Grafana環境としてGrafana Cloudを利用します。ハンズオンの利用範囲では無料での利用が可能です。
Sign Up - Create User、アカウントを登録します。
作成するStack名とリージョン(特にこだわりがなければ、JapanでOK)を選択し、セットアップを完了します。
既にGrafana Cloudのアカウントをお持ちの方は、そのままサインインしてください。
ログイン直後、以下のようなeasy stepガイドが表示されたら、一旦なにもせずに、右上の「I'm already familiar with Grafana. Skip setup」をクリックしてください。
最初に、ハンズオンで必要となるGrafanaの基礎知識について解説します。今回は、以前G登壇したときの資料を元に、以下の部分を主に参考にしてもらえればと思います。
可視化プラットフォームGrafanaの基本と活用方法の全て - Speaker Deck
- Grafanaの概要
- Grafanaの基礎を理解する
Grafana Cloudへログイン後、作成したStackを選択し、[Manager your stack]一覧を表示。Grafanaの[Launch]をクリックし、Grafanaのホーム画面を表示します。
ハンズオンで利用するためのTestDataソースの設定を行います。
- 左側のメニューから[Connections]をクリック。
- [Add new connection]をクリック。
- 検索バーに
TestData
と入力して、TestDataを選択。右上の[Add new Datasource]をクリック。 - [Settings]の[Name]の内容はそのままにして、[Save & Test]をクリック。
Settingsタブが選択され設定画面が表示されます。そのままで大丈夫です。[Default]スイッチをオンにしておくと、今後Visualizationの追加時に常にこのデータソースが初期選択されるので、今回のハンズオン実施時は便利です。
TestDataソースには、Scenario
と呼ばれる、クエリエディタの代わりとなるパネル用にシミュレートする機能が存在します。このScenario
を利用することで、クエリエディタの文法を意識する前に、各種グラフの表現方法や機能を学ぶことができます。
TestDataソースについての詳細は、以下公式ドキュメントを参照。
Grafanaダッシュボードの構造は階層的になっており、以下のような関係性があります。最初にこの単語を改めて頭に入れておくと、入りが良いです。
-
Dashboard
- 複数のPanelを含む、データ可視化の中心的な要素です。
- 関連するデータを一つの画面にまとめて表示します。
-
Panel
- Dashboardの基本的な構成要素です。
- 以下の要素から構成されています: a. Query b. Transformation (オプション) c. Alert (オプション) d. Visualization
a. Query
- データソースからデータを取得するためのクエリを定義します。
- 各データソース固有のクエリ言語を使用します。
b. Transformation
- クエリの結果を可視化する前にデータを操作する機能です。
- 複数の変換を連続して適用することができます。
c. Alert
- パネルのデータに基づいてアラートルールを設定できます。
- すべての可視化タイプでサポートされているわけではありません。
d. Visualization
- データを視覚的に表現する方法を定義します。
- グラフ、テーブル、ヒートマップなど、様々な可視化オプションがあります。
この構造により、ユーザーは柔軟にデータを取得し、処理し、可視化することができます。Queryでデータを取得し、必要に応じてTransformationでデータを加工し、最終的にVisualizationで視覚化します。また、条件に応じてAlertを設定することで、重要なデータの変化を監視することができます。
- 左側のメニューから[Dashboards]を選択、[New]ボタンを展開し、[New dashboard]をクリック。
- [Add visualization]をクリック。
- [Seelect data source]で
grafana-testdata-datasource
を選択。 - Panelが表示されます。
- [Queries]タブの中の[Scenario]で
CSV Metric Values
を選択。 - 右上の[Save dashboard]ボタンをクリックし、Titleに
My First handson dashboard
と入力し、[Save]をクリック。 - [Back to dashboard]をクリックし、Dashboarsトップに遷移。
ここまでで、ひとまずダッシュボードの作成と保存が完了します。このあと、ダッシュボードのパネルを編集しながら、ダッシュボードの基本的な機能を確認していきます。
- 左側のメニューから[Dashboards]を選択。
- 先ほど作成した
My First handson dashboard
を選択。 - 作成したPanelが表示されているので、マウスオーバーし右上の[︙]を選択し、[Edit]をクリック。
以下のPanel Editorが表示されます。基本的なパネルの編集はここで行います。この状態で、右側のVisualizationsで[Time series]が選択されていることを確認してください。
Time seriesは、時系列のデータをグラフとして表示する、Grafanaダッシュボードにおいてデフォルトかつ重要なVisualizationです。時系列データを、線、点、棒形式で表示することができ、ほぼすべての時系列データを扱うことができます。
- グラフ下側、[Queries]タブが選択されていることを確認し、[Data source]に
grafana-test-data-datasource
を選択。 - Scenarioに
Random Walk
を選択し、時系列データを表示。
Random Walk
は時系列に無作為なデータが格納されているため、Time seriesのVisualizationを学ぶのに適しています。X軸に時間、Y軸に値が設定されています。一点注意点として、Random Walk
は、画面をRefreshするたびにデータ全体が入れ替わるので、その点は頭に入れておいてください。
時間範囲は、Panel上部の時間範囲セレクターを利用して設定可能。
また、グラフ内をマウスカーソルで範囲指定することで、特定範囲にズームすることもできます。
TestDataソースのRandom Walkは、かなり細かい時系列でデータが設定されているので、範囲を拡大したり縮小しながら、時間範囲指定の方法に慣れてください。
時間範囲セレクターの右側で、グラフの更新間隔を設定できます。
TestDataソースのRandom Walkは静的なデータではなく常に過去分含めて全データが更新されるため、更新間隔を指定することで、常に新しいデータを表示することが可能です。
- [Last 1 hour]を選択し、リアルタイムデータを観察。
- [Last 6 hours]に変更し、より長期のトレンドを確認。
- カスタム範囲を選択し、特定の期間のデータを表示。
この後、Panel内容を編集していきます。データの更新を停止したい場合は、Refreshをoffに設定しておいてください。
Visualizationの設定方法を学びます。以下に、Visualization設定の代表的な設定項目を記載しますが、これ以外にも直感的に編集できるものは多数あるので、まずは編集して見た目がどのように変わるか体験してみてください。
右側のVisualization選択箇所で、[Time series]が選択されていることを確認。
- [Graph styles]セクションを選択
- [Line width]を2に変更。
- [Fill opacity]を50に設定。
- [Point size]を5に設定し、データポイントを表示。
- グラフの内容が設定によって変更されていることを確認。
- [Standard options]セクションを選択
- [Unit]に
Misc
と入力し[percent (0-100)]に設定 - 縦軸の表示が、%表示になっていることを確認。
- [Unit]に
- [Legend]セクションを展開。
- [Visibility]を選択。
- [Mode]を[List]から[Table]に変更。
- [Placement]を[Bottom]から[Right]に変更。
- [Values]で[Min]、[Max]、[Last]をオン。
- [Axis]セクションを展開。
- [Placement]を[Auto]から[Left]に変更。
- [Label]に「ランダム値」と入力。
- [Scale]を[Linear]から[Logarithmic]に変更し、軸の目盛が対数軸に変更されることを観察。
- グラフ上でカーソルを動かし、Tooltipの動作を確認。
- 凡例の表示を確認し、各値の意味を理解。
- Y軸のラベルと目盛りの変化を観察。
ここまでで、代表的なVisualization設定内容を体験していただきました。どのVisualizationを使っても、ここには膨大な設定項目がありますが、共通で設定できるものも多いので、ここまでで体験した内容を他のVisualizationでも活かしてください。
結局は、触りまくって「慣れ」てもらうのが一番早いです。みていてもよくわからない設定項目は公式ドキュメントを参考にしてください。
Visualizations | Grafana documentation
グラフ上にしきい値となるラインを表示ししきい値に応じてスタイルを変更することで、しきい値を超えた値を直感的に把握できるようにします。
- [Thresholds]セクションを展開。
- [Add threshold]をクリック。
- 値を50に設定し、色を黄色に。
- もう一つ[Add threshold]をクリックし、値を70に設定、色を赤に。
- [Show thresholds]で[As lines]を選択。
- グラフ上でしきい値ラインの表示を確認。
このようにラインが表示されればOK。
もしラインが表示されない場合、以下を試してみてください。
- グラフのY軸の範囲設定:
- [Standard options]セクションで[Min]と[Max]の値を確認。
- しきい値がこの範囲内に収まっているか確認。
- データの範囲:
- 表示されているデータの値の範囲を確認。
- しきい値がデータの範囲内にあるか確認。
- パネルの再読み込み
- 設定後にパネルが正しく更新されていない可能性があるため、ダッシュボードの更新やパネルの再読み込みを試行。
- [Thresholds]セクションの[Mode]を[Absolute]から[Percentage]に変更。
- しきい値の値を適宜調整(例:50%と75%)。
- グラフ上でしきい値の変化を観察。
- [Thresholds]セクションの[Show thresholds]を[As lines]から[As filled regions and lines]に変更。
- グラフ上での表示の違いを確認。
- [Standard options]セクションを展開。
- [Color scheme]を[From thresholds(by value)]に変更。
- [Color series by]を変更しながら、グラフの色がしきい値に基づいて変化することを確認。
- グラフ上でデータの変動を観察し、しきい値との関係を確認。
- 必要に応じてしきい値の値や色を微調整。
- 異なるタイムレンジでグラフを表示し、しきい値の効果を確認。
- しきい値の視認性とグラフの全体的な見やすさのバランスを取る。
しきい値の設定はTime seriesでも利用可能ですが、Gaugeのような単一の値を表示するVisualizationなどでも利用可能です。基本のパネル編集の概念として覚えておきましょう。
同一グラフ上に複数のメトリクスを追加することで、それぞれのメトリクスの表示差分や統計情報を表示し、スタイルを変更します。
- パネル編集画面中央の[Queries]タブをクリック。
- 既存のクエリの下にある[Add query]ボタンをクリック。
- 新しいクエリ(B)が追加されたことを確認。
- クエリBのScenarioドロップダウンから[Random Walk]を選択。
- [Alias]フィールドに「Second Metric」と入力。
- [Series count]を1に設定。
- [Start value]を50に設定。
- クエリAの[Alias]を「First Metric」に変更。
- クエリAの[Start value]を25に設定。
- 両方のクエリの[Min]をnone、[Max]を100に設定。
ここまでで、2つの異なる線がグラフに表示されていることを確認。
- [Legend]セクションを展開。
- [Mode]を[Table]に設定。
- [Placement]を[Bottom]に設定。
- [Values]で[Min]、[Max]、[Total]、[Mean]をオン。
- [Standard options]セクションを展開。
- [Color scheme]を[From thresholds(by value)]に変更。
- [Thresholds]を追加し、メトリクスの色の変化を確認。
このようなイメージになるかと思います。
- [Tooltip]セクションを展開。
- [Tooltip mode]を[All]に設定。
- [Sort order]を[Descending]に設定。
- グラフ上でマウスを動かし、両方のメトリクスの値を比較。
- 凡例の情報を確認し、各メトリクスの統計値を比較。
- ダッシュボード上部の時間範囲セレクターを使用。
- 異なる時間範囲で2つのメトリクスの挙動を観察。
Transformationsは、ダッシュボードを視覚化する前に、クエリが返したデータを操作する強力な方法です。Transformationsを利用すると、以下のことが可能になります。
- フィールド名の変更
- 時系列/SQLのようなデータの結合
- クエリ間での数学的操作の実行
- 変換後の出力を別の変換の入力として利用
じデータセットの複数のビューに依存しているユーザーにとって、変換は多数のダッシュボードを作成および管理する効率的な方法を提供します。
変換されたデータをグラフ化できないことがあります。そのような場合は、パネル編集画面の上にあるテーブルビューのトグルをクリックして、データのテーブルビューに切り替えることで、変換結果を確認し理解するのに役立ちます。
- [Transformations]タブをクリック。
- [Add another transformation]ボタンをクリック。
- [Reduce]を選択。
- [Calculations]から[Max]、[Min]、[Mean]、[First]を選択。
- Visualizationから[Stat]選択。
- Reduceで選択した値が表示されていることを確認。
Time seriesは基本的に時系列データの表示に利用するので、単一値を複数表示するときはStatやGaugeを利用します。
確認が終わったら、VisualizationをTime seriesに戻して、追加したTransformationsを削除してください。
- [Transformations]タブをクリック。
- [Add transformation]ボタンをクリック。
- [Limit]を選択。
- 値を200に設定。
- グラフのデータポイントが横に制限されることを確認。
- Transformationを削除して範囲制限を元に戻す。
ここまでが基本的なTransformationの使い方になります。ここからさきは計算式を利用したTransformationを表示します。
- ダッシュボード選択画面で[Add -> Visualization]をクリック。
- [Queries]で[Random Walk]を選択し1つ目のメトリクスを追加
- 下にある[Add query]ボタンをクリック。
- 新しいクエリ(B)が追加されたことを確認。
- [Start value]を50に設定。
- 2つのメトリクスが表示されていることを確認
この後、Transformationsを追加します。
- [Add transformation]をクリック。
- [Add field from calculation]を選択。
- [Mode]を[Binary operation]に設定。
- 左側を[A-series]、中央の[Operation]を[+]、右側を[B-series]に設定
- [Alias]に「Sum Value」と入力。
- A-seriesとB-seriesの合計が折れ線グラフで表示されていることを確認
また、以下の操作で、A-seriesとB-seriesの平均を表示します。
- [Add transformation]をクリック。
- [Add field from calculation]を選択。
- [Mode]を[Reduce row]に設定。
- [Operation]を[A-series]と[B-series]を選択。
- [Calculation]を「Mean」と入力。
- A-seriesとB-seriesの平均が折れ線グラフで表示されていることを確認
時系列ではないデータを利用して、他のTransformationの機能を試してみます。
- 新しいダッシュボードを作成し、パネルを追加。
- データソースは選択不要なのでスキップ。
- Scenarioで[CSV Content]を選択。
- [Content]に以下のCSVデータを入力:
Time,Category,Value
2023-01-01 00:00:00,A,10
2023-01-01 01:00:00,B,20
2023-01-01 02:00:00,A,15
2023-01-01 03:00:00,C,30
2023-01-01 04:00:00,B,25
2023-01-01 05:00:00,A,12
2023-01-01 06:00:00,C,35
- Visualizationで[Bar chart]を選択
以下のような画面が表示されることを確認。
- [Transformations]タブをクリック。
- [Add transformation]ボタンをクリック。
- [Sort by]を選択。
- [Sort by]フィールドで[Value]を選択。
- データが値が降順に並べ替えられたことを確認。
- [Reverse]ボタンをクリック。
- データが値が昇順に並べ替えられたことを確認。
- [Add transformation]をクリック。
- [Group By]を選択。
- [Category]フィールドで[Group by]を選択。
- [Value]フィールドで[Calculate]を選択、Total, Min, Max, Meanを入力。
- Category単位で、Valueがそれぞれ集計されて表示されていることを確認。
Transformationsの設定内容も含めて、このようなイメージになっていればOKです。
- これまでに適用したTransformationの順序を確認。
- ドラッグ&ドロップで変換の順序を変更(例:グループ化を先に行い、その後で並べ替え)。
- 各ステップでの変換の効果を観察。
- [Add transformation]をクリック。
- [Filter data by values]を選択。
- [Filter type]で[Exclude]を選択。
- [Conditions]で[Match all]を設定。
- [Add condition]をクリック。
- [Field]に[Category]
- [Match]に[Is equal]
- [Value]に[A]
上記により、カテゴリーがAに等しいデータをExclude(除外)します。結果として、グラフ上でCategoryがAのデータが非表示になっていれば想定通りです。
- 右側の[Visualizations]の横にある[Suggestions]タブをクリック。
- 現在のデータソースで利用できるVisualizationsがイメージ表示されるので、異なるVisualizationsを選択して、表示データを確認。
Grafanaを利用していると、Queryを設定してもダッシュボードに何も表示されないことがよくあります。これは、Queryで取得されたデータがそのVisualizationに対応していないために起こる事象なのですが、このSuggestions機能を利用することで、そのデータを利用して表示できるVisualizationsがひと目で把握可能なので、迷ったときはすぐにこちらを確認することをオススメします。
Grafanaの「変数」機能について。
Grafanaの変数機能を利用することで、より柔軟なダッシュボードを作成できます。変数を使用することで、ユーザーはダッシュボードの内容を対話的に変更でき、同じダッシュボードで異なるデータセットやシナリオを簡単に探索できるようになります。
変数の主な利点:
- 再利用性:一つのダッシュボードで複数のデータソース、サーバー、メトリクスを表示できます。
- インタラクティブ性:ユーザーはドロップダウンメニューやその他の入力方法を通じて、表示するデータを動的に選択できます。
- 効率性:複数の類似したダッシュボードを作成する代わりに、変数を使用して1つのダッシュボードをカスタマイズできます。
- 一貫性:変数を使用することで、ダッシュボード全体で一貫したデータ選択を確保できます。
- テンプレート化:ダッシュボードのタイトルやパネルの説明に変数を使用して、コンテキストに応じた情報を提供できます。
このハンズオンでは、様々なタイプの変数(カスタム、クエリ、間隔など)の作成方法、それらをクエリやダッシュボード設定に組み込む方法、そして変数を使って動的でインタラクティブなダッシュボードを作成する方法を学びます。
- Dashboardsを開き、右上の[Edit]をクリックした後に[Settings]をクリック。
- [Variables]タブを選択。
- [Add variable]ボタンをクリック。
- 以下の設定を行う:
- Select variable type: [Custom]
- Name:
metric
- Label:
[Select Metric]
- Custom options:
cpu,memory,disk
- [Back to list]をクリックし、[Save dashboard]で、変数を保存する。
ここまでで、簡単な変数の作成は完了です。この変数を利用して、グラフのタイトルを変更します。
- 新しいパネルを追加。
- データソースとして[TestData DB]を選択。
- Scenarioで[Random Walk]を選択。
- [Alias]フィールドに
$metric
を入力。 - ダッシュボード上部のドロップダウンに
[Select Metric]
が表示されていることを確認。 - ドロップダウンを選択することで、グラフの凡例(Alias)にドロップダウンで選択したValueが明記されていることを確認。
このように、あらかじめ定義していた変数は、ダッシュボードのクエリ設定時に$変数名
で利用することが可能です。
データの変換と処理(応用)で利用したCSVデータを利用して、TransformationsのFilterを利用して、変数でCategory(A or B or C)をフィルタできるように設定する。
Introduction to Alerting | Grafana documentation
次の図では、Grafana Alerting の概要を説明し、Grafana Alerting の動作原理となる基本的な機能のいくつかを紹介します。
出典: Introduction to Alerting | Grafana documentation
基本的な動作原理は以下の通り。
- Grafana Alertingは定期的にデータソースに問い合わせ、アラートルールで定義された条件を評価
- 条件に違反した場合、アラートインスタンスが発火
- 発火した(および解決された)アラートインスタンスは、コンタクトポイントに直接、またはより柔軟に通知ポリシーを通じて、通知のために送信
Grafanaのアラートを理解するための基礎用語を紹介します。簡単にこちらの内容を頭に入れておいてください。
-
Alert rules
- アラートルールは、監視したい条件を定義します。具体的には以下の要素で構成されます
- クエリ:データソースから特定のメトリクスを取得する
- 条件:メトリクスが特定のしきい値を超えた場合にアラートをトリガーする
- 評価間隔:どの程度の頻度でルールを評価するか
- 持続時間:条件が満たされた状態が続く必要がある時間
例:「CPU使用率が5分間連続で80%を超えた場合にアラートを発生させる」
-
Alert instances
- 各アラートルールは複数のアラートインスタンス(アラートとも呼ばれる)を生成することができます。これは、1つの式で複数の時系列を観察できるため、非常に強力な機能です。
- アラート・ルールは頻繁に評価され、それに応じてアラート・インスタンスの状態が更新されます。発火または解決状態にあるアラート・インスタンスのみが通知で送信されます。
-
Contact points
- コンタクトポイントは、通知メッセージと通知の送信先を決定します。
- 例えば、メールアドレス、Slack、Grafana OnCallやPagerdutyなどのインシデント管理システム (IRM) 、または Webhookなどがあります。
-
Notification policies
- Notification policiesは、大規模システムのアラート通知を処理する柔軟な方法を提供します。
- Notification policiesは、ラベルマッチングによってアラートをコンタクトポイントにルーティングします。
ハンズオンですが、公式で紹介されているTutorialが非常によくできているので、こちらを参考に進めてください。
Get started with Grafana Alerting - Part 1 | Grafana Labs
- チュートリアル実施時のポイント
- はっきり言って、Alert rulesの設定は初見の人にはだいぶ難しいです。
- Grafana Cloudを利用している場合は、そのまま、Create a contact pointから始めてください。
- contact pointにはWebhook.siteという、Webフックを受信できるURL作成サイトを利用します。
- このハンズオンで想定しているGrafana Cloudの環境では、このチュートリアルのUIと完全に一致していました。落ち着いて進めてください。
- もし時間に余裕があれば、以下のPart 2も進めてください。Alert instancesやNotification policiesについて学ぶことができます。
以下の条件を満たすアラートを実装してください。
- 既存のcontact pointにEメール送信先を設定して、作成したアラートルールからWebフックと同時にEメールにも通知を飛ばすよう設定する。
- アラートルールのデータソースにTestDataソースのRandom Walkを指定し、Valueの平均値が50を超えた時にアラートルールが発泡するように設定する。
お疲れさまでした。ここまでで、基本的なダッシュボードのVisualizationについて手を動かして学ぶことができたかと思います。
今後に向けて、以下の部分をより深ぼってみるのをオススメします。
今回ハンズオンで紹介した以外にも、Grafanaには多数のVisualizationsが用意されています。
Visualizations | Grafana documentation
データソースを設定後、VisualizationsのSuggestionsをクリックすることで、他の表示形式を一覧で見ることができるので、その中から新しい表現方法を見て刺激をうけてみると、アイディアが刺激されて捗ることうけあいです。
サイドバーの[Apps] -> [Demo Data Dashboards]のクリックで、ビルトインのダッシュボードDemoをダッシュボードインストールすることができます。
より実践的なデータソースに紐づくVisualizationsの方式を多数見ることができます。初学者がいきなりこのDemoをみてもよくわからないことになりがちですが、ここまでのハンズオンで基礎を押さえておけば、より深ぼった学習ができるはずです。
Getting Started with Grafana Play - Examples - Dashboards - Grafana
Grafana PlayはGrafana Cloud上で動作する、Grafana学習用のサンドボックス環境です。自由に編集できるダッシュボードが多数用意されているので、ダッシュボードの一覧を眺めダッシュボードを編集しながらGrafanaのユースケースを掴むのにうってつけです。
Data sources | Grafana documentation
ここまでで、ダッシュボードの可視化部分の基礎はつかめたと思うので、実際に業務で利用しているデータソースを繋いで、クエリを書いてダッシュボードを構築してみましょう。
サイドバーの[Connections] -> [Add new connection]で、活用できるデータソースを探索し、まずは繋いで見るところから始めてみるのも面白いと思います。