운영중 모니터링 데이터 수집은 중요하다. 그 중 로그는 중요도가 아주 높다.
이 로그를 서버에만 가지고 있다면 보안적으로 좋지 않다. 이때 cloudwatch를 이용하여 로그를 백업 해 보자.
사전에 cloudwatch agent를 설치하여야 한다.
cloudwatch agent를 설치하고 나면 config파일이 생성된다.
여러 폴더에 분산 되어있는 파일의 로그를 전달하는 경우 아래와 같은 방법으로 push 할 수 있다.
$ 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": "/var/log/messages",
"log_group_name": "testlogbackup",
"log_stream_name": "{instance_id}"
}
]
}
}
}, ...
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/logs.json -s
수정된 json 설정으로 cloudwatch agent를 실행한다.
설정된 경로인 '/var/log/messages' 의 로그를 cloudwatch에 전달한다.
cloudwatch의 로그그룹에서 제대로 생성되었는지 확인 해 보자.
log_group_name 으로 지정된 'testlogbackup'으로 올라와 있다.
로그 스트림을 확인해 보면 로그 이벤트가 타임스탬프에 맞춰 출력된다.