D2-13. Amazon OpenSearch Service
Amazon OpenSearch Service(구 Elasticsearch Service)는 검색(Search) 및 분석(Analytics) 을 위한 관리형 서비스입니다.
CloudWatch는 AWS 리소스와 애플리케이션을 위한 모니터링 및 관측성 서비스입니다.
AWS 모든 리소스에서 발생하는 로그와 지표(Metrics) 데이터를 수집, 시각화하고 이에 대응합니다.
리소스의 성능 데이터(EC2 CPU 사용률, S3 요청 수 등)를 수집하는 시계열 데이터입니다.
애플리케이션 및 OS 로그 파일을 중앙에서 수집, 모니터링, 저장합니다.
Log Group과 Log Streams 구조로 관리되며, Logs Insights로 강력한 쿼리가 가능합니다.
특정 지표(Metric) 가 설정한 임계값(Threshold) 을 초과할 때 알림을 보내는 기능입니다.
단순 알림(SNS) 외에도 특정 작업(EC2 Auto Scaling 수행, EC2 인스턴스 재부팅 등)을 트리거할 수 있습니다.
여러 리전과 계정에 분산된 지표와 로그 쿼리 결과를 단일 뷰에서 시각화하는 대시보드입니다.
운영 현황을 한 눈에 파악하는데 사용됩니다.
Unified CloudWatch Agent는 인스턴스 내부(OS 레벨)의 추가적인 시스템 지표와 로그 파일을 수집하여 CloudWatch로 전송하는 에이전트입니다.
간단하게 정리하면, CloudWatch에서 못 가져오는 데이터를 Agent을 이용하여 가져오는 기능입니다.

| 항목 | 설명 |
|---|---|
| 수집 대상 | 상세 지표: RAM 사용률, 디스크 사용 공간, 프로세스 수 등로그 파일: /var/log/messages, 애플리케이션 로그 등 인스턴스 내의 각종 로그 파일 |
| 설정 | Parameter Store: 에이전트 설정을 Parameter Store에 저장하여 중앙에서 관리설정 파일: 인스턴스 내 직접 설정 파일 배치 |
| IAM 권한 | 에이전트가 CloudWatch (Logs, Metrics) 및 SSM Parameter Store와 통신할 수 있는 IAM 권한이 필요합니다. |
| 지표 네임스페이스 | 에이전트를 통해 수집된 사용자 정의 지표는 기본적으로 CWAgent 네임스페이스에 저장됩니다. |
Procstat 플러그인은 Unified CloudWatch Agent 내의 특정 기능으로, 시스템 전체가 아닌 개별 프로세스(Individual Process) 의 리소스 사용률을 모니터링합니다.
| 항목 | 설명 |
|---|---|
| 주요 수집 지표 | 프로세스별 CPU 사용률 (procstat_cpu_usage), 프로세스별 메모리 사용률, 실행 중인 프로세스 수 |
| 모니터링 대상 지정 | PID 파일: 특정 프로세스 ID(PID) 파일을 지정이름 (Name): httpd, nginx 등 정확한 프로세스 이름을 지정패턴 (Pattern): 정규식을 사용한 프로세스 이름 패턴으로 필터링 |
| 지표 접두사 | 이 플러그인을 통해 수집된 지표는 procstat_ (예: procstat_cpu_usage)으로 시작 |
# 에이전트 구성 파일 유효성 검사 로그
/opt/aws/amazon-cloudwatch-agent/logs/configuration-validation.log
# 에이전트 디버그 로그 (상세 문제 분석용)
/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
configuration-validation.log 파일을 확인하여 설정 오류를 파악할 수 있습니다.amazon-cloudwatch-agent.log 파일에서 상세 원인을 확인할 수 있습니다.CloudWatch Logs는 애플리케이션, AWS 서비스, OS 등에서 발생하는 로그 파일을 중앙에서 수집, 모니터링, 저장, 분석하는 서비스입니다.
| 항목 | 설명 |
|---|---|
| 로그 그룹 | 로그의 최상위 컨테이너입니다.보통 애플리케이션 또는 서비스 단위로 생성되며 보존 정책, 암호화(KMS), 구독 필터 등을 해당 그룹에서 설정합니다. |
| 로그 스트림 | 로그 그룹 내부에 있는 실제 로그 이벤트의 시퀀스입니다.일반적으로 로그를 생성하는 Source (EC2 인스턴스 ID, Lambda 컨테이너 ID 등)에 해당합니다. |
| 수집 방식 | 설명 |
|---|---|
| Unified CloudWatch Agent | Agent를 통해 OS 로그 및 애플리케이션 로그를 수집합니다. |
| AWS 서비스 통합 | Lambda, ECS, Elastic Beanstalk, VPC Flow Logs, API Gateway, CloudTrail, Route53 DNS 쿼리 등 다수의 서비스가 기본적으로 로그를 전송합니다. |
| SDK | 애플리케이션 코드 내에서 AWS SDK를 사용해 직접 커스텀 로그를 전송할 수 있습니다. |
Logs Insights는 CloudWatch Logs에 저장된 로그를 검색하고 분석하는 강력한 대화형 쿼리 엔진입니다.
| 구성 요소 | 설명 |
|---|---|
| 로그 수집 (Log Ingestion) | VPC Flow Logs, Lambda, ECS, API Gateway, Route53, CloudTrail 등 다양한 AWS 서비스와 CloudWatch 에이전트를 통해 EC2 및 온프레미스 서버의 로그를 자동으로 수집합니다. |
| 로그 검색 및 분석 | CloudWatch Logs Insights라는 강력한 쿼리 엔진을 제공합니다. 전용 쿼리 언어를 사용해 대용량 로그 데이터를 신속하게 검색, 분석하고 시각화할 수 있습니다. |
| 일괄 내보내기 (Batch Export to S3) | 특정 기간의 로그 데이터를 S3 버킷으로 한 번에 내보낼 수 있습니다. 장기 보관, 규정 준수, 또는 다른 분석 도구와의 연동을 위해 사용됩니다. (실시간 아님, 최대 12시간 소요) |
| 실시간 스트리밍 (Real-time Streaming) | 구독 필터를 사용하여 특정 패턴(예: “ERROR”)의 로그를 실시간으로 필터링하고, 이를 Kinesis Data Streams, Kinesis Data Firehose, Lambda로 즉시 전송하여 실시간 알림, 처리, 분석을 수행할 수 있습니다. |
| 교차 계정 로그 집계 | 구독 필터와 대상(Destination) 기능을 활용하여 여러 AWS 계정 및 리전의 로그를 중앙 계정의 Kinesis 등으로 집계하여 통합 관리 및 분석을 할 수 있습니다. |

