[10/15] 모니터링 시스템 구축
교재 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"
}