기존에는 로그파일을 수집하려면 ec2 서버에 들어가서 로그를 하나하나 확인을 했어야했습니다.

또한 수많은 로그가 등장해서 내가 원하는 로그를 찾으려면 많은 시간이 걸렸습니다.

 

이 게시글에서는 이 로그를 클라우드 와치에서 볼 수 있게해보겠습니다.

 

 

CloudWatch agent 설치

 

wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

 

설정 파일 작성

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

 

{
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "root"
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
          "file_path": "/home/ubuntu/deploy.log",
          "log_group_name": "easy-yum-log-group",
          "log_stream_name": "deploy"
          }
        ]
      }
    }
  },
  "metrics": {
    "metrics_collected": {
      "disk": {
        "measurement": [
          "used_percent",
          "used",
          "total"
        ],
        "metrics_collection_interval": 60,
        "resources": [
          "*"
        ]
      },
      "mem": {
        "measurement": [
          "mem_used_percent",
          "mem_total",
          "mem_used"
        ],
        "metrics_collection_interval": 60
      }
    }
  }
}

 

 

이제 이 부분을 하나씩 뜯어보겠습니다.

 

{
  "agent": {
    "metrics_collection_interval": 300,
    "run_as_user": "root"
  },

metrics_collection_interval : 메트릭 수집 간격을 60초로 설정합니다. 이는 CloudWatch 에이전트가 메트릭 데이터를 수집하는 주기입니다.

run_as_user : 에이전트를 실행할 사용자를 "root"로 설정합니다. 이는 에이전트가 루트 사용자 권한으로 실행됨을 의미합니다.

 

 "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
          "file_path": "/home/ubuntu/deploy.log",
          "log_group_name": "easy-yum-log-group",
          "log_stream_name": "deploy"
          }
        ]
      }
    }
  }

 

 

 

logs_collected : 수집할 로그에 관한 정보를 정의합니다.

files : 수집할 로그 파일 목록을 정의합니다.

collect_list : 로그 파일 목록을 수집할 목록입니다.

file_path : 수집할 로그 파일의 경로를 "/home/ubuntu/deploy.log"로 설정합니다.

log_group_name : 클라우드 와치에 저장 돌 로그 그룹 이름을 지정합니다

log_stream_name : CloudWatchLogs의 스트림을 지정합니다.

 

"metrics": {
    "metrics_collected": {
      "disk": {
        "measurement": [
          "used_percent",
          "used",
          "total"
        ],
        "metrics_collection_interval": 300,
        "resources": [
          "*"
        ]
      },

disk : 디스크 메트릭 수집 설정을 정의합니다.

measurement : 수집할 디스크 메트릭의 종류를 정의합니다. 여기서는 used_percent, used, total을 수집합니다.

metrics_collection_interval : 메트릭 수집 간격을 60초로 설정합니다. 이는 CloudWatch 에이전트가 메트릭 데이터를 수집하는 주기입니다.

resources : 수집할 디스크 리소스를 모든 리소스로 설정합니다.

 

"mem": {
        "measurement": [
          "mem_used_percent",
          "mem_total",
          "mem_used"
        ],
        "metrics_collection_interval": 300
      }
    }
  }

"mem": 메모리 메트릭 수집 설정을 정의합니다.
"measurement": 수집할 메모리 메트릭의 종류를 정의합니다. 여기서는 "mem_used_percent", "mem_total", "mem_used"를 수집합니다.
"metrics_collection_interval": 메트릭 수집 간격을 60초로 설정합니다.

 

 

이 구성파일을 통해 CloudWatch 에이전트에게 메트릭 및 로그 데이터를 수집하고 해당 데이터를 CloudWatch 서비스로 전송하는 방법을 지시합니다. 설정된 간격에 따라 에이전트는 주기적으로 메트릭 로그 데이터를 수집하여 CloudWatch로 보냅니다.

 

위에서 설정한 내용을 적용합니다.

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

 

 

* 일반적으로 toml 파일이 Amazon CloudWatch 에이전트의 설정을 정의하는데 사용되는 파일입니다.

 

에이전트 로그 동작을 확인해보면

 

I! Config has been translated into TOML /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

이와 같은 문구가 나타나는데 구성 파일 변경사항이 TOML 형식으로 변환되어 

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml 파일에 반영되고 있는 것을 확인 할 수 있습니다.

이는  json 파일의 구성을 그대로 가져와서 반영함으로써 일어나는 현상입니다.

 

 

이제 서버에서 로그를 생성하면 실시간으로 로그가 기록되는 것을 확인하실 수있습니다.

 

 

 

 

참고 게시글

https://gksdudrb922.tistory.com/204

'Deep Dive > DevOps' 카테고리의 다른 글

Linux - 계정 추가하기  (0) 2023.08.07
모니터링 기술  (0) 2023.07.16
ec2 서버의 일반적인 로그파일의 위치  (0) 2023.07.12
cloud watch 로그 그룹 설정  (0) 2023.07.09
merge와 rebase의 차이  (0) 2023.07.08

+ Recent posts