はじめに
この記事は、ミロゴス Advent Calendar 2022 15日目の記事です。
CloudWatch Dashboardを作成する方法をまとめました。
Amazon CloudWatchとは
Amazon CloudWatch は、Amazon Web Services (AWS) リソースと、AWS で実行されているアプリケーションをリアルタイムでモニタリングします。CloudWatch を使用してメトリクスを収集し、追跡できます。メトリクスとは、リソースやアプリケーションに関して測定できる変数です。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html
Amazon CloudWatch Dashboardとは
Amazon CloudWatch ダッシュボードは、CloudWatch コンソールにあるカスタマイズ可能なホームページであり、ダッシュボードを使用すれば、異なるリージョンにまたがっているリソースでも、1 つのビューでモニタリングできます。CloudWatch ダッシュボードを使用して、AWS リソースのメトリクスおよびアラームをカスタマイズした状態で表示することができます。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html
Amazon CloudWatch Metricsとは
メトリクスとは、システムのパフォーマンスに関するデータです。デフォルトでは、多くのサービスはリソース (Amazon EC2 インスタンス、Amazon EBS ボリューム、Amazon RDS DB インスタンスなど) に対して無料のメトリクスを提供しています。また、Amazon EC2 インスタンスなど一部のリソースの詳細モニタリングを有効にしたり、独自のアプリケーションメトリクスを発行したりできます。Amazon CloudWatch は、検索、グラフ表示、アラームに備えて、アカウント内のすべてのメトリクス (AWS リソースメトリクスと、お使いのアプリケーションメトリクスの両方) をロードすることができます。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/working_with_metrics.html
環境
cdk version
2.45.0
python version
3.9.6
実装の流れ
AWS CDK
使用したCDKは以下になります。
from aws_cdk import (
aws_cloudwatch as cloudwatch,
Duration as duration,
)
Widget
最初にダッシュボードに表示するためのウィジェットを作成します。
ウィジェットには複数の種類があるため実際に使用した一部を紹介します。
- GraphWidget
グラフが表示されるウィジェット
https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_cloudwatch/GraphWidget.html
grap_widget = cloudwatch.GraphWidget(
title="タイトル",
height=6,
width=6,
stacked=False,
statistic="Sum",
period=duration.seconds(60),
left=[
cloudwatch.Metric(
metric_name="メトリクス名",
),
]
)
- SingleValueWidget
数値が表示されるウィジェット
https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_cloudwatch/SingleValueWidget.html
single_value_widget = cloudwatch.SingleValueWidget(
title="タイトル",
height=6,
width=6,
metrics=[
cloudwatch.Metric(
metric_name="メトリクス名",
),
]
)
指定した期間中に Query、Scanまたは ExecuteStatement (選択) オペレーションによって返される項目の数
- LogQueryWidget
クエリー結果を表示するウィジェット
https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_cloudwatch/LogQueryWidget.html
log_query_widget = cloudwatch.LogQueryWidget(
title="タイトル",
height=6,
width=6,
log_group_names=["my-log-group"],
view=cloudwatch.LogQueryVisualizationType.TABLE,
query_lines=[
# Logs Insightsのクエリ構文を記載
],
)
Dashboard
最後に、ダッシュボードを作成します。
引数のwidgetsには作成したウィジェットをセットすることで表示することができます。
https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_cloudwatch/Dashboard.html
cloudwatch.Dashboard(
self,
"MyDashboard",
dashboard_name="dashboardName",
period_override=cloudwatch.PeriodOverride.AUTO,
start="start",
widgets=[
[grap_widget, single_value_widget, log_query_widget]
]
)
おわりに
CloudWatch Dashboardを画面から作成する場合、プロジェクトごとに新しく作り直す必要がありますが
CDKで作成すればプログラムを流用できるというメリットがあるため、非常に便利だと感じました。