LoginSignup
0
0

cwa

Posted at
AWSTemplateFormatVersion: '2010-09-09'
Description: CloudFormation template to create endpoints for CloudWatch Agent within an existing VPC and a single subnet with specific private IP addresses.

Parameters:
  SubnetId:
    Type: String
    Default: subnet-05cf58c7b070975c8
    Description: The ID of the existing subnet
  PrivateIp1:
    Type: String
    Default: 10.0.1.120
    Description: The private IP address for the first endpoint
  PrivateIp2:
    Type: String
    Default: 10.0.1.121
    Description: The private IP address for the second endpoint

Resources:
  # Create a security group to allow access for CloudWatch Agent
  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow access for CloudWatch Agent
      VpcId: vpc-xxx # Fixed VPC ID
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
        - IpProtocol: tcp
          FromPort: 443
          ToPort: 443
          CidrIp: 0.0.0.0/0
      Tags:
        - Key: Name
          Value: MySecurityGroup

  # Create the first Network Interface with a specific private IP address
  NetworkInterface1:
    Type: AWS::EC2::NetworkInterface
    Properties:
      SubnetId: !Ref SubnetId
      PrivateIpAddress: !Ref PrivateIp1
      GroupSet:
        - !Ref MySecurityGroup
      Tags:
        - Key: Name
          Value: NetworkInterface1

  # Create the second Network Interface with a specific private IP address
  NetworkInterface2:
    Type: AWS::EC2::NetworkInterface
    Properties:
      SubnetId: !Ref SubnetId
      PrivateIpAddress: !Ref PrivateIp2
      GroupSet:
        - !Ref MySecurityGroup
      Tags:
        - Key: Name
          Value: NetworkInterface2

  # Create the CloudWatch Monitoring endpoint
  CloudWatchMonitoringEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Sub com.amazonaws.${AWS::Region}.monitoring
      VpcId: vpc-xxx # Fixed VPC ID
      SubnetIds:
        - !Ref SubnetId
      SecurityGroupIds:
        - !Ref MySecurityGroup
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      NetworkInterfaceIds:
        - !Ref NetworkInterface1

  # Create the CloudWatch Logs endpoint
  CloudWatchLogsEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Sub com.amazonaws.${AWS::Region}.logs
      VpcId: vpc-xxx # Fixed VPC ID
      SubnetIds:
        - !Ref SubnetId
      SecurityGroupIds:
        - !Ref MySecurityGroup
      VpcEndpointType: Interface
      PrivateDnsEnabled: true
      NetworkInterfaceIds:
        - !Ref NetworkInterface2

Outputs:
  SecurityGroupId:
    Description: The security group ID
    Value: !Ref MySecurityGroup

  CloudWatchMonitoringEndpointId:
    Description: The CloudWatch monitoring endpoint ID
    Value: !Ref CloudWatchMonitoringEndpoint

  CloudWatchLogsEndpointId:
    Description: The CloudWatch logs endpoint ID
    Value: !Ref CloudWatchLogsEndpoint

  NetworkInterface1Id:
    Description: The first network interface ID
    Value: !Ref NetworkInterface1

  NetworkInterface2Id:
    Description: The second network interface ID
    Value: !Ref NetworkInterface2


{
    "agent": {
        "run_as_user": "root"
    },
    "metrics": {
        "namespace": "CWAgent",
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "cpu": {
                "measurement": [
                    "cpu_usage_idle",
                    "cpu_usage_iowait",
                    "cpu_usage_user",
                    "cpu_usage_system"
                ],
                "totalcpu": true,
                "metrics_collection_interval": 60
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/messages",
                        "log_group_name": "messages",
                        "log_stream_name": "{instance_id}"
                    },
                    {
                        "file_path": "/var/log/syslog",
                        "log_group_name": "syslog",
                        "log_stream_name": "{instance_id}"
                    }
                ]
            }
        }
    },
    "endpoint_override": {
        "monitoring": "10.0.1.120",
        "logs": "10.0.1.121"
    }
}

0
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
0
0