-- "Exception" 또는 "Error"라는 단어가 포함된 최신 로그 20개를 검색
fields @timestamp, @message
| filter @message like /Exception/ or @message like /Error/
| sort @timestamp desc
| limit 20
fields: 결과에 표시할 필드를 지정합니다.filter: 특정 조건을 만족하는 로그만 필터링합니다.sort: 지정된 필드를 기준으로 정렬합니다. (desc: 내림차순)limit: 표시할 결과의 수를 제한합니다.# S3 버킷으로 로그를 일괄적으로 내보내는 작업을 시작하는 AWS CLI 명령어 예시
aws logs create-export-task \\\\
--log-group-name "/my-app/logs" \\\\
--from 1672531200000 \\\\
--to 1675209599000 \\\\
--destination "my-log-archive-bucket" \\\\
--destination-prefix "exported-logs"
CloudWatch Alarms는 특정 지표가 사용자가 정의한 임계값을 위반할 때, 자동으로 알림을 보내거나 특정 작업을 트리거하는 기능입니다.
| 항목 | 설명 |
|---|---|
| OK | 지표가 임계값 이내 (정상) |
| ALARM | 지표가 임계값을 위반 (경보 발생) |
| INSUFFICIENT_DATA | 상태를 판단하기에 데이터가 충분하지 않음 |
| 항목 | 설명 |
|---|---|
| EC2 작업 | 인스턴스를 중지, 종료, 재부팅, 복구를 시킵니다. |
| Auto Scaling | Auto Scaling 그룹을 확장(Scale-out)하거나 축소(Scale-in) 시킵니다. |
| SNS 알림 | SNS 토픽으로 알림을 전송합니다.이를 통해 Lambda 호출 등 다양한 2차 작업으로 연동이 가능합니다. |
기본 알람은 단 하나의 지표만 모니터링할 수 있습니다. 복합 알람은 여러 개의 다른 알람 상태를 조합하여 하나의 새로운 알람을 생성하는 기능입니다.
| 항목 | 설명 |
|---|---|
| 작동 방식 | AND 또는 OR 논리 연산자를 사용해 여러 알람을 결합합니다. |
| 주요 장점 | 알람 노이즈(Alarm Noise) 감소에 매우 효과적입니다.단순히 CPU만 높을 때가 아니라, CPU와 네트워크가 동시에 높을 때만 알림을 받아 불필요한 경보를 줄일 수 있습니다. |
임계값이 실제로 위반되지 않았더라도, 알람 발생 시 연결된 작업(SNS, EC2 작업 등)이 올바르게 동작하는지 테스트해야 할 수 있습니다.
이때, set-alarm-state 명령어를 사용하면, 알람 상태를 ALARM으로 강제로 변경하여 테스트를 수행할 수 있습니다.
CloudWatch Contributor Insights는 로그 데이터를 분석하여 “기여자(Contributor)” 데이터를 보여주는 시계열 리포트를 생성하는 기능입니다.
가장 큰 특징은 시스템 성능에 가장 큰 영향을 미치는 상위 N개(Top-N) 항목, 일명 “Top Talkers”를 식별하는 것입니다.