CloudWatchとはAWSで提供されているモニタリングサービス
カスタムメトリクスという機能を利用することで、モニタリングを統合できる
– セットアップ不要で使用できる
– 異常な状態を検知して、自動復旧
– メトリクスに応じてアラート通知やアクションを設定できる
– 監視対象はEC2, EBSなど
### CloudWatchのサービス
「CloudWatch」: CPU, メモリなどを監視。メール、再起動、AutoScaleなどできる
「CloudWatch Logs」: 各種ログ
「CloudWatch Events」: APIイベントをトリガーにアクションを実行
AWSTemplateFormatVersion: "2010-09-09"
Description:
VPCFlowLogs Settings
Metadata:
"AWS::CloudFormation::Interface":
ParameterGroups:
- Label:
default: "Project Name Prefix"
Parameters:
- PJPrefix
- Label:
default: "VPCFlowLogs Configuration (Destination Type is CloudWatchLogs)"
Parameters:
- Filter
- RetentionInDays
# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:
PJPrefix:
Type: String
Filter:
Type: String
Default: ALL
AllowedValues: [ ALL, ACCEPT, REJECT ]
RetentionInDays:
AllowedValues: [ 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653 ]
Type: Number
Default: 30
Resources:
# ------------------------------------------------------------#
# IAM Role for VPCFlowLogs
# ------------------------------------------------------------#
# VPCFlowLogsIAMRole:
VPCFlowLogsIAMRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: !Sub "${PJPrefix}-vpcflowlogs-role"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service:
- "vpc-flow-logs.amazonaws.com"
Action:
- "sts:AssumeRole"
Policies:
- PolicyName: !Sub "${PJPrefix}-vpcflowlogs-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- "logs:CreateLogGroup"
- "logs:CreateLogStream"
- "logs:PutLogEvents"
- "logs:DescribeLogGroups"
- "logs:DescribeLogStreams"
Resource: "*"
# ------------------------------------------------------------#
# LogGroup
# ------------------------------------------------------------#
LogGroup:
Type: "AWS::Logs::LogGroup"
Properties:
LogGroupName: !Sub "${PJPrefix}-vpcflowlogs-group"
RetentionInDays: !Ref RetentionInDays
# ------------------------------------------------------------#
# VPCFlowLogs
# ------------------------------------------------------------#
VPCFlowLogs:
Type: "AWS::EC2::FlowLog"
Properties:
DeliverLogsPermissionArn: !GetAtt VPCFlowLogsIAMRole.Arn
LogGroupName: !Ref LogGroup
ResourceId: { "Fn::ImportValue": !Sub "${PJPrefix}-vpc" }
ResourceType: "VPC"
TrafficType: !Ref Filter
# ------------------------------------------------------------#
# Output Parameters
# ------------------------------------------------------------#
Outputs:
#LogGroup
LogGroupName:
Value: !Sub "${PJPrefix}-vpcflowlogs-group"
Export:
Name: !Sub "${PJPrefix}-vpcflowlogs-group-name"
LogGroupARN:
Value: !GetAtt LogGroup.Arn
Export:
Name: !Sub "${PJPrefix}-vpcflowlogs-group-arn"
なるほど、監視はmakerelではなく、cloudwatchを使うのね。