기존에 했던 것이 운영 서버 관리에 필요한 환경 구성과 코드 배포라면, 모니터링 또한 알아보겠습니다.
모니터링
서버 모니터링은 안정적인 서비스 운영이라는 목적이 있습니다.
만약 서버 장애가 발생하고 이를 오랜 시간동안 해결하지 못한다면 서비스 사용자들은 해당 서비스에 대한 신뢰를 잃게 될 것입니다.
제일 좋은 해결책은 큰 장애가 발생하기 전에 예방을 하는 것이고,
만약 장애가 발생한다면 최대한 빠른 시간 내에 원인을 알아내고 오류를 잡아내야 합니다.
이러한 원인을 찾기 위해 꼭 필요한 것이 모니터링입니다.
서버 모니터링의 영역은 4가지로 구분이 됩니다.
인프라에 대한 모니터링
어플리케이션이 돌아가는 인프라에 장애가 발생하거나 징후가 보이는지 파악
클라이언트의 요청에 대한 모니터링
클라이언트에서 우리가 의도한 대로 요청을 보내는지, 얼마만큼의 요청량이 들어오는지 등에 대한 파악
어플리케이션에 대한 모니터링
작성하고 배포한 코드가 예상대로 동작하는지, 어플리케이션의 어떤 부분이 병목이 되어 성능이 저하되는지 파악
데이터에 대한 모니터링
의도한 대로 데이터가 들어가는지, 데이터가 들어가는 속도에 대한 파악
Amazon CloudWatch는 DevOps 엔지니어, 개발자, SRE(사이트 안정성 엔지니어)
및 IT 관리자를 위해 구축된 모니터링 및 관찰 기능 서비스입니다.
CloudWatch를 사용하여 AWS 내 자원과 어플리케이션에 대한 모니터링을 할 수 있게 해줍니다.
CloudWatch는 로그, 지표 및 이벤트 형태로 모니터링 및 운영 데이터를 수집하여
AWS와 온프레미스 서버에서 실행되는 AWS 리소스, 애플리케이션 및 서비스에 대한 통합된 보기를 제공합니다.
(요금 - aws.amazon.com/ko/cloudwatch/pricing/)
프리티어로는 다음과 같은 지표를 확인할 수 있습니다.
CloudWatch에서 지표란 서비스의 항목에 대한 값들을 시간에 맞추어 기록한 값으로, AWS 내의 대부분 서비스는 지표로 기록이 됩니다.
ex) CPU 사용량, 네트워크 전송량 등
이는 별도로 설정하지 않아도 자동으로 기록이 되고, 이외에 별도로 사용자가 지정한 지표들을 기록할 수 있습니다.
ex) 회원 수, 접속자 수 등
실제로 CloudWatch로 들어가여 최근 3일간 인스턴스 수를 확인해보니 다음과 같이 그래프로 확인할 수 있었습니다.
다음으로 Cloud Agent를 이용하여 메모리, 디스크 사용량 지표와 로그를 기록하겠습니다.
우선 CPU 사용량이나 네트워크 전송량 등은 기본적으로 제공해주지만 메모리와 디스크 사용량은 제공해주지 않습니다.
이를 지표로 보기 위해서는 다음과 같은 과정을 거쳐야 합니다.
1. 우선 인스턴스에 IAM 역할을 추가해주어야 합니다.
IAM 서비스에서 역할 만들기를 선택한 후, EC2에 서비스 역할을 지정할 것이므로 EC2를 선택합니다.
2. 정책 중 CloudWatchAgentServerPolicy를 검색 후 선택하고, 역할을 생성해줍니다.
3. 인스턴스로 들어가여 IAM 역할을 바꾸어줍니다.
4. 해당 인스턴스로 ssh 접속을 해줍니다.
5. CloudWatchAgent를 설치하기 위해 폴더를 이동 후, 스크립트 묶음을 내려받습니다.
cd /var/www/
wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
6. 압축을 푼 후 설치 스크립트를 실행해줍니다.
unzip AmazonCloudWatchAgent.zip -d AmazonCloudWatchAgent
rm AmazonCloudWatchAgent.zip
cd AmazonCloudWatchAgent
sudo ./install.sh
7. 설치 마법사를 실행합니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
8. 필요에 맞게 설정을 해줍니다.
어떤 OS를 사용하시나요? EC2 인스턴스에 설치하실 것인가요 서버에 설치하실 것인가요? etc
9. CloudWatchAgent를 실행해줍니다.
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
10. CloudWatchAgent가 올바르게 살행됐는지 확인해줍니다.
만약 상태가 running이라면 올바르게 시작이 된 것입니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
11. CloudWatch로 들어간 후, 지표를 클릭해보면 CWAgent라는 네임스페이스가 생성된 것을 확인할 수 있습니다.
12. 이 중 하나를 클릭한 후 확인을 해보면, 결과와 같이 기존에 없던 메모리 사용량 또한 표시된다는 것을 확인할 수 있습니다.
(인스턴스를 생성 후 바로 테스트를 해본 것이라 그래프가 제대로 나타나지 않는 점이 좀 아쉽네여..)
마지막으로 CloudWatchAgent에 정의된 지표 목록을 첨부하도록 하겠습니다.
'AWS' 카테고리의 다른 글
[AWS] 탄력적 IP (Elastic IP) (0) | 2020.07.20 |
---|---|
[AWS] CloudWatch Logs (0) | 2020.07.13 |
[AWS] CodeDeploy (2/2) (0) | 2020.07.11 |
[AWS] CodeDeploy (1/2) (0) | 2020.07.10 |
[AWS] IAM (0) | 2020.07.10 |