EC2에 추가적으로 설치한 Apache서버의 로그와 같이 별도의 서비스는 CloudWatch에 연결하기 위해 Agent를 설치해야 한다.
Agent Install 방법은 YUM, RPM Install을 통해 설치하는 방법으로 진행된다. 아래 가이드를 참고하길 바란다.
CloudWatch Agent 설치방법
1. 설치파일 다운로드 및 인스톨
$ sudo yum install amazon-cloudwatch-agent
또는
$ rpm -ivh https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
$ sudo rpm -U ./amazon-cloudwatch-agent.rpm
2. Agent Configuration File Wizard를 통해 Configuration File 생성
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
3. 환경설정을 진행
필자의 경우 아래 로그를 수집설정하겠다.
- Log file path: /var/log/www/access/*
- Log group name: apache/access
- Log stream name: [{instance_id}]
4. Apache 기본로그는 스페이스로 컬럼을 구분하기 때문에 JSON 타입으로 로그를 생성할 수 있도록 Apache 환경설정이 필요하다.
$ sudo nano /etc/httpd/conf/httpd.conf
에서 "LogLevel warn" 하단에 아래 로그 포맷을 추가한다.
LogFormat "{ \"time\":\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\", \"process\":\"%D\",
\"filename\":\"%f\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\",
\"query\":\"%q\",\"method\":\"%m\", \"status\":\"%>s\",
\"userAgent\":\"%{User-agent}i\",\"referer\":\"%{Referer}i\"}" cloudwatch
로그 경로는 CloudWatch Agent Configuration 시 설정한 위치로 변경하자
CustomLog "/var/log/www/access/access_log" cloudwatch
5. 로그가 저장되는 위치의 디렉토리를 생성하자.
$ sudo mkdir /var/log/www/
$ sudo mkdir /var/log/www/access
6. Apache 데몬 재시작 및 Agent를 자동실행 등록하자
$ sudo systemctl restart httpd #Apache 데몬 재시작
$ 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
$ sudo systemctl start amazon-cloudwatch-agent.service
$ sudo systemctl enable amazon-cloudwatch-agent.service
7. [AWS Console]-[CloudWatch]-[로그그룹]에서 새로이 생성된 로그를 확인하자
CloudWatch로 모니터링하는 대상이 많아질 수록 중앙집중식으로 Agent를 관리할 필요가 있다. 예를 들어 Apache 로그 설정을 SSM 글로벌 파라미터를 통해서 일괄적으로 설정하여 변경사항이 있을경우 모든 Apache 로그를 수집하는 Agent에게 환경설정을 내릴 수 도 있다. 이때 사용되는 것이 SSM Parameter이다.
적용방법
1. CloudWatch Wizard로 환경설정 시 다음과 같은 설명들이 나온다.
이때 1번을 선택하여 설정을 완료한다.
2. 이렇게 설정하고 나면 [AWS Console]-[AWS Systems Manager]-[Parameter Store]에 해당 로그설정이 등록되었음을 알 수 있다. 이 로그설정은 JSON포맷으로 방대한 양을 포함하고 있다.
3. 이제 해당 SSM Parameter를 이용해 모든 Apache 데몬에 변경사항을 반영코자 한다.
각 EC2 인스턴스를 접속하여 아래 CLI를 실행한다.
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:configuration-parameter-store-name -s
※ 변경사항이 있을때마다 매번 해당 작업을 하는 것은 비효율적이므로 부트스트랩에 걸어두면 EC2 재기동시 알아서 환경설정을 Fetch할 것이다.
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) Log의 종류에 대해 알아보자 (0) | 2022.03.15 |
---|---|
(AWS) CloudWatch Filter를 사용하여 향상된 로그 관리 (0) | 2022.03.15 |
(AWS) CloudWatch Alarm에 대해서 (0) | 2022.03.12 |
(AWS) CloudWatch Metric에 대해서 (0) | 2022.03.12 |
(AWS) Kinesis란? (0) | 2022.03.07 |