안녕하세요.
이번 시간에는 CloudWatch Logs Agent를 이용하여 서버 로그를 깔끔하게 저장하는 방법에 대해 소개하고자 합니다.
1. 개요
사전 보안성 검토 간 Bastion Host에 대한 시스템 로그, 액세스 로그, 세션 로그 등을 보관해야 한다는 지침이 있어서 따로 HIWARE를 쓰지 않는 경우라면 CloudTrail이나 CloudWatch Logs Agent를 이용하여 서버 로그를 정리할 수 있습니다.
수집하고자 하는 로그
/var/log/message
일반적인 시스템 로그
/var/log/secure
SSH 세션 로그
/var/log/command-history
명령어 로그 (추가 필요)
수집하고자 하는 로그는 다음과 같이 3가지 로그입니다. 보존 기간은 장기 보존 정책에 따라 로그 그룹으로 수집하여 S3 Glaciar에 보관할 예정입니다.
2. CloudWatch Logs Agent 사용하기
1. CloudWatch Logs Agent 설치하기
sudo yum install -y awslogs
sudo systemctl start awslogsd
sudo systemctl enable awslogsd
다음과 같이 awslogs를 통해 로그 그룹과 로그 스트림을 생성할 예정입니다.
1-1. CloudWatch Logs Agent 기본 설정 변경하기
sudo vi /etc/awslogs/awscli.conf
[default]
region = ap-northeast-2 (default: us-east-1)
# 변경
awslogs의 기본 awscli 설정 값이 us-east-1이기 때문에 필요한 리전에 맞게 끔 변경합니다.
2. AWS CLI 프로파일 설정하기
aws configure
<AWS Access Key>
<AWS Secret Key>
<AWS Region>
용도 별 키 관리를 위해 CloudWatch Log 관련 권한을 가지고 있고 Console 비활성화인 사용자를 생성한 후 API Key를 입력합니다.
3. Command History 설정하기
export PROMPT_COMMAND='history -a >(logger -p local6.info -t bash[$$])'
~/.bashrc 파일 수정합니다.
# rsyslog.conf 파일을 수정합니다.
sudo vi /etc/rsyslog.conf
# 다음과 같이 command-history log 파일을 생성하도록 설정합니다.
local6.* /var/log/command-history
# 파일 저장
:wq
# rsyslog를 재시작합니다.
sudo systemctl restart rsyslog.service
rsyslog를 재시작하면 다음과 같이 command-history 파일이 /var/log 경로에 생기는 것을 확인할 수 있습니다.
4. awslogsd.conf 파일 설정하기
sudo vi /etc/awslogs/awslogs.conf
[/var/log/messages]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = <로그 그룹 이름 지정>
[/var/log/secure]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/secure
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = <로그 그룹 이름 지정>
[/var/log/command-history]
datetime_format = %d/%b/%Y:%H:%M:%S %z
file = /var/log/command-history
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = <로그 그룹 이름 지정>
다음과 같이 awslogs 설정 파일에 시스템 로그, SSH 세션 로그, 명령어 로그를 로그 그룹으로 생성하는 설정을 진행합니다.
sudo systemctl restart awslogsd
다음과 같이 awslogsd 서비스를 재시작하면 로그 그룹이 생기는 것을 확인할 수 있습니다.
IAM 사용자에 CloudWatch Log에 대한 권한이 없으면 로그 그룹이 생성되지 않습니다.
그러면 다음과 같이 로그 그룹이 생성되는데 로그 쌓이는 내용도 한 번 확인해보겠습니다.
[command-history]
다음은 명령어 로그입니다. 잘 기록되는 것을 확인할 수 있습니다.
[message]
일반적인 시스템 로그입니다. 잘 기록되는 것을 확인할 수 있습니다.
[secure]
SSH 세션 로그입니다.
이번 시간에는 CloudWatch Logs Agent를 통해 간단하게 로그 그룹을 용도 별로 생성하여 로그를 관리하는 실습을 진행했습니다.
로그 그룹의 리텐션은 짧게 가져가야 비용이 많이 나오지 않습니다.
이렇게 보관한 로그들은 S3로 넘긴 후 라이프사이클 생성을 통해 S3 Glaciar로 장기 보존 정책을 가져가는 게 일반적입니다.
감사합니다.
'Cloud > Amazon Cloud' 카테고리의 다른 글
[AWS] ECS 블루/그린 배포를 위한 CodePipeline 구성 방법을 자세하게 알아보기 (0) | 2024.12.31 |
---|---|
[AWS] Korea PLES GameDay 2024 Network Topology Titans 참여 후기 (0) | 2024.09.25 |
[AWS] ECR에 이미지 올려서 ECS Fargate Redis 구성하고 접속하기 (0) | 2024.08.06 |
[AWS] CodePipeline에서 다른 VPC에 있는 사내 GitLab에 연동하는 방법 (0) | 2024.06.26 |
[AWS] Lambda를 이용한 Serverless 형태의 Slack 챗봇 사용하기 - 2 (0) | 2023.11.30 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!