-
[AWS] EC2 Nginx Access log를 CloudWatch로 전송하는 법Cloud/AWS 2021. 5. 12. 13:36728x90반응형
Nginx Access Log CloudWatch로 전송하는 법
이번 글에서는 위의 그림과 같이
EC2에 설치된 Nginx Access Log를 CloudWatch로 전송하는 법에 대해서 정리해보겠습니다.IAM 역할 생성

역할에다CloudWatchAgentServerPolicy정책을 추가하겠습니다.
그리고 원하는
역할 이름을 정하고 정책이 잘 선택되었는지 확인 후에 역할을 생성하겠습니다.
저는 새로
EC2 Linux2버전으로 만들 것이기 때문이 위와 같이IAM 역할을 추가하겠습니다. (만약 기존에 존재하는 EC2를 사용할 것이라면 위에서 만든 역할을 해당 EC2에게 적용해주면 됩니다.)EC2가 생성이 되었으면 접속을 한 후에
CloudWatch Agent 설치를 해보겠습니다.Apache 웹 서버 설치그 전에 먼저
LAMP 웹 서버를 설치하겠습니다.sudo yum update -y sudo amazon-linux-extras install -y php7.2 sudo yum install -y httpd sudo systemctl start httpd (Apache 웹 서버 시작(d는 daemon 임)) sudo systemctl enable httpd (Apache 웹 서버가 매번 시스템이 부팅할 때마다 시작되도록 함) sudo systemctl is-enabled httpd (httpd 가 실행되고 있는지 확인하는 명령어)위의 명령어를 통해서 설치하면
/var/www경로가 생겼을 것입니다. 거기로 이동해서CloudWatch Agent를 설치하겠습니다. (EC2 Linux2를 만들면 /var/www가 없기 때문에 Apache 웹서버는 필요 없지만.. 설치는 하겠습니다.)EC2 인스턴스에 CloudWatch Agent 설치cd /var/www sudo wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
그러면 위와 같이
zip파일 하나가 생깁니다. 스크립트 압축 파일을 해제하겠습니다.sudo unzip AmazonCloudWatchAgent.zip -d AmazonCloudWatchAgent
그리고 해당 디렉토리로 이동 후에 설치 스크립트를 이용해 에이전트를 설치하겠습니다.
sudo rm AmazonCloudWatchAgent.zip cd AmazonCloudWatchAgent sudo ./install.sh
CloudWatch Agents는 손쉽게 설치할 수 있도록 설치 마법사를 제공합니다. 설치 마법사를 실행하겠습니다.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
위의 질문에 모두
1을 치고 엔터 누르겠습니다. 그러면 계속 다음 설정에 대한 질문들이 나옵니다.
위에서 보이는 것 같이 질문에 대한 답을 하고 엔터를 누르겠습니다.


위의 보이는 질문과 답에 맞게 입력하고 엔터를 치고 설정을 하겠습니다.
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 (설치된 CloudAgent 실행) sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status (올바르게 실행되었는지 확인)
그러면 위와 같이
running이 잘 뜨고 있는 것을 확인할 수 있습니다.Apache 웹서버 Kill 하기sudo netstat -tnlp sudo kill -9 PID (80번 포트의 PID) ex) sudo kill -9 5142그리고 이번 실습에서는 Nginx를 사용할 것이기 때문에 위에서 웹 서버를 설치했던 웹서버를 위의 명령어를 통해서 80번 포트를 kill 하겠습니다.
EC2 Linux2 Nginx 설치하기sudo amazon-linux-extras install -y nginx1 (nginx 설치) nginx -v (설치확인) sudo service nginx start (nginx 서비스 시작)AWS CloudWatch 로그 그룹 생성
그리고 EC2 인스턴스에서
CloudWatch에이전트가 로그 파일도 모니터링해서 CloudWatch Logs로 보낼 수 있게 설정 파일을 편집하겠습니다.sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
"logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/nginx/access.log", // EC2 Nginx log가 저장되는 위치 "log_group_name": "Spring-log", // CloudWatch 로그 그룹 이름 "log_stream_name": "{instance_id}" } ] } } }위와 같이 입력하고
:wq를 통해서 저장하겠습니다.CloudAgent 재시작sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop 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그리고 아래와 같이 EC2 IP로 접속하면 Nginx default 화면이 보일텐데요. 아래와 같이 접속을 하면
/var/log/nginx/access.log에 로그가 생기고 그 로그는 CloudWatchAgent를 통해서 CloudWatch 로그 그룹으로 이동할 것입니다.
CloudWatch 로그 그룹 확인

그러면 위와 같이
Nginx관련 로그가CloudWatch에도 저장이 되는 것을 확인할 수 있습니다.반응형'Cloud > AWS' 카테고리의 다른 글
[AWS] Spring Logback으로 CloudWatch에 로그 보내는 법 (5) 2021.05.13 [AWS] API Gateway로 Lambda 함수 호출하는 간단한 실습해보기 (0) 2021.05.13 [AWS] Lambda로 Thumbnail 이미지 자동 생성하기 (11) 2021.05.11 [AWS] AWS Elastic Container Registry 간단한 실습해보기 (0) 2021.05.06 [AWS] Spring, Nginx, Docker로 무중단 배포하기 - 2탄 (2) 2021.04.28