5
0

More than 1 year has passed since last update.

[AWS CDK]CDKからCloudWatch Dashboardを作成する方法

Last updated at Posted at 2022-12-14

はじめに

この記事は、ミロゴス 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

最初にダッシュボードに表示するためのウィジェットを作成します。
ウィジェットには複数の種類があるため実際に使用した一部を紹介します。

cdk_stack.py
grap_widget = cloudwatch.GraphWidget(
    title="タイトル",
    height=6,
    width=6,
    stacked=False,
    statistic="Sum",
    period=duration.seconds(60),
    left=[
        cloudwatch.Metric(
            metric_name="メトリクス名",
        ),
    ]
)

Lambdaの関数コードが呼び出された回数
スクリーンショット 2022-12-09 18.12.25.png

cdk_stack.py
single_value_widget = cloudwatch.SingleValueWidget(
    title="タイトル",
    height=6,
    width=6,
    metrics=[
        cloudwatch.Metric(
            metric_name="メトリクス名",
        ),
    ]
)

指定した期間中に Query、Scanまたは ExecuteStatement (選択) オペレーションによって返される項目の数
スクリーンショット 2022-12-09 18.34.22.png

cdk_stack.py
log_query_widget = cloudwatch.LogQueryWidget(
    title="タイトル",
    height=6,
    width=6,
    log_group_names=["my-log-group"],
    view=cloudwatch.LogQueryVisualizationType.TABLE,
    query_lines=[
        #  Logs Insightsのクエリ構文を記載
    ],
)

ロググループに対するクエリの実行結果を出力
スクリーンショット 2022-12-09 19.50.45.png

Dashboard

最後に、ダッシュボードを作成します。
引数のwidgetsには作成したウィジェットをセットすることで表示することができます。
https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_cloudwatch/Dashboard.html

cdk_stack.py
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で作成すればプログラムを流用できるというメリットがあるため、非常に便利だと感じました。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0