서비스를 운용하면서 많이 하게 되는 일 중 하나는 바로 로그를 읽는 일입니다.
로그는 시간에 따라 어떤 일이 발생했는지 알 수 있게 해주는 객관적인 단서입니다.
로그를 기록하고 관리하는 일은 매우 중하며 서비스의 크기가 커질수록 로그의 양 또한 늘어날 것이기 때문에
필요한 로그를 필요에 따라 손쉽게 찾을 수 있도록 관리하는 일 또한 중요합니다.
아마 이 글을 보는 개발자 분들도 개발을 하면서 에러가 발생했을 때 로그를 확인해가며 수정을 한 경험은 많이 있을 것이라고 생각합니다.
로그를 관리하면서 생기는 문제 중 유실의 문제 또한 있습니다.
Auto Scaling으로 인스턴스가 하루에도 여러번 실행되고 종료될텐데,
인스턴스가 종료된다면 내부에 있는 데이터 또한 모두 유실이 되므로 내부에 있는 중요한 정보들은 따로 관리하여야 합니다.
그렇다면 AWS에서 로그를 관리하고 분석하는 방법인 CloudWatch Logs에 대해 알아보겠습니다.
CloudWatch Logs는 이전 포스트에서 알아본 CloudWatch의 기능 중에 로그를 관리하는 기능입니다.
CloudWatch Agent가 로그 또한 모니터링하여 CloudWatch Logs로 전송하는 역할을 해줍니다.
로그의 경우에는 영구적으로 보존할 수도 있으며 만료 시간을 지정해서 자동으로 삭제되게 할 수도 있습니다.
요금은 프리 티어의 경우에는 5GB가 무료로 제공됩니다.
이제 이를 실제로 사용을 해보겠습니다.
1. 우선 CloudWatch 서비스로 접속한 후, 로그 탭을 클릭합니다.
2. 로그 그룹 생성을 클릭하여 그룹의 이름을 지정한 후 만들어줍니다.
3. 이전 포스트에서 CloudWatch Agent를 설치하면서 설정을 셋팅하였습니다.
이 때 셋팅값중에 로그를 설정하는 항목이 있었습니다.
이를 다시 '예'로 설정한 후 경로와 이름을 지정해줍니다.
log의 경로는 저는 apache를 쓰므로 /etc/httpd/logs/access_log로 지정해주었고,
그룹의 이름은 로그 그룹 이름으로 해주어야 합니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
그리고 config 파일을 확인해보면 logs 항목이 지정되어 있는 것을 확인할 수 있습니다. sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
4. 설정 파일을 업데이트한 후 에이전트를 실행하고, 시작이 되었는지 확인합니다. 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 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
5. 인스턴스의 도메인 주소로 접속을 합니다.
6. 다시 CloudWatch의 로그를 들어가고, 해당 로그 그룹을 들어가보면 다음과 같이 로그 스트림에 인스턴스가 추가된 것을 볼 수 있습니다.
7. 해당 로그 스트림을 클릭해보면, 로그를 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
[AWS] S3 (0) | 2020.07.23 |
---|---|
[AWS] 탄력적 IP (Elastic IP) (0) | 2020.07.20 |
[AWS] CloudWatch (0) | 2020.07.12 |
[AWS] CodeDeploy (2/2) (0) | 2020.07.11 |
[AWS] CodeDeploy (1/2) (0) | 2020.07.10 |