AWS CloudWatch Logs 에이전트를 설치하고 구성하는 방법은 다음 단계에 따라 진행할 수 있습니다. 이 과정에서는 EC2 인스턴스에서 로그를 수집하고 CloudWatch Logs로 전송하는 방법을 설명합니다.
1. AWS CloudWatch Logs 에이전트 설치
단계 1: 에이전트 설치
1. EC2 인스턴스에 SSH로 접속합니다.
2. 다음 명령어를 실행하여 CloudWatch Logs 에이전트를 다운로드하고 설치합니다.
Amazon Linux 및 Amazon Linux 2:
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm
Ubuntu:
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
단계 2: CloudWatch Agent 구성
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
구성 마법사를 완료한 후, 생성된 구성 파일을 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json에 저장합니다.
sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/my-app/output.log",
"log_group_name": "/my-app/output",
"log_stream_name": "{instance_id}-output"
},
{
"file_path": "/var/log/my-app/error.log",
"log_group_name": "/my-app/error",
"log_stream_name": "{instance_id}-error"
}
]
}
}
}
}
여기서
file_path 는 클라우드와치에 보내고 싶은 서버 로컬 파일 경로를 적어줍니다.
instance_id 는 EC2 대시보드에 id 가 적혀있습니다.
또 log_group_name 이라는 클라우드 와치 내 logs 그룹을 추가해줘야 합니다.
터미널에서 아래 코드를 실행해 줘야 하는데 아마 권한때문에 안될겁니다. IAM 을 계정을 추가하고 서버 로컬에서 로그인 해줘야 합니다.
aws logs create-log-group --log-group-name /my-app/output --region ap-northeast-2
aws logs create-log-group --log-group-name /my-app/error --region ap-northeast-2
IAM 콘솔
IAM 권한 확인 및 설정
IAM 사용자 또는 역할에 필요한 권한이 있는지 확인합니다. IAM 콘솔에서 다음 정책을 추가하십시오.
1. AWS Management Console에 로그인합니다.
2. 상단 메뉴에서 **“Services”**를 클릭하고, **“IAM”**을 선택합니다.
3. 왼쪽 메뉴에서 **“Users”**를 클릭합니다.
4. ablelearn 사용자를 클릭합니다.
5. “Add permissions” 버튼을 클릭합니다.
6. **“Attach policies directly”**를 선택합니다.
7. 검색창에 CloudWatchLogsFullAccess를 입력하고, 해당 정책을 선택합니다.
8. **“Next: Review”**를 클릭한 후 **“Add permissions”**를 클릭합니다.
또한 user 에 role 을 부여하고 EC2 인스턴스에 역할을 부여해 주어야 합니다.
1. AWS Management Console에 로그인합니다.
2. IAM 콘솔로 이동합니다.
3. 왼쪽 메뉴에서 Roles를 선택합니다.
4. Create role을 클릭합니다.
5. AWS 서비스를 선택하고, EC2를 선택한 후 Next: Permissions를 클릭합니다.
6. CloudWatchLogsFullAccess 정책을 선택하고 Next: Tags를 클릭합니다.
7. Next: Review를 클릭합니다.
8. 역할 이름을 입력하고 Create role을 클릭합니다.
EC2 인스턴스에 IAM 역할 부여
1. EC2 콘솔로 이동합니다.
2. 대상 인스턴스를 선택하고 Actions -> Security -> Modify IAM role을 클릭합니다.
3. 방금 생성한 IAM 역할을 선택하고 Update IAM role을 클릭합니다.
EC2 인스턴스에 IAM 역할 부여
1. EC2 콘솔로 이동합니다.
2. 대상 인스턴스를 선택하고 Actions -> Security -> Modify IAM role을 클릭합니다.
3. 방금 생성한 IAM 역할을 선택하고 Update IAM role을 클릭합니다.
AWS CLI 설정 (Optional)
로컬에서 AWS CLI를 통해 자격 증명을 설정할 수 있습니다.
aws configure
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-2
Default output format [None]: json
여기서 Access Id 와 key 는 IAM user 계정 생성시 발급 됩니다.
user 및 role 이 정상적으로 생성했다면
아래 코드를 실행합니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s
파일 실행 하면
sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
파일은 없어지므로 다시 재실행할때 다시 json 파일을 생성해주면 됩니다.
에이전트가 오류가 있는지 디버깅을 하기위해서는 아래와 같이 로그를 확인할 수 있습니다.
sudo tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
systemctl 에서 에이전트가 러닝인지 종료인지 알기 위해서는 아래 명령어로 확인 가능합니다.
sudo systemctl status amazon-cloudwatch-agent
보통 대부분의 이슈는 user 및 role 권한 설정이슈입니다.
정상적으로 동작한다면
각 그룹에서 로그가 적재된걸 확인할 수 있습니다.
서버 로컬에서 log group 을 생성을 하고 위 대시보드에서 확인바랍니다.
요약
• amazon-cloudwatch-agent.json 파일을 편집하여 EC2 모드를 설정합니다.
• 구성 파일을 저장하고 CloudWatch Agent를 다시 시작합니다.
• 로그 그룹이 존재하는지 확인하고, 필요 시 생성합니다.
• IAM 사용자 또는 역할에 필요한 권한을 확인합니다.
• CloudWatch Agent 로그 파일을 확인하여 추가적인 디버깅 정보를 얻습니다.
• CloudWatch 콘솔에서 로그 그룹을 확인합니다.
이전포스팅
https://juntcom.tistory.com/252
'인프라 > AWS' 카테고리의 다른 글
aws ec2 ubuntu 서버 생성 및 mysql 설치 그리고 java 17 설치 (0) | 2024.09.09 |
---|---|
AWS DMS 를 통한 EC2 -> RDS 데이터 마이그레이션 (0) | 2024.08.16 |
EC2 에 클라우드 와치 적용하기(Cloud Watch) (0) | 2024.06.25 |
CloudFront란 (0) | 2020.05.08 |