CloudWatch Logs 에이전트 설치 및 구성
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
인스턴스에 IAM 역할 할당
(CloudWatchAgentServerPolicy에 포함되어 있음)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"*"
]
}
]
}
ssh 연결 후
$ sudo yum update -y
$ sudo yum install -y awslogs
에이전트 구성 파일을 작성합니다. 구성파일에서는 추적할 로그를 구성합니다.
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/AgentReference.html
# 모든 로그 스트림에 적용되는 공통 구성
[general]
state_file = /var/lib/awslogs/agent-state # 상태 파일이 저장되는 저장소
logging_config_file = value
use_gzip_http_content_encoding = [true | false]
# 원격 로그 스트림에 로컬 파일을 전송하는 데 필요한 정보 정의
# 섹션은 여러 개 정의 가능, 고유한 이름 가져야 함(logstream1)
[logstream1]
log_group_name = value # 로그 그룹 이름, 자동으로 생성 됨
log_stream_name = value # 로그 스트림 이름, 자동으로 생성 됨 ({instance_id}, {hostname}, {ip_address})
datetime_format = value # 로그 이벤트를 검색하고 지표를 생성하는 데 사용
time_zone = [LOCAL|UTC] # 타임스탬프의 시간대
file = value # CloudWatch Logs에 푸시하고 싶은 로그 파일 지정, 특정 파일 또는 여러 개의 파일(/var/log/system.log*)
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 # 로그 이벤트를 일괄 처리하는 기간, 기본 5,000ms
batch_count = integer # 일괄 처리할 로그 이벤트의 최대 수
batch_size = integer # 일괄 처리할 로그 이벤트의 최대 크기를 바이트로 지정
[logstream2]
...
다음은 작성 예시입니다.
[general]
state_file = /var/lib/awslogs/agent-state
[/var/log/messages]
log_group_name = /var/log/messages
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
initial_position = start_of_file
[/var/log/secure]
log_group_name = /var/log/secure
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S
file = /var/log/secure
buffer_duration = 5000
initial_position = start_of_file
[/var/log/cron]
log_group_name = /var/log/cron
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S
file = /var/log/cron
buffer_duration = 5000
initial_position = start_of_file
[/var/log/boot.log]
log_group_name = /var/log/boot.log
log_stream_name = {instance_id}
datetime_format = %b %d %H:%M:%S
file = /var/log/boot.log
buffer_duration = 5000
initial_position = start_of_file
기본적으로 /etc/awslogs/awscli.conf는 us-east-1 리전을 가리킵니다. 다른 리전으로 로그를 푸시하려면 awscli.conf 파일을 편집하고 해당 리전을 지정합니다.
awslogs 서비스를 시작합니다. (Amazon Linux 2)
$ sudo systemctl start awslogsd
# 시스템 부팅시 서비스 시작
$ sudo systemctl enable awslogsd.service
에이전트를 중지하려면
$ sudo service awslogsd stop
AWS 서비스 > CloudWatch > 로그 > 로그 그룹 > /var/log/messages 에서 확인
'DevOps' 카테고리의 다른 글
[AWS/Terraform] 테라폼 백엔드(Backend) 구축하기(S3, DynamoDB) (0) | 2022.10.30 |
---|---|
[AWS/Terraform] 테라폼으로 EC2 인스턴스 프로비저닝 (0) | 2022.10.29 |
[EC2/Python] Jenkins로 Flask 프로젝트 배포하기 (0) | 2022.09.30 |
[Jenkins/CodeCommit] Jenkins와 AWS CodeCommit 연동하기 (0) | 2022.09.29 |
[EC2/Jenkins] AWS EC2에 Jenkins 설치하기 (0) | 2022.09.28 |