AWS CloudWatch 란?

1. Amazon CloudWatch 란?

Amazon CloudWatch는 애플리케이션 모니터링, 성능 관리, 리소스 최적화, 운영 인사이트 제공에 특화된 서비스입니다. CloudWatch를 통해 AWS 리소스 전반에 걸친 데이터를 수집하여 시스템 성능을 종합적으로 파악할 수 있습니다. 이를 통해 사용자는 경보를 설정하고, 변화에 자동으로 대응하며, 운영 상태를 통합적으로 모니터링할 수 있습니다.

Amazon CloudWatch는 Amazon Simple Notification Service(Amazon SNS), Amazon EC2 Auto Scaling,AWS Identity and Access Management(IAM) 등과 함께 사용될 수 있으며 Grafana, Splunk등 다양한 서드파티 서비스들과의 통합을 지원합니다.

2.Amazon CloudWatch 지표를 게시하는 서비스

Amazon Athena, Amazon Aurora, AWS CloudTrail, CloudWatch 에이전트, AWS Elastic Beanstalk, Amazon Elastic Container Service, Amazon Elastic File System, Amazon RDS , Elastic Load Balancing, Amazon EC2 등 대부분의 AWS 서비스들은 Amazon CloudWatch에 지표를 게시합니다.

CloudWatch 지표는 네트워크 모니터링과 인프라 모니터링을 포함하여 AWS 서비스의 상태와 성능을 효과적으로 가시화합니다.

(RDS CloudWatch 지표 수집 및 가시화의 예시)

3.Amazon CloudWatch agent란?

CloudWatch Agent는 Amazon EC2 인스턴스 내부의 시스템 수준 지표를 수집할 수 있도록 해주는 도구입니다. Ec2의 경우 기본적으로 CloudWatch에 모니터링 할 수 있도록 지표를 수집하고 게시하지만, 게시하는 지표는 한정적입니다.

예를 들어 NetworkOut, NetWorkIn, DISKReadOps, CpuUtilization등은 기본적으로 CloudWatch 에서 수집하여 지표로 게시하지만 , cpu_usage_active, disk_free, diskio_io_time, mem_used, netstat_tcp_closing 등 세부적인 지표는 수집하지 않습니다. 따라서 이러한 세부지표를 모니터링, 그리고 CloudWatch log를 게시하기 위해서는 CloudWatch agent 가 필요합니다.

4.Amazon CloudWatch log란?

Amazon CloudWatch Logs는 Amazon EC2 인스턴스, Route 53, 및 기타 소스에서 생성된 로그 파일을 모니터링하고 저장하며, AWS CloudTrail 로그에도 접근할 수 있도록 도와줍니다. 이를 통해 EC2 내부 로그를 CloudWatch에 게시하고, AWS의 SQS, SNS 등 다양한 서비스와 연결할 수 있습니다. 또한, 서드파티 도구인 Grafana, Splunk 등과 연동하여 모니터링할 수 있습니다.

5.Amazon CloudWatch log with windows syslog 실습

Windows Syslog(Windows System Log는 Windows 운영 체제에서 시스템 이벤트와 활동을 기록하는 로그 파일입니다. 간단하게 Window syslog를 CloudWatch agent를 통해 CloudWatch에 게시하는 실습을 진행하겠습니다.

목차는 다음과 같습니다.

  1. Window 인스턴스 시작 및 사전 준비
  2. IAM role 생성 및 연결
  3. CloudWatch Agent 설치(Powershell) 및 실행
  4. 검증

1. Window 인스턴스 시작 및 사전준비

  • 실습환경은 Windows_Server-2022-English-Full-Base-2024.05.15 AMI로 진행합니다.
  • Ec2에서 RDP 접속을 위해 3389 포트의 보안 그룹을 열어야합니다.
  • RDP를 통해 window 인스턴스에 접속합니다.

2. IAM role 생성 및 연결

CloudWatch를 사용할 수 있도록 Iam role을 생성합니다. 권한 정책은 CloudWatchAgentServerPolicy로 설정합니다.

이후 인스턴스에 ec2 role을 연결합니다.

→ ec2 → 작업 → 보안 → Iam 역할 수정 → 이미 만들어 놓은 Role을 추가합니다.

3. CloudWatch Agent 설치(Powershell) 및 실행

Invoke-WebRequest -Uri "https://amazoncloudwatch-agent.s3.amazonaws.com/windows/amd64/latest/amazon-cloudwatch-agent.msi" -OutFile "C:\Users\Administrator\amazon-cloudwatch-agent.msi"
msiexec /i amazon-cloudwatch-agent.msi
cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
.\amazon-cloudwatch-agent-config-wizard.exe

이후 CloudWatch agent config wizard가 실행되며 관련 설정 선택을 진행합니다.

  • window os 선택
  • ec2선택
  • memory,cpu설정이 필요하다면 필요에 따라 선택

standard option 선택

Log 관련 설정

  • customized log files → 필요에 따라 yes
  • 원하는 로그 파일을 경로를 입력하면서 추가 → ex). cloudWatch agent log의 경우 C:\ProgramData\Amazon\AmazonCloudWatchAgent\logs\amazon-cloudwatch-agent.log
  • retention day 추가(option)

Window event log

  • Do you want to monitor any window event log ->yes
  • 원하는 window event 입력 → ex) System, Security
  • window event log level 설정(custom) → ex) information, verbose,critical
  • log group name, log stream name 설정 (custom) 가능

CloudWatch Agent config 구성 확인 및 경로

→ C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json

구성예시 config.json

{
	"logs": {
		"logs_collected": {
			"files": {
				"collect_list": [
					{
						"file_path": "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\logs\\amazon-cloudwatch-agent.log",
						"log_group_class": "STANDARD",
						"log_group_name": "amazon-cloudwatch-agent.log",
						"log_stream_name": "window-server-cloudwatch-agent",
						"retention_in_days": 1
					}
				]
			},
			"windows_events": {
				"collect_list": [
					{
						"event_format": "text",
						"event_levels": [
							"VERBOSE",
							"INFORMATION",
							"WARNING",
							"ERROR",
							"CRITICAL"
						],
						"event_name": "System",
						"log_group_class": "STANDARD",
						"log_group_name": "System",
						"log_stream_name": "{instance_id}",
						"retention_in_days": 1
					},
					{
						"event_format": "xml",
						"event_levels": [
							"VERBOSE",
							"INFORMATION",
							"WARNING",
							"ERROR",
							"CRITICAL"
						],
						"event_name": "Security",
						"log_group_class": "STANDARD",
						"log_group_name": "Security",
						"log_stream_name": "{instance_id}",
						"retention_in_days": 1
					}
				]
			}
		}
	}

fetch-config 명령어를 통한 cloudWatch agent 실행.

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

4. 검증

cloudWatch status 확인

& $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status

AWS console에서의 cloudWatch를 통해 syslog 확인


참고

본 글은 Amazon CloudWatch와 CloudWatch Agent에 대한 간단한 소개입니다. 이어지는 실습을 통해 Windows와 Linux 환경에서의 CloudWatch Agent 설정과 활용 방법을 알아보고, 세부적인 실습을 진행하겠습니다.