
기존에는 로그파일을 수집하려면 ec2 서버에 들어가서 로그를 하나하나 확인을 했어야했습니다.
또한 수많은 로그가 등장해서 내가 원하는 로그를 찾으려면 많은 시간이 걸렸습니다.
이 게시글에서는 이 로그를 클라우드 와치에서 볼 수 있게해보겠습니다.
CloudWatch agent 설치
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
설정 파일 작성
sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ubuntu/deploy.log",
"log_group_name": "easy-yum-log-group",
"log_stream_name": "deploy"
}
]
}
}
},
"metrics": {
"metrics_collected": {
"disk": {
"measurement": [
"used_percent",
"used",
"total"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent",
"mem_total",
"mem_used"
],
"metrics_collection_interval": 60
}
}
}
}
이제 이 부분을 하나씩 뜯어보겠습니다.
{
"agent": {
"metrics_collection_interval": 300,
"run_as_user": "root"
},
metrics_collection_interval : 메트릭 수집 간격을 60초로 설정합니다. 이는 CloudWatch 에이전트가 메트릭 데이터를 수집하는 주기입니다.
run_as_user : 에이전트를 실행할 사용자를 "root"로 설정합니다. 이는 에이전트가 루트 사용자 권한으로 실행됨을 의미합니다.
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ubuntu/deploy.log",
"log_group_name": "easy-yum-log-group",
"log_stream_name": "deploy"
}
]
}
}
}
logs_collected : 수집할 로그에 관한 정보를 정의합니다.
files : 수집할 로그 파일 목록을 정의합니다.
collect_list : 로그 파일 목록을 수집할 목록입니다.
file_path : 수집할 로그 파일의 경로를 "/home/ubuntu/deploy.log"로 설정합니다.
log_group_name : 클라우드 와치에 저장 돌 로그 그룹 이름을 지정합니다
log_stream_name : CloudWatchLogs의 스트림을 지정합니다.
"metrics": {
"metrics_collected": {
"disk": {
"measurement": [
"used_percent",
"used",
"total"
],
"metrics_collection_interval": 300,
"resources": [
"*"
]
},
disk : 디스크 메트릭 수집 설정을 정의합니다.
measurement : 수집할 디스크 메트릭의 종류를 정의합니다. 여기서는 used_percent, used, total을 수집합니다.
metrics_collection_interval : 메트릭 수집 간격을 60초로 설정합니다. 이는 CloudWatch 에이전트가 메트릭 데이터를 수집하는 주기입니다.
resources : 수집할 디스크 리소스를 모든 리소스로 설정합니다.
"mem": {
"measurement": [
"mem_used_percent",
"mem_total",
"mem_used"
],
"metrics_collection_interval": 300
}
}
}
"mem": 메모리 메트릭 수집 설정을 정의합니다.
"measurement": 수집할 메모리 메트릭의 종류를 정의합니다. 여기서는 "mem_used_percent", "mem_total", "mem_used"를 수집합니다.
"metrics_collection_interval": 메트릭 수집 간격을 60초로 설정합니다.
이 구성파일을 통해 CloudWatch 에이전트에게 메트릭 및 로그 데이터를 수집하고 해당 데이터를 CloudWatch 서비스로 전송하는 방법을 지시합니다. 설정된 간격에 따라 에이전트는 주기적으로 메트릭 로그 데이터를 수집하여 CloudWatch로 보냅니다.
위에서 설정한 내용을 적용합니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
* 일반적으로 toml 파일이 Amazon CloudWatch 에이전트의 설정을 정의하는데 사용되는 파일입니다.
에이전트 로그 동작을 확인해보면
I! Config has been translated into TOML /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
이와 같은 문구가 나타나는데 구성 파일 변경사항이 TOML 형식으로 변환되어
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml 파일에 반영되고 있는 것을 확인 할 수 있습니다.
이는 json 파일의 구성을 그대로 가져와서 반영함으로써 일어나는 현상입니다.
이제 서버에서 로그를 생성하면 실시간으로 로그가 기록되는 것을 확인하실 수있습니다.

참고 게시글
'Deep Dive > DevOps' 카테고리의 다른 글
| Linux - 계정 추가하기 (0) | 2023.08.07 |
|---|---|
| 모니터링 기술 (0) | 2023.07.16 |
| ec2 서버의 일반적인 로그파일의 위치 (0) | 2023.07.12 |
| cloud watch 로그 그룹 설정 (0) | 2023.07.09 |
| merge와 rebase의 차이 (0) | 2023.07.08 |