この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
CloudWatch ダッシュボードは、カスタマイズ可能なホームページです。CloudWatchダッシュボードを使用して異なるリージョンにまたがっているリソースでも、1 つのビューでモニタリングできます。ダッシュボードでリソースのメトリクスおよびアラームを表示することができます。
この記事では、CDKを使用してLambda関数のCloudWatch Dashboardを作成してみました。ここで、次のダッシュボードウィジェットを作成しました。
- Text Widget : ダッシュボードにテキストを表示するために使用できます。
- Graph Widget : メトリックのグラフを表示するために使用できます。
- LogQuery Widget : CloudWatchログの表示に使用できます。
やってみた
CDKアプリの作成
CDKをインストールする
- 次のコマンドを使用してCDKをインストールしておきます。
npm install aws-cdk-lib
CDKアプリを作成する
- 新しいディレクトリを作成しておきます。
- CDKは、プロジェクトディレクトリの名前に基づいてソースファイルとクラスに名前を付けます。
#create new directory
mkdir cloudwatch-dashboard
cd cloudwatch-dashboard
- cdk initコマンドを使用してアプリを初期化しておきます。
cdk init --language typescript
Lambda関数の作成
- プロジェクトのメインディレクトリにresourcesディレクトリを作成しておきます。
mkdir resources
- resourcesディレクトリに次のPythonファイルを作成しておきます。[resources/lambda-handler.py]
def handler(event, context):
if (event['status']=='success'):
return {
'statusCode': 200,
'body': "SUCCESS"
}
else:
raise Exception("Error")
AWS サービスの作成
- 新しいファイル [lib/index.ts] を作成して、作成する必要のあるAWSサービスを定義しておきます。
- ファイルに次のAWSサービスを定義しておきます。
- Lambda 関数: PythonランタイムでLambda関数を定義しておきます。
- CloudWatch Dashboard : 次のウィジェットでダッシュボードを定義しておきます。
- Text Widget : ダッシュボードのタイトルを表示します。
- Graph Widget : メトリックのグラフを表示します。 次のメトリックのグラフを作成しました。
- Invocations
- Errors
- LogQuery Widget : 最後の10のログエントリを表示します。
import { Construct } from 'constructs';
import { Runtime, Function, AssetCode } from 'aws-cdk-lib/aws-lambda';
import { StackProps} from 'aws-cdk-lib';
import { Dashboard, TextWidget, GraphWidget,LogQueryWidget } from 'aws-cdk-lib/aws-cloudwatch';
export class cloudwatchDashboardStack extends Construct {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id);
//Create Lambda Function
const lambdaFunction = new Function(this, "cloudwatchDashboardStack", {
code: new AssetCode("resources"),
handler: "lambda-handler.handler",
runtime: Runtime.PYTHON_3_9,
functionName: "cloudwatch-Dashboard"
});
//Create CloudWatch Dashboard
const dashboard = new Dashboard(this, 'dashboard', {
dashboardName: 'LambdaDashboard',
});
//Create Title with Text Widget
dashboard.addWidgets(new TextWidget({
markdown: '# Lambda CloudWatch Dashboard',
height: 2,
width: 20
}));
//Create Metrics Graph with Graph Widget
dashboard.addWidgets(new GraphWidget({
title: "Invocations",
left: [lambdaFunction.metricInvocations()],
width: 20
}))
dashboard.addWidgets(new GraphWidget({
title: "Errors",
right: [lambdaFunction.metricErrors()],
width: 20
}))
//Create Widget to show Log Entries
dashboard.addWidgets(new LogQueryWidget({
logGroupNames: [lambdaFunction.logGroup.logGroupName],
queryLines:[
"fields @timestamp, @message",
"limit 10"],
width: 20,
}))
}
}
アプリにサービスを追加する
- /lib/cloudwatch-dashboard-stack.ts ファイルに次のコードを追加しておきます。
#Import the Index file created in the previous step
import * as cw from '../lib/index';
new cw.cloudwatchDashboardStack(this, 'cloudwatch-Dashboard');
CDK Deploy
- Deploy する前に、環境をブートストラップする必要があります。
- 次のコマンドを実行して、AWS環境をブートストラップしておきます。
cdk bootstrap
- CDKを展開しておきます。
cdk deploy
テストする
- コンソールでは、サービスが作成されたことを見ることができます。
Lambda Function
CloudWatch Dashboard
- ラムダ関数をテストして、メトリックとログを生成しておきます。
- ダッシュボードに表示されるグラフとログを見ることができます。
まとめ
CDKを使用してLambda関数のCloudWatch Dashboardを作成してみました。いろいろな種類のウィジェットで、他のリソースのダッシュボードを作成することができます。
Reference :