AWS CloudWatch
§ AWS 모니터링하는 서비스
§ 300+ built-in 지표
§ 본인의 커스텀 지표 등록 가능
§ 지표에 대한 경고발생
§ 로그의 억세스&아카이브 중앙화 된 서비스
7.
CloudWatch
AWS의 각종 리소스를감시 하는 서비스
• AWS 리소스의 생사, 성능, 로그의 감시/감독
• 대상 지표에 대한 그래프를 통한 가시화
• 각종 지표에 기반한 알람 서비스
Custom
Metric
Memory
Free/Filesystem
Free
OS
Log/ApplicaGon
Log
StatusCheckFailed_Instance
StatusCheckFailed_System
CUPUGlizaGon
DiskReadBytes
/
DiskReadOps
NetworkIn
/
NetworkOut
EC2
AcGon
AutoScaling
NoGficaGon
Alram
CloudWatch 기본 관리구조
Metrics
Namespace
Metrics
name
(CPUUGlizaGon)
Metrics
name
(HealthyHostCount)
Metrics
name
(CPUUGlizaGon)
Namespace
(AWS/EC2)
Namespace
(AWS/RDS)
Namespace
(AWS/ELB)
Metrics
:
시계열로 표시되
는 측정 데이터
Namespace
:
AWS서비스의 구
분자
10.
CloudWatch 기본 관리구조
Metrics
Namespace
Metrics
name
(CPUUGlizaGon)
Metrics
name
(HealthyHostCount)
Metrics
name
(CPUUGlizaGon)
Namespace
(AWS/EC2)
Namespace
(AWS/RDS)
Namespace
(AWS/ELB)
Dimension
Dimension
:
지표를 고유하게
실별 할 수 있도록
하는 이름과 값의
페어
Dimension
(InstanceId)
Dimension
(AutoscalingGroup)
11.
CloudWatch 기본 관리구조
Metrics
Namespace
Metrics
name
(CPUUGlizaGon)
Metrics
name
(HealthyHostCount)
Metrics
name
(CPUUGlizaGon)
Namespace
(AWS/EC2)
Namespace
(AWS/RDS)
Namespace
(AWS/ELB)
Dimension
Dimension
(InstanceId)
Dimension
(AutoscalingGroup)
Sum
Max
Min
Average
Sample
Count
StaGsGc
12.
지표 밑의 대상서
비스는 리전에 생
성한 것만 나옴
대상 서비스와 지표 검색
인스턴스 리스트
차원
(Dimension)
통계
그래프 표시기준 설정
13.
CloudWatch 지표
CPUUGlizaGon
CPUCreditBalance
CPUCreditUsage
DiskReadBytes
DiskWriteBytes
DiskWriteOps
NetworkOut
NetworkIn
StatusCheckFailed_Instance
StatusCheckFailed
StatusCheckFailed_System
커스텀 지표
표준 지표(EC2)
사용자가 임의로 수집하려는 표준 지표에
는 없는 지표
14.
CloudWatch 커스텀 지표
표준지표가 아닌 자신의 지표를 모니터링 하는 기능
• AWS
CLI의 "put-‐metric-‐data",
API
Tools의 "mon-‐put-‐data"또는 "PutMetricData”
API로 CloudWatch
에 데이터를 등록함
• 크기 제한으로 HTTP
GET은 8KB,
HTTP
POST는 40KB,
하나의 PutMetricData
요청에 20개의 데이터까
지 가능
• API
호출이 병목 될 수 있음 : 사용자 정의 지표의 빈번한 등록이나 많은 데이터 취득에 주의
$
aws
cloudwatch
put-‐metric-‐data
–metric-‐name
RequestLatency
-‐-‐namespace
"GetStarted“
-‐-‐Gmestamp
2014-‐10-‐28T12:30:00Z
-‐-‐value
87
-‐-‐unit
Milliseconds
$
aws
cloudwatch
put-‐metric-‐data
-‐-‐metric-‐name
RequestLatency
-‐-‐namespace
"GetStarted“
-‐-‐Gmestamp
2014-‐10-‐28T12:30:00Z
-‐-‐staGsGc-‐value
Sum=60,Minimum=15,Maximum=105,SampleCount=5
단순 등록
통계 세트 등록
15.
CloudWatch 지표값
CloudWatch에서 보이는정보는 “통계값”이다.
• 지표 데이터를 지정한 기간으로 집약한 것
• 각 지표에 따라 적합한 통계 값을 보는 것이 중요
단순 등록
통계 세트 등록
통계 세트 등록
통계
설명
Minimum
특정 기간 동안에서의 측정된 가장 낮은 값. 이 값을 사용해서 응용 프로그램의 낮은 용량 활동을 확인할 수 있음.
Maximum
특정 기간 동안에서의 측정된 가장 높은 값. 이 값을 사용해서 응용 프로그램의 높음 용량활동을 확인할 수 있음.
Sum
해당 지표에 가산 된 모든 합계. 이 통계는 지표의 총 용량을 결정하는데 도움이 됨.
Average
지정 기간 Sum/SampleCount
값. 이 통계를 Maximun,
Minimum과 비교하여 지표의 특성을 파악하고, 평균 사용량이 최대치와 최
소치 중 어느쪽에 가까운지 확인할 수 있음. 이러한 비교는 필요에 따라 언제 자원을 증감할 것인가 아는데 도움이 됨.
SampleCount
통계 계산에 사용되는 데이터의 포인트 개수
데이터 저장은 2주까지
• 2주 이상 저장하는 경우 get-‐metric-‐staGsGcs
에서 데이터를 검색해서 다른 장소로 보관
데이터 시간 간격은 최소 1분
• 다수의 서비스에서 1분 간격. 5분 인 경우도 있다.
CloudWatch – 알람설정
OK
알람
(Alarm)
부족
(INSUFFICIENT)
정의 된 임계값을 밑돌고
있다
(정상값)
정의 된 임계값을 웃 돌고
있다
(비정상값)
데이터가 부족해서 상태를 판정할
수 없다
(판정 불가)
18.
CloudWatch 액션 기능
Custom
Metric
Memory
Free/Filesystem
Free
OS
Log/ApplicaGon
Log
StatusCheckFailed_Instance
StatusCheckFailed_System
CUPUGlizaGon
DiskReadBytes
/
DiskReadOps
NetworkIn
/
NetworkOut
EC2
AcGon
AutoScaling
NoGficaGon
Alram
모니터링
액션
19.
측정할 수 없다면관리할 수 없다는 것이고, 관리하기를 원한다면 반드시 측정하라.
-‐ 피터 드러커 -‐
CloudWatch Deep Dive
20.
Elastic Load Balancer지표
ELB
지표
의미
RequestCount
완료된 요청/연결된 커넥션의 일정 시간당(1
or
5분)갯수.
HTTP 에러 메
시지도 포함된다.
유용한 통계값은 sum임.
min,
max,
average는 모두 1
을 리턴한다
SurgeQueueLength
라우팅이 지연되고 있는 요청의 총 갯수.
ELB는 현재 건강한 인스턴스에
대해 요청을 보내기 전에 큐에 적재를 한다. 큐의 최대 길이는 1024임.
큐가 가득 차게 되면 요청은 거부된다. 유용한 통계값은 max(큐 리퀘스
트 피크 확인 가능)
SpilloverCount
위의 서지 큐가 가득 차서 거부된 요청의 총 갯수.
유용한 통계값은 sum
BackendConnecGonEr
rors
ELB와 등록된 인스턴스간에 성공적으로 커넥션이 맺어지지 않은 숫자.
ELB는 연결이 실패되면 다시 연결을 시도하므로, 이 숫자는 요청갯수보
다 높을 수 있다.
유용한 통계값은 sum
Latency
요청을 받은 이후에,
ELB가 요청을 인스턴스에 보낸 이후에 받을 때까지
의 지연 시간.
유용한 통계값은 average.
max는 어떤 리퀘스트가 평균값
을 넘었는지 확인
21.
EC2 지표
EC2
지표
의미
CPUCreditUsage
(T2
타임만)
특정 기간동안 사용된 CPU
크레딧 갯수
CPUUGlizaGon
현재 인스턴스에서 사용하고 있는 컴퓨팅 파워
DiskReadOps
해당 인스턴스에 연결된 모든 로컬 디스크에서 읽어들인 오퍼레이션의
수. 만약 EBS볼륨을 사용한다면 EBS
지표를 봐야 함.
NetworkOut
인스턴스의 네트워크 인터페이스를 통해 나간 바이트 량.
StatusCheckFailed
StatusCheckFailed_Instance와 StatusCheckFailed_System 의 결합된
값. 어느쪽이라도 실패하면 1(실패),
0(패스)
차원(Dimension)
의미
AutoscalingGroupName
이 차원 필터를 이용하면 유저는 오토스케일링 그룹에 묶여있는 모
든 인스턴스를 대상으로 값을 볼 수 있다.
ImageId
동일한 EC2
AMI에 기반해서 돌고 있는 모든 인스턴스에 대해 필터
링
InstanceType
인스턴스 타입으로 필터링
22.
RDS 지표
RDS
지표
의미
BinLogDiskUsage
바이너리 로그에 의해 점유되는 디스크 량
현재 인스턴스에서 사용하고 있는 컴퓨팅 파워
DiskQueueDepth
디스크에 억세스하려고 대기중인 IO들의 갯수
ReplicaLag
MySQL 읽기 복제시. 원본 DB에서 복제 DB로 데이터 복제가 지연되고
있는 시간(초)
ReadLatency/
WriteLatency
Disk
I/O
조작에서 걸리는 시간의 평균(초)
차원(Dimension)
의미
DatabaseClass
예를 들어,
db.m1.small 등 데이터베이스 클래스로 필터링
EngineName
엔진이름으로 필터링. 예를 들어 mysql
CloudWatch Logs
§ CloudWatch
Logs를 사용한 로그 모니터링
§ OS,
응용 프로그램의 로그등을 모니터링 할 수 있음
§ 에이전트를 통해 로그 메시지를 CloudWatch 엔드 포인트에 전송
§ 로그 데이터의 보존 기간은 설정 가능
§ 1일 ~ 영구 보존으로 선택 가능
로그 클라이언트
§ 리눅스: 텍스트 로그
-‐ CloudWatch
Logs
Agent
§ 윈도우 : 텍스트 로그, 윈도우 이벤트로그, 성능 카운터
-‐ EC2
Config
§ 기타
-‐ AWS
CLI
-‐ AWS
SDK
-‐ 3rd
파티 툴 (fluentd
등)
29.
리눅스 로그 에이전트
§ CloudWatch
Logs
Agent
• 로그 데이터를 CloudWatch
Logs에 올리는 AWS
CLI플러그인
• AWS
logs
push 명령을 실행하는 데몬형 스크립트
• 설치 및 구성이 필요
• 적용 대상 EC2
인스턴스에는 롤을 추가해 준다
§ 지원 플랫 폼
• Amazon
Linux
• Ubuntu
Server
• CentOS
• Red
Hat
Enterprise
Linux
30.
로그 에이전트 주의사항
§ 전송가능 로그 메시지의 길이 제한
• 로그 에이전트가 1회 푸시할 수 있는 로그 레코드의 크기는 최대 32
KB
• 32KB가 넘으면 로그가 잘라 짐
§ 로그 로테이션 지원
• Rename
and
re-‐create
ü 원래 로그에 접미어(숫자)를 붙여 rename하고 빈 로그 파일을 다시 작성
ü 예)
/var/log/syslog.log
à/var/log/syslog.log.1
로 변경
• Copy
and
truncate
ü 원본 로그 파일을 복사한 후 truncate
ü 예)
/var/log/syslog.log
à/var/log/syslog.log.1
로 복사되고 /var/log/syslog.log
tr
uncate
• Create
common-‐pa[erned
file
ü 일반적인 패턴을 가지는 새로운 파일을 생성
ü 예)
/var/log/syslog.log.2014-‐01-‐01
을 남기고 /var/log/syslog.log.2014-‐01-‐02가
작성되는 경우
31.
윈도우 : CloudWatchlogs설정
§ EC2Config
에서 CloudWatch
Logs설정
• JSON 설정 파일을 편집하여 수집하려는 지표를 설정
• C
:
Program
Files
Amazon
Ec2ConfigService
Se
pngs
AWS.EC2.Windows.CloudWatch.json
파일을
편집
§ 수집할 로그를 설정
• 윈도우즈 이벤트 로그
• 텍스트 기반로그
• IIS
로그
• 성능 카운터
CloudWatch를 통한 시스템운영 자동화
RDS
CloudTrail
VPC
Flow
Logs
EC2
agent
CloudWatch
Logs
CloudWatch
AutoScaling
SQS
SNS
Kinesis
Kinesis
ApplicaGon
Lambda
EC2
§ 액션/통보
• 전화
• 모바일 푸쉬
• 채팅
• 이메일
• 응용 프로그램 피드백
• 인프라 복구/확장
37.
CloudWatch를 사용한 시스템자동화 예
§ IAM
설정 변경에 대한 경고를 수신
§ AWS
계정의 루트 엑세스 키를 사용했을 때 통지
§ CloudWatch
Logs
SubscripGon을 이용 Zabbix에 로그 전송
§ 경보 발생시 AWS
Lambda를 사용하여 음성 전화 걸기
§ Auto
Scaling에 의한 자동 복구
§ Amazon
ECS의 도커 컨테이너를 Lambda로 Auto
Scaling과 연결
§ VPF
Flow
logs를 ElasGcsearch
+
Kibaba
로 시각화
38.
CloudWatch custom dashboard
§ CloudWatch
지표에 대해 사용자가 지정하는 대시보드 생성 기능
§ 여러 대시보드 별로 복수의 지표를 다양하게 묶어서 볼 수 있음
§ 텍스트, 이미지 등으로 표현 가능
§ 여러 리전의 정보를 가져와서 하나의 대시보드에 구성할 수도 있음
하면 된다는 말은거짓이다. 그러나 안 하면 아무것도 되지 않는 다는 말은 불변의 진리이다
.
-‐ 퓰리처 -‐
운영관련 FAQs
43.
FAQ 1. EC2인스턴스 연결 상태 체크가 failed로 나와요
다음과 같은 동작을 해보세요.
1. 인스턴스를 stop/start 해보세요
2. Ephemeral
disk의 정보는 사라집니다.
3. EC2가 스스로 문제를 해결할 때까지 잠시 기다려 보세요.
4. 서포트 티켓을 끊어서, 서포트 요청을 합니다.
44.
FAQ 2. MySQLread replication이 느려요 (MySQL on EC2)
1. 읽기 복제 되는 인스턴스는 마스터 인스턴스 보다 좀 더 큰 인스턴스로 해야 함
2. 원본 DB
인스턴스와 읽기 전용 복제본에 사용되는 DB
파라미터 그룹의 설정이
서로 호환되는지 확인합니다.
3. 읽기 전용 복제본의 Max_allowed_packet
파라미터 값이 원본 DB인스턴스의
Max_allowed_packet값 보다 작은 경우 복제 오류 가능성
45.
FAQ 2. MySQLread replication이 느려요
§ MySQL복제 메카니즘
• 마스터 로그에서 바이너리를 읽어와서(IO_THREAD),
relay
log파일에 저장
• relay
log파일에서 이벤트를 읽어서 복제 DB에 저장(SQL_THREAD)
• 둘 중 어디에서 지연이 발생하는지 확인
§ Master
Status
와 Slave
Status
확인
Show
Master
Status
Show
Slave
Statusg
명령으로 마스터와 슬레이브의 상태값 확인
46.
FAQ 2. MySQLread replication이 느려요
§ 파라미터
• Read_Master_Log_Pos
:
IO
쓰레드가 읽고 있는 마스터 바이너리 로그의 위치
• Exec_Master_Log_Pos
:
SQL
쓰레드가 실행하려는 마스터 바이너리 로그의 위치.
위 값
과 현저히 차이가 나면 SQL
THREAD
의 지연이 존재한다는 의미임.
• Seconds_Behind_Master
:
얼마나 마스터 대비 복제가 늦어지고 있는지의 값(초)
• Relay_Log_Space
:
릴레이
로그의
크기
§ SQL_THREAD_LAG
SQL_THREAD
lag
=
Read_Master_Log_Pos
–
Exec_Master_Log_Pos
§ 일반적인 진단
• 통상 IO_THREAD 로 인한 영향은 작음. 그러나 네트워크상 문제가 있는 경우 가능
• IO_Thread
의 지연 :
네트워크의 지연을 의심
• SQL_THREAD의 지연 :
쓰기 지연이 일어날 원인 파악. 쿼리 최적화.
log_slow_slave_sta
tements
옵션을 켜서 log_query_Gme보다 오래 걸리는 쿼리를 로깅.
47.
FAQ 3. 윈도우서버의 TCP/IP연결 문제를 어떻게 해결하나요?
1. Rogue
DNS
server
:
클라이언트가 신뢰할 수 없는 DNS서버로 부터 정보를 받는 다면, 그 정
보를 기반으로 한 서버 접근이 안 될 수 있습니다.
2. 윈도우 hosts파일의 정보가 틀려 있을 수 있습니다. 모든 윈도우는 먼저 호스트 파일을 참고한
이후에 또 다른 가용한 정보처를 찾게 됩니다(DNS
등)
3. 하드웨어 오동작여부 확인
4. TCP/IP 포트가 블락된 경우
5. 클라이언트 어플리케이션에서 TCP/IP가 잘못 설정된 경우
6. ping
–a
www.amazon.com
or
tracert
www.ubuntu.org
7. 3rd
party
trace
tools
:
Tracetcp,
Winmtr
48.
FAQ 4. EBS볼륨의 퍼포먼스를 최적화 하고 싶어요
1. EBS
볼륨 최적화에 적합한 EC2
인스턴스 타입인지 확인
2. EBS-‐opGmized
EC2는 볼륨에 대한 전용 네트워크 출력량을 제공.
3.
볼륨 사용에 대한 툴을 사용해서 데이터를 취합할 것
Linux
:
iostat
Output
(h[p://blog.serverfault.com/2010/07/06/777852755/)
윈도우 :
Perfmon을 사용한 디스크 레이턴시 측정
h[p://blogs.technet.com/b/askcore/archive/2012/02/07/measuring-‐disk-‐latency-‐with-‐w
indows-‐performance-‐monitor-‐perfmon.aspx
4.
AWS
trusted
advisor를 이용해서 EBS볼륨에 대한 조언을 확인할 것.