본문 바로가기

Cloud-computing/AWS

[AWS]통합 CloudWatch 에이전트를 사용하여 CloudWatch Logs 시작하기

CloudWatch 에이전트와 함께 사용하기 위한 IAM 역할 및 사용자 생성

EC2 인스턴스에서 CloudWatch 에이전트를 실행하는 데 필요한 IAM 역할을 생성

Role 추가

권한 추가

CloudWatchAgentServerPolicy

CloudWatchAgentServerRole

 

Agent Download and Install

공통

IAM Role 연결

  • 위에서 생성한 Role을 EC2에 연결

Windows

Install

# Install CloudWatch Agent
<https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi>

# PowerShell with Administrator
msiexec /i [경로]/amazon-cloudwatch-agent.msi

CloudWatch 에이전트 구성 마법사 실행

  • 이때 생성한 file을 여러 EC2에서 사용 가능 (with SSM)
cd "C:\\Program Files\\Amazon\\AmazonCloudWatchAgent"
.\\amazon-cloudwatch-agent-config-wizard.exe

{
	"logs": {
		"logs_collected": {
			"files": {
				"collect_list": [
					{
						"file_path": "C:\\\\Users\\\\Administrator\\\\Desktop\\\\logs",
						"log_group_name": "Security.evtx",
						"log_stream_name": "{instance_id}",
						"retention_in_days": 7
					}
				]
			},
			"windows_events": {
				"collect_list": [
					{
						"event_format": "xml",
						"event_levels": [
							"VERBOSE",
							"INFORMATION",
							"WARNING",
							"ERROR",
							"CRITICAL"
						],
						"event_name": "Security",
						"log_group_name": "Security",
						"log_stream_name": "{instance_id}",
						"retention_in_days": 7
					}
				]
			}
		}
	},
	"metrics": {
		"aggregation_dimensions": [
			[
				"InstanceId"
			]
		],
		"append_dimensions": {
			"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
			"ImageId": "${aws:ImageId}",
			"InstanceId": "${aws:InstanceId}",
			"InstanceType": "${aws:InstanceType}"
		},
		"metrics_collected": {
			"LogicalDisk": {
				"measurement": [
					"% Free Space"
				],
				"metrics_collection_interval": 60,
				"resources": [
					"*"
				]
			},
			"Memory": {
				"measurement": [
					"% Committed Bytes In Use"
				],
				"metrics_collection_interval": 60
			}
		}
	}
}
  • 로그 모니터링의 경우 log files과 Windows event log 두 개로 나뉜다

Start Agent

& "C:\\Program Files\\Amazon\\AmazonCloudWatchAgent\\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:.\\config.json

CentOS

Install

# CentOS
wget <https://s3.amazonaws.com/amazoncloudwatch-agent/centos/amd64/latest/amazon-cloudwatch-agent.rpm>
sudo rpm -U ./amazon-cloudwatch-agent.rpm

# Amazon Linux 2
sudo yum install amazon-cloudwatch-agent

CloudWatch 에이전트 구성 마법사 실행

  • 이때 생성한 file을 여러 EC2에서 사용 가능 (with SSM)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "cwagent"
        },
        "logs": {
                "logs_collected": {
                        "files": {
                                "collect_list": [
                                        {
                                                "file_path": "/var/log/secure",
                                                "log_group_name": "secure",
                                                "log_stream_name": "{instance_id}",
                                                "retention_in_days": 7
                                        }
                                ]
                        }
                }
        },
        "metrics": {
                "aggregation_dimensions": [
                        [
                                "InstanceId"
                        ]
                ],
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "disk": {
                                "measurement": [
                                        "used_percent"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}

Start Agent

# config 적용
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
# start
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start

수집확인

대상 - CentOS 7

/var/log/secure

AWS 로그 그룹

실제 CentOS

대상 - Windows 2019

Windows Logs security

AWS 로그 그룹

실제 Windows Logs

비용

수집(데이터 수집)	GB당 0.76 USD
스토어(아카이브)	GB당 0.0314 USD
분석(Logs Insights 쿼리)	스캔한 데이터 GB당 0.0076 USD

S3 비용 참고

S3 Standard - 모든 데이터 유형에 적합한 범용 스토리지로, 대개 자주 액세스하는 데이터에 사용됨	
처음 50TB/월	GB당 0.025 USD
다음 450TB/월	GB당 0.024 USD
500TB 초과/월	GB당 0.023 USD

특이사항

cwagent로 실행시 해당 로그 파일 권한 확인

usermod -G wheel cwagent

참고 문서

[1] https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html

[2] Agent 설치 https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html

[3] Agent 설치 마법사 https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html

[4] 에이전트가 수집하는 지표 https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

[5] CloudWatch Logs Insights를 사용한 로그 분석 https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/AnalyzingLogData.html