ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] EC2 Nginx Access log를 CloudWatch로 전송하는 법
    Cloud/AWS 2021. 5. 12. 13:36
    728x90
    반응형

    Nginx Access Log CloudWatch로 전송하는 법

    스크린샷 2021-05-12 오전 11 47 46

    이번 글에서는 위의 그림과 같이 EC2에 설치된 Nginx Access Log를 CloudWatch로 전송하는 법에 대해서 정리해보겠습니다.

     

     

     

    IAM 역할 생성

    스크린샷 2021-05-12 오전 9 05 52스크린샷 2021-05-12 오전 9 09 25

     

    역할에다 CloudWatchAgentServerPolicy 정책을 추가하겠습니다.

     

     

     

    스크린샷 2021-05-12 오전 9 10 48

     

    그리고 원하는 역할 이름을 정하고 정책이 잘 선택되었는지 확인 후에 역할을 생성하겠습니다.

     

     

     

    스크린샷 2021-05-12 오전 9 13 05

     

    저는 새로 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

    스크린샷 2021-05-12 오전 9 25 38

     

    그러면 위와 같이 zip 파일 하나가 생깁니다. 스크립트 압축 파일을 해제하겠습니다.

     

     

     

    sudo unzip AmazonCloudWatchAgent.zip -d AmazonCloudWatchAgent

    스크린샷 2021-05-12 오전 9 27 32

     

    그리고 해당 디렉토리로 이동 후에 설치 스크립트를 이용해 에이전트를 설치하겠습니다.

     

     

    sudo rm AmazonCloudWatchAgent.zip
    cd AmazonCloudWatchAgent
    sudo ./install.sh

    스크린샷 2021-05-12 오전 9 29 30

     

    CloudWatch Agents는 손쉽게 설치할 수 있도록 설치 마법사를 제공합니다. 설치 마법사를 실행하겠습니다.

     

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

    스크린샷 2021-05-12 오전 9 32 16

     

    위의 질문에 모두 1을 치고 엔터 누르겠습니다. 그러면 계속 다음 설정에 대한 질문들이 나옵니다.

     

     

    스크린샷 2021-05-12 오전 9 36 58

     

    위에서 보이는 것 같이 질문에 대한 답을 하고 엔터를 누르겠습니다.

     

     

    스크린샷 2021-05-12 오전 9 38 53스크린샷 2021-05-12 오전 9 43 18

     

    위의 보이는 질문과 답에 맞게 입력하고 엔터를 치고 설정을 하겠습니다.

     

    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 (올바르게 실행되었는지 확인)

    스크린샷 2021-05-12 오전 9 47 43

     

    그러면 위와 같이 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 로그 그룹 생성

    스크린샷 2021-05-12 오전 9 52 13

    그리고 EC2 인스턴스에서 CloudWatch 에이전트가 로그 파일도 모니터링해서 CloudWatch Logs로 보낼 수 있게 설정 파일을 편집하겠습니다.

     

    sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json

    스크린샷 2021-05-12 오전 11 31 15

    "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 로그 그룹으로 이동할 것입니다.

     

    스크린샷 2021-05-12 오전 11 32 50

     

    CloudWatch 로그 그룹 확인

    스크린샷 2021-05-12 오전 11 33 01스크린샷 2021-05-12 오전 11 33 06

     

    그러면 위와 같이 Nginx 관련 로그가 CloudWatch에도 저장이 되는 것을 확인할 수 있습니다.

    반응형

    댓글

Designed by Tistory.