この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
AWSチームのすずきです。
AWSの複数リソースの稼働確認に役立つCloudWatchダッシュボード、 CloudFormationで設置を試みる機会がありましたので、紹介させて頂きます。
手順
全設定
- CloudWatchダッシュボードの設定情報、「ダッシュボードの編集」を利用してJSON形式で取得する事が可能です。
- 「Copy souce」した結果を「source.json」として保存しました。
個別設定
- グラフの編集画面から、各グラフ単位の設定を確認する事も可能です。
ソート
- JSONの設定と表示順序を一致させ、再利用性を向上するため「jq」コマンドを利用してソートを行いました。
cat source.json | jq '.widgets' | jq 'sort_by(.y)'
CloudFormationテンプレート作成
- エクスポートしたJSON、CloudFormationの「DashboardBody」として利用する事が可能です。
AWSTemplateFormatVersion: '2010-09-09'
Description: Dashboard for monitoring LoadBalancer RequestCount
Resources:
DashboardSideBySide:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardBody: !Sub |
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 2,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[
"AWS/ApplicationELB",
"RequestCount",
"LoadBalancer",
"app/aaaaaaaa/aaaaaaaa",
"AvailabilityZone",
"ap-northeast-1a",
{
"period": 300,
"stat": "Sum"
}
]
],
"view": "timeSeries",
"stacked": true,
"region": "ap-northeast-1",
"period": 300
}
}
]
}
- 監視対象のリソース、CloudFormationのパラメータとする事で再利用性を高めました。
Parameters:
AlbLoadBalancer:
Description: AlbLoadBalancer
Type: String
Default: app/aaaaaaaa/aaaaaaaa
Resources:
DashboardSideBySide:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardBody: !Sub |
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 2,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[
"AWS/ApplicationELB",
"RequestCount",
"LoadBalancer",
"${AlbLoadBalancer}",
"AvailabilityZone",
"ap-northeast-1a",
{
"period": 300,
"stat": "Sum"
}
]
],
"view": "timeSeries",
"stacked": true,
"region": "ap-northeast-1",
"period": 300
}
}
]
}
利用例
- cloudwatch-dashboard-for-ec2autoscale.yaml
- ELB、AutoScallingGroup、RDS、EC2の情報をCloudFormationのパラメータとして指定する事で、以下の記事で紹介したCloudWatchダッシュボードを再現する事ができました。
まとめ
CloudFormationを利用してCloudWatchダッシュボードを管理することで、グラフ項目、単位などの揺れの抑制や効率的な管理が可能になります。 LAMP構成など、類似のシステムが多数存在する環境ではぜひお試しください。
テンプレート
今回の検証、以下のCloudFormationテンプレートを利用しました。