728x90
반응형

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

+ Recent posts