카테고리 없음

[10/15] 모니터링 시스템 구축

그래놀라_ 2020. 10. 21. 23:50

교재 8장

모니터링 시스템 구축

 

모니터링 하는 이유 : 장애가 발생했을 때 빠르게 발견하여 해결할 수 있도록

사람이 계속해서 모니터링할 수 없기 때문에 일정 부분 자동화를 통해 사람에게 알림으로 알려주도록

서비스가 실행되면서 발생하는 모든 로그와 지표 정보들을 수집해서 한눈에 볼 수 있도록 시각화 하는 모니터링 서비스의 역할.

Auto Scaling 그룹의 자동 조정도 CloudWatch에 쌓인 지표에 따라 인스턴스가 늘어나고 줄어든다.

 

  • 인프라에 대한 모니터링 : 애플리케이션이 실행되고 있는 인프라에 장애가 발생하거나 징후가 있지는 않은지 파악
  • 클라이언트 요청에 대한 모니터링 : 서비스로 들어오는 클라이언트의 요청이 적절한지
    • ex) 로그인 서비스 호출에서는 id와 pw값이 들어와야하는데 id에 특수문자 값이 포함되는 등 적절하지 않을 경우 모니터링. 값이 적절하게 들어오는지
    • 파라미터를 변조해서 공격하는 경우도 있기 때문에 이를 WAF를 통해 감지한다
    • 클라이언트로부터의 부정한 요청을 감지하는 것 IDS IPS 등
  • 애플리케이션에 대한 모니터링 : 앞에서 봤던 health체크 처럼 서비스가 살았는지 죽었는지 모니터링
  • 데이터에 대한 모니터링
    • 어떠한 형태든지 데이터는 디비와 연동이 된다 이 디비라는 애플리케이션도 잘 돌고 있는지 모니터링 해야한다. 
    • 서비스(앱)과 디비 간 들어오고 나가는 데이터도 모니터링한다

 

 

CloudWatch Agent로 메모리, 디스크 사용량 지표, 로그 기록

#1 인스턴스에 IAM 추가

 

#1-1 CloudWatchAgentServerPolicy 롤을 추가한다

 

아래와 같은 사항들을 제한/허가 내용

 

태그 넘어가기

 

 

 

 

#2 인스턴스로 이동

 

 

#2-1 인스턴스에 IAM role 붙이기

 

지금까지 한 것 : ec2에서 agent가 동작할 수 있게 롤을 붙여준 것이다

이제 할 일 : 에이전트 설치

 

 

 

#3 EC2 인스턴스에 CloudWatch 에이전트 설치

SSH 접속

[ec2-user@ip-172-31-40-251 www]$ wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip

--2020-10-21 14:26:13--  https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip

Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.216.144.141

Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.216.144.141|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 70167589 (67M) [application/zip]

Saving to: ‘AmazonCloudWatchAgent.zip’

 

AmazonCloudWatchAgent.zi 100%[==================================>]  66.92M  7.84MB/s    in 10s

 

2020-10-21 14:26:24 (6.65 MB/s) - ‘AmazonCloudWatchAgent.zip’ saved [70167589/70167589]

 

 

 

압출 풀기

[ec2-user@ip-172-31-40-251 www]$ unzip AmazonCloudWatchAgent.zip -d AmazonCloudWatchAgent

Archive:  AmazonCloudWatchAgent.zip

  inflating: AmazonCloudWatchAgent/amazon-cloudwatch-agent.deb

  inflating: AmazonCloudWatchAgent/install.sh

  inflating: AmazonCloudWatchAgent/amazon-cloudwatch-agent.rpm

  inflating: AmazonCloudWatchAgent/detect-system.sh

  inflating: AmazonCloudWatchAgent/manifest.json

  inflating: AmazonCloudWatchAgent/uninstall.sh

 

 

압축 풀고 불필요한 zip파일은 삭제

[ec2-user@ip-172-31-40-251 www]$ rm AmazonCloudWatchAgent.zip
[ec2-user@ip-172-31-40-251 www]$ cd AmazonCloudWatchAgent/

 

설치 스크립트를 이용해 에이전트 설치

[ec2-user@ip-172-31-40-251 AmazonCloudWatchAgent]$ sudo ./install.sh

create group cwagent, result: 0

create user cwagent, result: 0

[ec2-user@ip-172-31-40-251 AmazonCloudWatchAgent]$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

=============================================================

= Welcome to the AWS CloudWatch Agent Configuration Manager =

=============================================================

On which OS are you planning to use the agent?

1. linux

2. windows

default choice: [1]:

1

         :  책 204쪽부터 설정 뭐해야할지 나온다

Program exits now.

 

 

 

cloudwatch의 agent 실행한다

-a config파일을 수집

-m ec2 머신에

-c 파일위치

[ec2-user@ip-172-31-40-251 AmazonCloudWatchAgent]$ 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

/opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source file:/opt/aws/amazon-cloudwatch-agent/bin/config.json --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default

Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp

Start configuration validation...

/opt/aws/amazon-cloudwatch-agent/bin/config-translator --input /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json --input-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --output /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default

2020/10/21 14:39:19 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp ...

Valid Json input schema.

I! Detecting runasuser...

No csm configuration found.

No log configuration found.

Configuration validation first phase succeeded

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

Configuration validation second phase succeeded

Configuration validation succeeded

amazon-cloudwatch-agent start/running, process 8607

 

에이전트가 올라가고 에이전트가 시스템 정보와 로그 정보를 클라우드 왓치쪽으로 보내고 있을 것이다.

 

 

#4 상태 확인

[ec2-user@ip-172-31-40-251 AmazonCloudWatchAgent]$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-

cloudwatch-agent-ctl -m ec2 -a status

{

  "status": "running",

  "starttime": "2020-10-21T14:39:18+0000",

  "version": "1.247345.36b249270"

}