-
[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