cloud bee

AWS cloudwatch-agent로 로깅하기 본문

AWS/data

AWS cloudwatch-agent로 로깅하기

who you 2023. 1. 8. 19:17

오늘은 ec2 instance에서 발생하는 access log를 cloudwatch-agent로 로그를 수집할 것이다.

 

해당 다이어그램은 다음과 같다.

실습을 구현할 다이어그램 이미지

 

블로그 과정에서 필요로 하는 서비스 목록

✅  Amazon ec2( Amazon Elastic Compute Cloud )

✅  IAM ( Identity and Access Management )

  Amazon CloudWatch

 

블로그 실습 조건

amazon console account

region: ap-northeast-2( 서울 리전 )

 

Amazon Web Service Steps

Step1. Create vpc for 10.0.0.0/16 band

Step2. Create a public subnet with availability zone a

Step3. Basic networking settings

Step4. Create a Role in Identity and Access Management

Step5. Create and set up an ec2 instance

Step6. Cloud Watch Logging Results Viewed

 

 

 

Step1. Create vpc for 10.0.0.0/16 band

VPC console Link!: https://console.aws.amazon.com/vpc

 

https://console.aws.amazon.com/vpc/home

 

console.aws.amazon.com

이름 태그는 demo-vpc로 지정한다.

IPv4 CIDR은 다음과 같이 지정한다. 10.0.0.0/16

그 이외 값은 기본값으로 세팅해 준다.

VPC 설정하기

 

 

Step2. Create a public subnet with availability zone a

이제 subnet mask를 생성해 준다. 이 서브넷 마스크도 vpc 콘솔에서 생성하도록 한다.

서브넷의 이름은 다음과 같이 지정해 준다. demo-a

availability zone은 다음과 같이 지정한다. ap-northeast-2a

IPv4 CIDR 블록은 다음과 같이 지정한다. 10.0.0.0/24

서브넷 마스크 설정하기

 

(선택사항)

퍼블릭 IP 활성화

 

 

Step3. Basic networking settings

인터넷 게이트웨이를 생성하고 vpc에 연결해 준다.

라우팅 테이블을 생성해 준다. Name: pub

subnet에 demo-a를 연결하고, 라우팅에 인터넷 게이트웨이를 추가해 준다.

명시적 서브넷 연결
인터넷 게이트웨이 연결

 

 

Step4. Create a Role in Identity and Access Management

Identity and Access Management에서 역할을 생성하기 위해 아래 콘솔에 접속해 준다.

IAM console Link!: https://console.aws.amazom.com/iam

역할 > 역할 만들기를 선택해 준다.

신뢰할 수 있는 엔터티 유형에서 AWS 서비스를 선택해 준다. 사용사례는 EC2로 선택한다.

AWS 서비스 역할 생성

 

CloudWatchAgentAdminbPolicy라는 권한을 선택한 후 역할 이름을 cloudwatch-access로 지정해 준다.

cloudwatch 역할 생성

 

 

Step5. Create and set up an ec2 instance

아래 ec2 콘솔창을 열어 ec2 instance 생성단계를 진행해 준다.

ec2 console Link!: https://console.aws.amazon.com/ec2 

 

https://console.aws.amazon.com/ec2/v2/home

 

console.aws.amazon.com

( 선택 사항 ) demo-host에 필요한 보안그룹을 생성한다. 인바운드 규칙 22

인스턴스 > 인스턴스 시작 단계를 진행하여 ec2 instance를 생성한다.

이름은 demo-instance로 지정하고, AMI를 Amazon Linux로 설정해 준다.

이후 t2.micro를 선택하고, 키페어를 선택해 준다( 선택 사항 ).

 

인스턴스 이름 지정
인스턴스 설정 1
인스턴스 설정 2

 

* 사용자 데이터는 다음과 같이 지정해 준다.

#!/bin/bash
yum install httpd -y
yum install amazon-cloudwatch-agent -y
cat << EOF > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
    "agent": {
      "metrics_collection_interval": 10,
      "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log",
      "run_as_user": "root"
    },
    "logs": {
      "logs_collected": {
        "files": {
          "collect_list": [
            {
              "file_path": "/var/log/httpd/access_log",
              "log_group_name": "/aws/ec2/access",
              "log_stream_name": "log_{instance_id}",
              "timezone": "Local"
            }
          ]
        }
      }
    }
  }
EOF
/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
systemctl restart httpd

 

file_path Log가 위치한 파일 경로이다.
log_group_name cloudwatch 로그그룹 이름이다.
log_stream_name cloudwatch 로그스트림 이름이다.

 

 

Step6. Cloud Watch Logging Results Viewed

cloudwatch에서 로그 그룹과 로그 스트림을 확인해 본다.

cloudwatch console Link!: https://console.aws.amazon.com/cloudwatch 

 

https://console.aws.amazon.com/cloudwatch/

 

console.aws.amazon.com

로그그룹 확인
로그 스트림 확인

 

Comments