Index | Value |
---|---|
OS | Ubuntu 18.04 LTS |
Service Type | EC2 |
Region | ap-northeast-2 (Asia/Seoul) |
Architecture | x86-64 |
# Install deb file
$ wget https://s3.ap-northeast-2.amazonaws.com/amazoncloudwatch-agent-ap-northeast-2/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
# 압축해제
$ sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
CloudWatchAgentServerRole
을 IAM 에서 생성
CloudWatch 는 쓴다는 것은 정책에 따라 로깅 및 모니터링을 하기 위해서 쓴다. 정책 지정을 위해
amazon-cloudwatch-agent-schema.json
파일을 설정해야한다.
# 다음 경로에 기본 설정파일이 설치되어있다.
$ [Install-Directory]/doc/amanzon-cloudwatch-agent-schema.json
총 3가지 섹션을 설정해야한다.
{
"agent": {
"metrics_collection_interval": 60,
"region" : "ap-northeast-2",
"debug" : false,
"run_as_user": "ubuntu",
"logfile": "/opt/aws/amazon-cloudwatch-agent/logs/service-backend.log"
},
"metrics": {
"namespace": "Service-Backend",
"metrics_collected": {
"cpu": {
"resources": [
"*"
],
// 중략..
"net": {
"resources": [
"eth0"
],
"measurement": [
"bytes_sent",
"bytes_recv",
"drop_in",
"drop_out"
]
},
},
// 중략..
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/opt/aws/amazon-cloudwatch-agent/logs/Service-Backend.log",
"log_group_name": "Service-Backend",
"log_stream_name": "Service-Backend.log",
"timezone": "Local"
}
]
}
},
"log_stream_name": "Service-Backend-Instance-Log",
"force_flush_interval" : 15
}
}
CloudWatch 에이전트 ctl 바이너리 파일에 -a fetch-config
옵션으로 위에서 설정한 .json 파일을 지정하면 에이전트가 시작된다.
다음과 같이 입력하자.
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config -m ec2 \
-s -c file:[Install-Directory]/doc/amanzon-cloudwatch-agent-schema.json
2022-04-26T03:00:06Z I! Starting AmazonCloudWatchAgent 1.247350.0
2022-04-26T03:00:06Z I! AWS SDK log level not set
2022-04-26T03:00:06Z I! Loaded inputs: processes cpu disk diskio logfile net mem netstat swap
파일에 적힌 그대로 CloudWatch Log 에서 확인할 수 있다.
.log
파일을 자동으로 관리하게한다.
CloudWatch 에이전트는 생성한 로그 파일을 자동으로 교체합니다.
로그 파일의 크기가 100MB에 도달하면 교체됩니다.
에이전트는 교체된 로그 파일을 최대 7일 동안 보존하며 교체된 백업 로그 파일을 최대 5개까지 보존합니다. 백업 로그 파일의 파일 이름에는 타임스탬프가 추가됩니다. 이 타임스탬프는 파일이 교체된 날짜와 시간을 표시합니다
(예: amazon-cloudwatch-agent-2018-06-08T21-01-50.247.log.gz).
-AWS Documments
👉🏻 로그 파일이 과도하게 커지기 전에 알아서 타임스탬프를 붙여 백업해주고, 최신 로그 스트림을 차곡차곡 모니터링 할 수 있게한다. .log
파일이 지워져도 걱정 없다.
CloudWatch Log 에 보존기간을 만기 없음
으로 지정하면 영구보존이 가능하기 때문이다.👍🏻 (물론 요금은 과금된다)
pm2 같은 매니저 앱 사용시 cloudwatch log 파일에 쉽게 로깅할 수 있다. 앱 설정파일에서 대상 파일이름만 CloudWatch-Agent 에서 사용하는 .log 파일로 바꿔주면 된다.
{
"apps" : [
{
"name" : "Error Test",
"cwd" : "src",
"script" : "ts-node error-test.ts",
"watch" : false,
"autorestart" : false,
// 일반 로그 대상
"out_file" : "./aa.log",
// 에러 로그 대상
"error_file" : "./error.log",
// Timestamp format
"log_date_format" : "YYYY-MM-DDTHH:mm:ssZ"
}
]
}
다음처럼 로그를 남기면 CloudWatch Log 에서도 확인 가능하다.
2022-04-26T15:21:18+09:00: Type error bit
위에서 설정한 CloudWatch Agent json 파일의 타임존은 Local
로 AWS Region 이 ap-northeast-2
(서울) 이기 때문에 서울시간으로 타임스탬프가 찍히는 반면, pm2 의 기본 TimeZone 은 moment.js 를 따른다.
$ sudo rm /etc/localtime
# 기본 local timezone 을 Asia/Seoul 지역으로 설정.
$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
AWS 람다에서는 TZ
환경 변수를 Asia/Seoul
로 추가하면 되고
modment.js 를 사용하는 pm2 에서는 /etc/localtime 에 Asia/Seoul
타임존 정보파일을 링킹해주면된다.