From c0b97019f81e5ee455802833cb9a00e1b8d9a9cc Mon Sep 17 00:00:00 2001 From: AndreyMarchuk Date: Tue, 23 Oct 2018 22:41:37 +0000 Subject: [PATCH 1/5] use amazon linux 2 AMI for ECS (if none specified) --- workflows/environment_upsert.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/environment_upsert.go b/workflows/environment_upsert.go index 5d8cf39a..c3e6af2a 100644 --- a/workflows/environment_upsert.go +++ b/workflows/environment_upsert.go @@ -10,7 +10,7 @@ import ( ) var ecsImageOwner = "amazon" -var ecsImagePattern = "amzn-ami-*-amazon-ecs-optimized" +var ecsImagePattern = "amzn2-ami-ecs-hvm-*-x86_64-ebs" var eksImageOwner = "602401143452" var eksImagePattern = "amazon-eks-node-v*" var ec2ImageOwner = "amazon" From 36f8880023ca687ac35bb186202be1eae599f7b6 Mon Sep 17 00:00:00 2001 From: AndreyMarchuk Date: Thu, 25 Oct 2018 05:16:54 +0000 Subject: [PATCH 2/5] switch to new cloudwatch agent for logs --- templates/assets/cloudformation/env-ecs.yml | 208 ++++++++++++++------ 1 file changed, 146 insertions(+), 62 deletions(-) diff --git a/templates/assets/cloudformation/env-ecs.yml b/templates/assets/cloudformation/env-ecs.yml index 2095dd49..a5719b0b 100644 --- a/templates/assets/cloudformation/env-ecs.yml +++ b/templates/assets/cloudformation/env-ecs.yml @@ -262,29 +262,33 @@ Resources: amazonLinux: packages: yum: - awslogs: [] jq: [] - aws-cli: [] - files: - "/etc/awslogs/awscli.conf": - content: !Sub | - [plugins] - cwlogs = cwlogs - [default] - region = ${AWS::Region} + awscli: [] + # files: + # "/etc/awslogs/awscli.conf": + # content: !Sub | + # [plugins] + # cwlogs = cwlogs + # [default] + # region = ${AWS::Region} commands: 01_configure_ssm_agent: command: !Sub | #!/bin/bash sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm + 02_configure_cloudwatch_agent: + command: !Sub | + #!/bin/bash + sudo yum install -y https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm + sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s services: sysvinit: - awslogs: - enabled: 'true' - ensureRunning: 'true' - files: - - "/etc/awslogs/awslogs.conf" - - "/etc/awslogs/etc/proxy.conf" + # awslogs: + # enabled: 'true' + # ensureRunning: 'true' + # files: + # - "/etc/awslogs/awslogs.conf" + # - "/etc/awslogs/etc/proxy.conf" cfn-hup: enabled: 'true' ensureRunning: 'true' @@ -308,61 +312,141 @@ Resources: path=Resources.ContainerInstances.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource ContainerInstances --configsets ${ImageOsType} --region ${AWS::Region} runas=root - "/etc/awslogs/etc/proxy.conf": - content: !Sub | - HTTP_PROXY=http://${HttpProxy}/ - HTTPS_PROXY=http://${HttpProxy}/ - "/etc/awslogs/awscli.conf": - content: !Sub | - [plugins] - cwlogs = cwlogs - [default] - region = ${AWS::Region} - "/etc/awslogs/awslogs.conf": + "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json": content: !Sub | - [general] - state_file = /var/lib/awslogs/agent-state + { + "agent": { + "metrics_collection_interval": 10, + "region": "${AWS::Region}", + "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log" + }, + "logs": { + "logs_collected": { + "files": { + "collect_list": [ + { + "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/cloudwatch-agent/{instance_id}", + "timezone": "UTC" + }, + { + "file_path": "/var/log/dmesg", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/dmesg/{instance_id}", + "timezone": "UTC" + }, + { + "file_path": "/var/log/messages", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/messages/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%b %d %H:%M:%S" + }, + { + "file_path": "/var/log/docker", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/docker/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%Y-%m-%dT%H:%M:%S." + }, + { + "file_path": "/var/log/ecs/*", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/ecs/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%Y-%m-%dT%H:%M:%SZ" + }, + { + "file_path": "/var/log/cloud-init*", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/cloud-init/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%Y-%m-%dT%H:%M:%SZ" + }, + { + "file_path": "/var/log/cfn-init*", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/cfn-init/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%Y-%m-%d %H:%M:%S" + }, + { + "file_path": "/var/log/amazon/ssm/*", + "log_group_name": "${AWS::StackName}", + "log_stream_name": "instance/ssm/{instance_id}", + "timezone": "UTC", + "timestamp_format": "%Y-%m-%d %H:%M:%S" + } + ] + } + }, + "log_stream_name": "instance/other/{instance_id}" + } + } + # "/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml": + # content: !Sub | + # # todo: add proxy config + # [proxy] + # http_proxy = "{http_url}" + # https_proxy = "{https_url}" + # no_proxy = "{domain}" + + # "/etc/awslogs/etc/proxy.conf": + # content: !Sub | + # HTTP_PROXY=http://${HttpProxy}/ + # HTTPS_PROXY=http://${HttpProxy}/ + # "/etc/awslogs/awscli.conf": + # content: !Sub | + # [plugins] + # cwlogs = cwlogs + # [default] + # region = ${AWS::Region} + # "/etc/awslogs/awslogs.conf": + # content: !Sub | + # [general] + # state_file = /var/lib/awslogs/agent-state - [dmesg] - file = /var/log/dmesg - log_group_name = ${AWS::StackName} - log_stream_name = instance/dmesg/{instance_id} + # [dmesg] + # file = /var/log/dmesg + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/dmesg/{instance_id} - [messages] - file = /var/log/messages - log_group_name = ${AWS::StackName} - log_stream_name = instance/messages/{instance_id} - datetime_format = %b %d %H:%M:%S + # [messages] + # file = /var/log/messages + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/messages/{instance_id} + # datetime_format = %b %d %H:%M:%S - [docker] - file = /var/log/docker - log_group_name = ${AWS::StackName} - log_stream_name = instance/docker/{instance_id} - datetime_format = %Y-%m-%dT%H:%M:%S.%f + # [docker] + # file = /var/log/docker + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/docker/{instance_id} + # datetime_format = %Y-%m-%dT%H:%M:%S.%f - [ecs] - file = /var/log/ecs/* - log_group_name = ${AWS::StackName} - log_stream_name = instance/ecs/{instance_id} - datetime_format = %Y-%m-%dT%H:%M:%SZ + # [ecs] + # file = /var/log/ecs/* + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/ecs/{instance_id} + # datetime_format = %Y-%m-%dT%H:%M:%SZ - [cloud-init] - file = /var/log/cloud-init* - log_group_name = ${AWS::StackName} - log_stream_name = instance/cloud-init/{instance_id} - datetime_format = %Y-%m-%dT%H:%M:%SZ + # [cloud-init] + # file = /var/log/cloud-init* + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/cloud-init/{instance_id} + # datetime_format = %Y-%m-%dT%H:%M:%SZ - [cfn-init] - file = /var/log/cfn-init* - log_group_name = ${AWS::StackName} - log_stream_name = instance/cfn-init/{instance_id} - datetime_format = %Y-%m-%d %H:%M:%S + # [cfn-init] + # file = /var/log/cfn-init* + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/cfn-init/{instance_id} + # datetime_format = %Y-%m-%d %H:%M:%S - [ssm] - file = /var/log/amazon/ssm/* - log_group_name = ${AWS::StackName} - log_stream_name = instance/ssm/{instance_id} - datetime_format = %Y-%m-%d %H:%M:%S + # [ssm] + # file = /var/log/amazon/ssm/* + # log_group_name = ${AWS::StackName} + # log_stream_name = instance/ssm/{instance_id} + # datetime_format = %Y-%m-%d %H:%M:%S commands: 01_add_instance_to_cluster: From d8e97f29ae16c0f0b4e9b6332097cc2cf9da68b1 Mon Sep 17 00:00:00 2001 From: AndreyMarchuk Date: Thu, 25 Oct 2018 05:44:35 +0000 Subject: [PATCH 3/5] typo fix --- templates/assets/cloudformation/env-ecs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/assets/cloudformation/env-ecs.yml b/templates/assets/cloudformation/env-ecs.yml index a5719b0b..1be52c13 100644 --- a/templates/assets/cloudformation/env-ecs.yml +++ b/templates/assets/cloudformation/env-ecs.yml @@ -348,7 +348,7 @@ Resources: "log_group_name": "${AWS::StackName}", "log_stream_name": "instance/docker/{instance_id}", "timezone": "UTC", - "timestamp_format": "%Y-%m-%dT%H:%M:%S." + "timestamp_format": "%Y-%m-%dT%H:%M:%S" }, { "file_path": "/var/log/ecs/*", From 062ed801098e011ebedad5b00bde15d9ba2eca85 Mon Sep 17 00:00:00 2001 From: AndreyMarchuk Date: Tue, 12 Feb 2019 04:10:26 +0000 Subject: [PATCH 4/5] clean commented code --- templates/assets/cloudformation/env-ecs.yml | 71 +-------------------- 1 file changed, 1 insertion(+), 70 deletions(-) diff --git a/templates/assets/cloudformation/env-ecs.yml b/templates/assets/cloudformation/env-ecs.yml index 1be52c13..92189352 100644 --- a/templates/assets/cloudformation/env-ecs.yml +++ b/templates/assets/cloudformation/env-ecs.yml @@ -283,12 +283,6 @@ Resources: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s services: sysvinit: - # awslogs: - # enabled: 'true' - # ensureRunning: 'true' - # files: - # - "/etc/awslogs/awslogs.conf" - # - "/etc/awslogs/etc/proxy.conf" cfn-hup: enabled: 'true' ensureRunning: 'true' @@ -384,70 +378,7 @@ Resources: "log_stream_name": "instance/other/{instance_id}" } } - # "/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml": - # content: !Sub | - # # todo: add proxy config - # [proxy] - # http_proxy = "{http_url}" - # https_proxy = "{https_url}" - # no_proxy = "{domain}" - - # "/etc/awslogs/etc/proxy.conf": - # content: !Sub | - # HTTP_PROXY=http://${HttpProxy}/ - # HTTPS_PROXY=http://${HttpProxy}/ - # "/etc/awslogs/awscli.conf": - # content: !Sub | - # [plugins] - # cwlogs = cwlogs - # [default] - # region = ${AWS::Region} - # "/etc/awslogs/awslogs.conf": - # content: !Sub | - # [general] - # state_file = /var/lib/awslogs/agent-state - - # [dmesg] - # file = /var/log/dmesg - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/dmesg/{instance_id} - - # [messages] - # file = /var/log/messages - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/messages/{instance_id} - # datetime_format = %b %d %H:%M:%S - - # [docker] - # file = /var/log/docker - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/docker/{instance_id} - # datetime_format = %Y-%m-%dT%H:%M:%S.%f - - # [ecs] - # file = /var/log/ecs/* - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/ecs/{instance_id} - # datetime_format = %Y-%m-%dT%H:%M:%SZ - - # [cloud-init] - # file = /var/log/cloud-init* - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/cloud-init/{instance_id} - # datetime_format = %Y-%m-%dT%H:%M:%SZ - - # [cfn-init] - # file = /var/log/cfn-init* - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/cfn-init/{instance_id} - # datetime_format = %Y-%m-%d %H:%M:%S - - # [ssm] - # file = /var/log/amazon/ssm/* - # log_group_name = ${AWS::StackName} - # log_stream_name = instance/ssm/{instance_id} - # datetime_format = %Y-%m-%d %H:%M:%S - + commands: 01_add_instance_to_cluster: command: !Sub | From 7ad64b2ff2a208548d79bf704c0e3ed560e63faf Mon Sep 17 00:00:00 2001 From: AndreyMarchuk Date: Tue, 12 Feb 2019 04:11:20 +0000 Subject: [PATCH 5/5] clean commented code --- templates/assets/cloudformation/env-ecs.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/templates/assets/cloudformation/env-ecs.yml b/templates/assets/cloudformation/env-ecs.yml index 92189352..0b7da8ac 100644 --- a/templates/assets/cloudformation/env-ecs.yml +++ b/templates/assets/cloudformation/env-ecs.yml @@ -264,13 +264,6 @@ Resources: yum: jq: [] awscli: [] - # files: - # "/etc/awslogs/awscli.conf": - # content: !Sub | - # [plugins] - # cwlogs = cwlogs - # [default] - # region = ${AWS::Region} commands: 01_configure_ssm_agent: command: !Sub |