CloudWatch Logs
- 소스에서 로그 파일을 모니터링, 저장 및 액세스할 수 있음
- 기능
-
EC2 인스턴스 로그 모니터링
-
-
CloudWatch Logs를 사용하면 로그 데이터를 통해 애플리케이션과 시스템을 모니터링할 수 있음
(예를 들어 CloudWatch Logs에서는 애플리케이션 로그에서 발생하는 오류의 수를 추적하고 오류 비율이 지정한 임계값을 초과할 때마다 알림을 전송)
-
CloudWatch Logs는 모니터링하는데 로그 데이터를 사용하므로 코드를 변경할 필요가 없음
(특정 리터럴문자<NullReferenceException>에 대한 애플리케이션 로그를 모니터링 하거나 로그 데이터의 특정 위치<Apache 액세스 로그의 404 상태 코드>에서 리터럴 문자의 출현 횟수를 계산)
-
검색할 단어가 발견되면 CloudWatch Logs는 지정한 CloudWatch 지표로 데이터를 보고 (로드 데이터는 전송시는 물론 저장시에도 암호화)
-
-
AWS CloudTrail 기록 이벤트 모니터링
-
-
CloudWatch에서 경보를 생성하고 CloudTrail에서 포착된 특정 API 활동에 대한 알림을 수신하며 이러한 알림을 사용하여 문제 해결을 할 수 있음
-
-
로그 보존
-
-
기본적으로 로그는 무기한 저장되고 만료기관은 없음
-
-
로그 데이터 보존
-
-
CloudWatch Logs를 사용하여 내구성이 뛰어난 스토리지에 로그데이터를 저장할 수 있음
-
CloudWatch Logs 에이전트를 사용하면 호스트에서 로그 서비스로 로테이션된 로그 데이터와 로테이션 되지 않은 로그 데이터를 모두 쉽고 빠르게 전송할 수 있음
-
-
Route 53 DNS 쿼리 로깅
-
-
CloudWatch Logs를 사용하여 Route53이 수신하는 DNS 쿼리에 대한 정보를 기록할 수 있음
-
Logs 개념
- 로그 이벤트
-
로그 이벤트는 모니터링 중인 애플리케이션 또는 리소스에 기록된 일부 활동에 대한 레코드
-
CloudWatch Logs가 파악한 로그 이벤트 레코드에는 이벤트가 발생한 시점에 대한 타임스탬프와 원시 이벤트 메시지 등 두개의 속성이 포함
-
각 메시지는 UTF-8로 인코딩되어야 함
- 로그 스트림
-
로그 스트림은 동일한 소스를 공유하는 로그 이벤트 시퀀스
-
로그 스트림은 모니터링 중인 애플리케이션 인스턴스나 리소스에서 나온 이벤트의 시퀀스를 표시하는데 주로 사용
-
로그 스트림은 특정 호스트의 Apache 액세스 로그에 연결될 수 있음
- 로그 그룹
-
로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹을 정의
-
각 로그 스트림은 하나의 로그 그룹에 속해야함 (Ex. 각 호스트의 Apache 액세스 로그에 대해 별도의 로그 스트림이 있으면 로그 스트림을 MyWebSite.com/Apache/access_log라는 하나의 그룹으로 묶을 수 있음)
-
하나의 로그 그룹에서 포함할 수 있는 로그 스트림의 수에는 제한이 없음
- 지표 필터
-
지표 필터를 사용하여 수집된 이벤트에서 지표 관찰값을 추출하고 이를 CloudWatch 지표의 데이터 요소로 변환할 수 있음
-
지표 필터는 로그 그룹에 할당이 되고 로그 그룹에 할당된 모든 필터들은 로그 스트림에 적용
- 보전 기간 설정
-
CloudWatch Logs에 로그 이벤트를 보관하는 기간을 설정하는데 사용할 수 있음
-
기간이 만료된 로그 이벤트는 자동으로 삭제
-
지표 필터와 마찬가지로 보존 기간 설정 역시 로그 그룹에 할당되며 로그 그룹에 할당된 보존 기간은 로그 스트림에 적용
CloudWatch Logs .conf File (에이전트 구성 파일)
[general]
state_file = value
logging_config_file = value
use_gzip_http_content_encoding = [true | false]
[logstream1]
log_group_name = value
log_stream_name = value
datetime_format = value
time_zone = [LOCAL|UTC]
file = value
file_fingerprint_lines = integer | integer-integer
multi_line_start_pattern = regex | {datetime_format}
initial_position = [start_of_file | end_of_file]
encoding = [ascii|utf_8|..]
buffer_duration = integer
batch_count = integer
batch_size = integer
[general]
- state_file (상태 파일)
-
상태 파일이 저장되는 장소를 지정
- logging_config_file (기본 구성 파일 위치)
-
스크립트를 통해 에이전트를 설치한 경우 기본 파일 위치 : /var/awslogs/etc/awslogs.conf
-
rpm을 통해 에이전트를 설치한 경우 : /etc/awslogs/awslogs.conf
- use_gzip_http_content_encoding
-
true(기본)로 설정되어 있으면 gzip http 콘텐츠 인코딩을 활성화하여 CloudWatch Logs로 압축된 페이로드를 전송
-
CPU 사용량을 줄이고 NetworkOut을 낮추며 PUT 레코드 지연시간을 줄일 수 있음
[logstream1]
- log_group_name
-
대상 로그 그룹을 지정
-
로그 그룹이 없는 경우 이 설정에 따라 로그 그룹이 자동으로 생성
- log_stream_name
-
대상 로그 스트림을 지정
-
리터럴 문자열이나 미리 정의된 변수({instance_id}, {hostname}, {ip_address}) 또는 이 둘의 조합을 사용하여 로그 스트림 이름을 정의
-
로그 스트림이 없는 경우 이 설정에 다라 로그 스트림이 자동으로 생성
- datetime_format
-
타임 스탬프가 로그에서 추출되는 방법을 지정
-
타임 스탬프는 로그 이벤트를 검색하고 지표를 생성하는데 사용
-
datetime_format이 제공되지 않는 경우에는 각 로그 이벤트에서 현재 시간이 사용
- time_zone
-
로그 이벤트 타임 스탬프의 시간대를 지정
- file
-
CloudWatch Logs에 푸시하고 싶은 로그 파일을 지정
-
파일은 특정 파일을 가리키거나 여러 개의 파일을 가리킬 수 있음 (/var/log/system.log* 와 같은 와일드카드 사용)
-
파일 수정 시간에 따라 최신 파일만 CloudWatch Logs로 푸시
-
여러 종류의 파일을 지정하려면 로그 파일의 종류에 따라 다른 로그 스트림에 들어가도록 구성파일에 또 다른 로그스트림 항목을 추가
- file_fingerprint_lines
-
파일을 식별하기 위한 줄의 범위를 지정
-
유효한 값은 하나의 숫자 (Ex. 1)나 대시로 구분된 두 개의 숫자 (Ex. 2-5)
-
기본 값은 1이기 때문에 지문 산출을 위해 첫번째 줄이 사용
-
지정된 모든 줄이 사용 가능한 상태가 되지않는 한 지문줄은 CloudWatch Logs로 전송되지 않음
- multi_line_start_pattern
-
로그 메시지의 시작을 식별하기 위해 패턴을 지정
-
로그 메시지는 패턴과 일치하는 하나의 줄과 패턴과 일치하지 않는 나머지 줄들로 이루어짐
-
유효한 값은 {datetime_format}
-
{datetime_format}을 사용할때는 반드시 datetime_format 옵션이 지정되어 있어야함
-
기본 값은 '^[^\s]' 이기 때문에 공백이 아닌 문자로 시작되는 줄이 있으면 이전의 로그 메시지가 종료되고 새로운 로그 메시지가 시작
- initial_position
-
데이터 읽기를 시작할 지점(start_of_file 또는 end_of_file)을 지정
-
기본 값은 파일의 시작 지점 (start_of_file 또는 end_of_file)
-
해당 로그 스트림에서 지속되는 상태가 없을때만 사용
- encoding
-
파일을 정확하게 읽을 수 있도록 로그 파일의 인코딩을 설정
-
기본 값은 utf_8
- buffer_duration
-
로그 이벤트를 일괄 처리하는 기간을 지정
-
최소값은 5000ms이고 기본값은 5000ms
- batch_count
-
일괄 처리할 로그 이벤트의 최대 수를 지정
-
10000까지 가능하고 기본값은 10000
- batch_size
-
일괄 처리할 로그 이벤트의 최대 크기를 바이트로 지정
-
1048576 바이트까지 가능하고 기본값은 1048576 바이트
참조 URL
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/AgentReference.html
https://medium.com/@eunsu.shin/aws-cloudwatch-%EC%95%8C%EB%9E%8C-%EC%84%A4%EC%A0%95-aafc19ed5749 - 로그 필터 패턴
'AWS' 카테고리의 다른 글
AWS ElasticSearch (0) | 2019.04.09 |
---|---|
AWS CloudWatch (0) | 2019.04.09 |
AWS Auto Scaling (0) | 2019.04.09 |
AWS Auto Scaling 종료 정책 (0) | 2019.04.09 |
AWS CloudFormation 내장함수 (0) | 2019.04.09 |