반응형
안녕하세요.
오늘은 CloudWatch Log Agent을 설치해 서버에서 발생하는 Log을 CloudWatch를 통해 모니터링하는 방법에 대해 말씀드리겠습니다.
Agent 신규 설치 시 CloudWatch Logs Agent는 비권장 설치 방식이기 때문에 CloudWatch Agent로 설치하는 것을 권장합니다.
(관련 설치 페이지 : https://blog.wstar.site/15)
하지만!! CloudWatch Logs Agent도 어떻게 설치 및 설정을 하는지 알면 좋겠죠??
CloudWatch logs Agent 설치 및 준비사항
Agent을 설치하기 위해서는 당연히 설치 파일을 다운로드 받아야 하고, CloudWatch log에 데이터를 전송할 수 있는 권한이 필요합니다.
[CloudWatch logs 설치]
#!/bin/bash
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
chmod +x ./awslogs-agent-setup.py
./awslogs-agent-setup.py -n -r us-east-1 -c s3://DOC-EXAMPLE-BUCKET1/my-config-file
[CloudWatch logs 권한 policy]
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"*"
]
}
]
}
CloudWatch Logs 구성 파일
- 경로
- 기본 구성 파일 경로 : /var/awslogs/etc/awslogs.conf
- 구성 파일 샘플
# 로그파일1
[로그 파일 구분 명1]
datetime_format = %Y-%m-%d %H:%M:%S.%f
file = <path>/<application log name>
buffer_duration = 5000
initial_position = start_of_file
log_group_name = <cloudwatch logs group name>
log_stream_name = log-{local_hostname}
multi_line_start_pattern = {datetime_format}
# 로그파일2
[로그 파일 구분 명2]
datetime_format = %Y-%m-%d %H:%M:%S.%f
file = <path>/<applicatoin error log name>
buffer_duration = 5000
initial_position = start_of_file
log_group_name = <cloudwatch logs group name>
log_stream_name = log-{local_hostname}
multi_line_start_pattern = {datetime_format}
[Agent 재기동 명령]
# service awslogs restart (BCM 기준 재기동 명령어)
# service awslogsd restart (Amazon Linux 2 기준)
Logback 설정 관련
DateTime format
- CloudWatch - Logback 간 지원하는 date time format이 다르다
- CloudWatch - microsecond with zero padding (ex. 2021-05-03 14:10:05.031000)
- Logback - millisecond (ex. 2021-05-03 14:10:05.031)
- CloudWatch에서 timestamp를 인식하게 하기 위해서 Logback 설정 날짜 포맷 뒤 세 자리 000 붙여줌
- 패턴 샘플
<property name="CUSTOM_FILE_LOG_PATTERN" value="%date{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}000 ${LOG_LEVEL_PATTERN:-%p} ${PID:-} [%X{traceId}] --- [%thread] %logger{39} %mdc{requestId:--} : %message%n${LOG_EXCEPTION_CONVERSION_WORD:-%exception}" />
Coloring 설정
- Logback 패턴 중 컬러링 설정이 들어가 있는 경우 서버 접속하여 확인 시 로그가 정상적으로 보이더라도, CloudWatch에서 @message가 깨져서 나올 수 있다.
- 컬러링 패턴 샘플
appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- CloudWatch 설정 파일 내 날짜 포맷과 일치시키기 위하여 날짜 포맷 뒤 세 자리 Zero padding -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}000 %highlight([%-5level]) [%X{traceId}] [%thread] %cyan([%logger{36}]) - %m%n</pattern>
</encoder>
</appender>
* 서버 로그는 컬러링 설정이 적용되어 예쁘게 나오지만,
CloudWatch상에서는 로그 메시지에 임의의 문자들이 붙어 제대로 노출되지 않음
반응형
'IT기술 > AWS' 카테고리의 다른 글
| [AWS][SES] Security Credential key를 발급하지 않고 AWS SES 사용하기 (0) | 2022.05.31 |
|---|---|
| [AWS][CodeDeploy] CodeDeploy 배포시 파일 중복으로 인한 실패 해결 방법 (0) | 2022.05.31 |
| [AWS][CloudWatch][Log] CloudWatch Agent로 log 모니터링 (0) | 2022.05.24 |
| [AWS][IaC][Cloudformation] 01. 중앙 집중식 로깅 인프라 구현하기_Templete 수정_기존 VPC 사용 (0) | 2022.05.23 |
| [AWS] S3 마운트를 위한 goofys 설치 (0) | 2022.05.16 |