Amazon Managed Grafana でダッシュボードを構築する際、クエリ作成に苦労していませんか? 複雑なクエリを書こうとすると、構文を覚えたり、条件指定がうまくいかず試行錯誤を繰り返したりと、手間がかかってしまうことがあります。
クエリを手で書くのは大変
Amazon CloudWatch Logs のログデータを Amazon Managed Grafana で可視化するにあたり、 複数条件の組合せを考えたり、大量のログデータから目的のログ抽出構文に悩んだり、クエリ作成の複雑さが課題となることがあります。例えば、特定エラーメッセージの抽出や特定条件によるアクセス数集計などは、慣れないと時間がかかります。もっと簡単にクエリを作成する方法があれば、Grafana ダッシュボード作成の効率が大幅に向上すると思いませんか?
もう悩まない!クエリジェネレータで簡単クエリ作成
Amazon CloudWatch Logs Insights クエリジェネレータは、複雑なクエリ作成を簡素化します。マニュアルでクエリ構文を調べたり、試行錯誤を繰り返したりする必要がなく、ダッシュボードを迅速に作成できます。この効率的な方法により、オブザーバビリティを高め、システムの状態をより深く理解することが可能です。さらに、Amazon Managed Grafana のようなオープンソースマネージドサービスと組み合わせることで、より高度な可視化と分析を実現できます。
画像引用:https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AmazonCloudWatch_0330_v1.pdf
Amazon CloudWatch Logs Insightsとは?
Amazon CloudWatch Logs Insightsは、大量のログデータをインタラクティブに分析し、クエリを実行できるサービスです。ログデータから特定のパターンや傾向を特定し、迅速なトラブルシューティングやパフォーマンス分析を可能にします。クエリ言語を使用して、ログデータのフィルタリング、集計、ソート、統計計算などを行うことができます。また、検出したログイベントをグラフ化して視覚的に分析することも可能です。これにより、システムの挙動をより深く理解し、隠れた問題を迅速に発見することができます。
そもそもオブザーバビリティとは?
オブザーバビリティとは、システムの内部状態を外部から観察可能なデータ(ログ出力等)により把握する能力のことです。ログ、メトリクス、トレースの3つの柱を組み合わせることで、システムの挙動を詳細に分析し、問題発生時の迅速な対応やパフォーマンスの最適化が可能になります。CloudWatch Logs Insightsは、ログ分析を通じてオブザーバビリティを高めるための重要なツールです。効果的にログを分析することで、システムの健全性をより深く理解し、潜在的な問題を早期に発見することができます。
画像引用:https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AmazonCloudWatch_0330_v1.pdf
オブザーバビリティはなぜ必要なの?
近年、分散システムやマイクロサービスアーキテクチャの増加により、従来の監視手法では、頻繁にデプロイが繰り返され変化するシステムの全体像を把握し、問題発生の原因究明に至るまで時間がかかります。このような状況下で、オブザーバビリティの度合いを高める事で、システムの健全性を維持し、信頼性を向上させるために不可欠な要素となっています。
Amazon Managed Grafana により様々なデータソースからメトリクス、ログ、トレースを集約し、可視化することが容易になります。これにより、システムの全体像を把握し、オブザーバビリティを向上させることができます。
監視(モニタリング)とオブザーバビリティは何が違うの?
監視(モニタリング)は、システムの各種ログや指標をリアルタイムで監視し、あらかじめ設定した閾値を超えるなど異常を検知することを目的とします。一方、オブザーバビリティは、システム全体の状態を観測しながら可視化し、可視化した情報から予期せぬ問題の発見やアプリケーション要求に対する応答遅延の原因究明など、システムの動作を深く理解することに主眼を置いています。つまり、監視は「何かしらの閾値、特定条件を満たしたエラー」を検知するのに対し、オブザーバビリティは「なぜエラーとなったのか」を理解することに重点が置かれています。
監視(モニタリング) | オブザーバビリティ | |
目的 | 異常の早期発見と対応 | 問題の原因究明に関する分析 |
対象 | 決められた指標 | システム全体、複数要素、複数ログデータ |
例 | 特定の閾値を超過したらアラート | webサイトの応答が遅い原因を分析し特定する |
Amazon Cloudwatch Logs クエリジェネレータによるクエリの自動生成
Amazon CloudWatch Logs クエリジェネレータのプロンプトに自然言語により条件を入力、実行することでクエリを簡単に自動生成できます。 この方法により、下記マニュアルのクエリ構文を読み込み、試行錯誤しながらクエリを修正する手間を省略できます。但し、条件が複雑なクエリは自然言語のプロンプト入力に工夫が必要となる場合もあります。
クエリの自動生成
まず、Amazon Cloudwatch のログのインサイトをクリックします。
次に、クエリの対象範囲としたいロググループを選択し、Query generatorをクリックします。この時点ではデフォルトでサンプルクエリがセットされています。
プロンプト入力画面が開くので、どのようなクエリを自動生成してほしいのか条件等を入力し、新しいクエリを生成をクリックします。
成功すると、以下のようにクエリが自動生成されるので(デフォルトのサンプルクエリは自動更新される)、クエリの実行をクリックします。
クエリの実行結果確認
クエリの実行が完了し、期待する検索結果となっていることを確認します。もし期待値ではない場合は、プロンプト入力欄でクエリを再生成します。
Amazon Managed Grafanaでダッシュボード構築
Grafana ワークスペース新規作成
ダッシュボード構築を始めるにあたり、ワークスペースの作成を行います。ワークスペースは Grafana インスタンスの論理的な分離単位で、ユーザー、データソース、ダッシュボード、アラート設定などを含む独立した環境です。ワークスペースごとに異なるアクセス権限を設定し、異なるプロジェクトや部門に分けて管理する事ができます。
Grafanaダッシュボード機能概要
Grafana ダッシュボードは複数のデータソースからのデータ統合、クエリエディタによるデータ取得のカスタマイズ、visualization に対するアラートの追加、ドラッグ&ドロップによるレイアウト調整、開発・本番環境毎に別ダッシュボード管理など複数環境に対応できます。
Grafana に関する詳しい説明はこちら
Grafana ダッシュボード新規作成
それでは、前章で自動生成したクエリを使って Grafana にダッシュボードを追加します。
Grafana ワークスペースを作成した際に発行された URL よりログイン、左ペインより Dashboards をクリックし、次に NEW ボタンをクリックします。
Add visualization をクリックすると Select data source 画面に遷移するので、Grafana でダッシュボードに追加したいデータソースを指定します。
追加可能なデータソース一覧はこちら
Grafana ダッシュボードにパネル追加
新規ダッシュボードにパネルを追加します。まずは、赤枠で表示されているデータソースを変更し、今回は Amazon Cloudwatch Logs を指定します。
前章でコピーしたクエリを赤枠部分にペーストします。今回は表形式のパネルとしてダッシュボードに追加したいので、右メニューの Visualizations より Table に切り替え、最後に Run queries をクリックします。
Amazon Cloudwatch Logs Insights で試したクエリ構文が正しく実行され、5つのカラムが表示されています。このパネルをダッシュボードに保存したいので、右上のApplyをクリックします。
上記の流れを繰り返すと以下のようなダッシュボードが作成できます。
料金について
2024年12月時点では以下となるようです。
Amazon Cloudwatch Logs Insights:スキャンしたデータ 0.0076USD/1GB
Amazon Managed Grafana:Editorライセンス 9USD/1ユーザ Viewerライセンス 5USD/1ユーザ
さいごに
Amazon Managed Grafana でダッシュボード構築に苦労している方は、Amazon Cloudwatch Logs Insights クエリジェネレータで簡単にクエリを生成し、各種パネルを効率的に作成できます。オブザーバビリティを高め、複雑なシステムの障害原因分析の効率化を実現するために、この方法を試してみてはいかがでしょうか。