[AWS] EC2 오토스케일링 환경에서 웹서버 로그 보관하는 방법(클라우드와치 에이전트) > AWS.클라우드
AWS.클라우드

[AWS] EC2 오토스케일링 환경에서 웹서버 로그 보관하는 방법(클라우드와치 에이전트)

조회 55회 댓글 0건

온프레미스 환경에선 주기적으로 압축하여 보관하거나 복사하거나 해서 관리 후 삭제 하기도 하는데. 오토스케일링 사용으로 EC2가 없어지는 경우 이런 방식이 필요하다. 물론 EFS를 사용하는 방법도 있겠지만 난 그러고 싶지 않다.


5c12d12b0df1fdcd9179031a84c48c22_1713220199_5563.png
 


● 클라우드와치 Agent를 설치 한다.

yum -y install amazon-cloudwatch-agent


▷ 아래는 테스트 하기 위한 로그를 2초에 한번 씩 발생 시킨다.

while true; do (curl http://localhost; sleep 2); done


프라이빗 네트워크라면 아래와 같이 하면 됩니다. www.test.com은 인증서가 있는 가상호스트

curl -k --resolve www.test.com:443:127.0.0.1 -H "Host: www.test.com" https://www.test.com/index.php


* 위 스크립트에 대한 설명

while true; do ...; done은 주어진 명령어를 무한히 반복합니다.

curl -k는 SSL 인증서 검증을 비활성화합니다.

--resolve www.test.com:443:127.0.0.1는 www.test.com을 443 포트에서 127.0.0.1 주소로 해석하도록 합니다.

-H "Host: www.test.com"는 HTTP 요청 헤더에 Host: www.test.com을 추가하여, 웹 서버가 올바른 가상 호스트로 요청을 처리하도록 합니다.

https://www.test.com/index.php는 요청할 URL입니다.

sleep 2는 매 요청 사이에 2초간 대기합니다.



● EC2에서 CloudWatch agent 설정하기

▷ 접근할수 있는 정보 넣어주고 리전을 아래와 같이 변경해 준다.

# aws configure

AWS Access Key ID [None]:

AWS Secret Access Key [None]:

Default region name [None]: ap-northeast-2

Default output format [None]:



● 클라우드 워치 에이전트 설정 위자드

▷ 질문을 통해 설정하는 프로그램 실행

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


▷ 실행을 하고 나면 아래 파일이 있을 것이다.

log_group_name은 클라우드와치 그룹에 보이는것으로 잘못 되었으면 변경해 두는 것이 좋다.

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


▷  아래와 같은 오류를 만나게 되면 추가 설치가 필요 하다

======== Error Log ========

2023-03-12T09:21:28Z E! [telegraf] Error running agent: Error loading config file /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml: error parsing socket_listener, open /usr/share/collectd/types.db: no such file or directory

yum -y install collectd


▷ 시작,상태,멈춤


  /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
  /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
  /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
 


EC2 인스턴스가 부팅될 때마다 특정 작업을 자동으로 실행하도록 설정하는 것이 가능한데 이를 위해 systemd 서비스를 사용하여 CloudWatch Agent를 시작하도록 설정할 수 있다.

vim /etc/systemd/system/cloudwatch-agent.service


[Unit]

Description=Amazon CloudWatch Agent

After=network-online.target


[Service]

Type=simple

ExecStart=/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

Restart=on-failure


[Install]

WantedBy=multi-user.target


▷ 위에서 필요한 경우 아래 참고 하여 더 추가 할 수 있다 - 별도 스크립트 필요 할듯

ExecStartPre=: 서비스의 ExecStart 명령어가 실행되기 전에 실행됩니다.

ExecStartPost=: 서비스의 ExecStart 명령어가 실행된 후에 실행됩니다.

ExecReload=: 서비스가 재시작되지 않고 설정이 다시 로드될 때 실행됩니다.

ExecStop=: 서비스가 정지될 때 실행됩니다.

ExecStopPost=: 서비스가 정지된 후에 실행됩니다.


▷ 서버 시작할 때 자동 실행 시키기

테스트용에선 shutdown -r now 한번 해보자 잘 뜨는지!!

systemctl enable cloudwatch-agent.service

systemctl start cloudwatch-agent.service



▷ 프로세스 있는지 확인

ps augx | grep amazon-cloudwatch-agent



● 참고 할곳

  - https://awlhdla.tistory.com/154

  - https://devlog-wjdrbs96.tistory.com/326

  - [AWS] 클라우드와치 로그그룹을 S3에 저장 > AWS.클라우드



  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 61건 1 페이지
  • profile_image 페이지를 가져오지 못하니 404인가 아니면 서버쪽 설정 문제 이므로 500번때 코드가 나올까?결론은 아래 처럼 502 오류가 발생 합니다.ELB에서 리스너가 없을 경우 서버로 접속해서 데이터를 가져오지 못하는 상황에선 아래와 같은 메시지를 만나게 됩니다.포트지정 설정을 잘못해도 동일 하겠지요. 학술적으로 정리를 해보면 아래와 같이 말을 할 수 있다. HTTP 502 코드는 "Bad Gateway" 오류로 웹 서버가 게이트웨이나 프록시 서버를 통…
  • profile_image https용도로 사용할 수 있는 AWS Cerificate Manager 페이지에서의 인증서 생성하는 것에 대한 것입니다.이곳에선 외부에서 받은 인증서 파일을 올리거나 무료로 인증서를 생성 할 수 있습니다.AWS 무료인증서는 속도가 빠른 장점이 있고 무료이지만 문제는 이것을 다른곳에선 사용하지 못한 다는것입니다.예를 들면 EC2의 웹서버에서 https 용도로 사용하지 못합니다.그럼 EC2에선 외부에서 생성한 인증서를 가져와 사용하던가. 아니면 …
  • profile_image 클라우드 와치 수동으로 내보내기 하려 하는데 아래와 같은 메시지를 보게 되면GetBucketAcl call on the given bucket failed. Please check if CloudWatch Logs has been granted permission to perform this operation."S3 버킷에 대한 GetBucketAcl 호출 실패" 오류는 CloudWatch Logs가 지정된 S3 버킷에 대한 접근 권한이 없음을…
  • profile_image NAT(Network Address Translation) 게이트웨이 구성으로 VPC(Virtual Private Cloud) 환경에서 프라이빗 서브넷에 있는 인스턴스들이 인터넷이나 AWS의 다른 공개 서비스에 접근할 수 있게 된다. ● NAT 게이트웨이NAT 게이트웨이는 AWS에서 관리하는 서비스로, 높은 가용성과 자동 확장 기능을 제공합니다. NAT 게이트웨이를 사용하면 별도의 관리 없이도 프라이빗 서브넷의 인스턴스가 인터넷에 접근할 수 있…
  • profile_image 아마존리눅스2에서 기본적으로 mysql 클라이언트가 없어서 접속을 하지 못하는 문제가 있어서 설치 하는 도중에 발생한 문제를 다음에는 쉽게 해결하기 위해서 적습니다.이게 없으면 덤프받은것 올리지도 못하고 해당 서버에서 디비서버로 접속도 못하네요~● mysql 클라이언트 설치 시도amazon-linux-extras install epel -ywget https://dev.mysql.com/get/mysql80-community-release-el…
  • profile_image S3에서 올린 본인 이외에 제 3자도 읽을 수 있도록 올린 것이 아닌 경우 클라우드 프론트에서만 읽을 수 있는 권한을 주는 방법에 대한 것이다. 프로그램으로 하나 씩 올리면서 권한을 줬으면 문제 되지 않는다.그렇지 않고. 아래 처럼 올린 경우 권한이 없어서 오류가 발생 한다. s3cmd sync /로컬/디렉토리 s3://버킷이름 아래처럼 배포를 생성할때 설정 해도 되고 다 설정한 다음 후에 수정을 해도 됩니다.<Error><Co…