cloudwatchの使い方

75

Upload: shinsukeyokota

Post on 08-May-2015

5.754 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: CloudWatchの使い方
Page 2: CloudWatchの使い方

CloudWatch の使い方

CM re:GrowthDevelopers.IO Meetup 01

classmethod.jp 2

2013/12/10 横田慎介

Page 3: CloudWatchの使い方

CloudWatch とは

classmethod.jp 3

Page 4: CloudWatchの使い方

CloudWatch とは

classmethod.jp 4

AWS の各種サービスのリソース状況を監視するサービス

Page 5: CloudWatchの使い方

CloudWatch とは

classmethod.jp 5

AWS サービスのリソース状況はCloudWatch でしか監視できない

結果の解釈が難しいことがある

Page 6: CloudWatchの使い方

CloudWatch とは

classmethod.jp 6

CloudWatch は監視データ ( データポイント ) の倉庫。EC2 などの AWS サービスはデータポイントを CloudWatch に登録

ユーザはデータの統計情報を取得データポイントそのものではない

Page 7: CloudWatchの使い方

CloudWatch とは

classmethod.jp 7

Page 8: CloudWatchの使い方

用語

classmethod.jp 8

Page 9: CloudWatchの使い方

メトリクス

classmethod.jp 9

データポイントの入れ物データポイントは時系列データとして各メトリック単位にまとめられる

メトリックは  メトリック名  ネームスペース  ディメンジョン   ( ユニット )で一意に定まる

Page 10: CloudWatchの使い方

メトリクス

classmethod.jp 10

Page 11: CloudWatchの使い方

classmethod.jp 11

6 24.5

34,01210,960

632.8

85.2

77.5

Page 12: CloudWatchの使い方

メトリック名

classmethod.jp 12

メトリックの内容を表すCPUUtilizationHealthyHostCountDiskReadBytes

Page 13: CloudWatchの使い方

メトリック名

classmethod.jp 13

6 24.5

34,01210,960

632.885.2

77.5

HealtyHostCount

CPUUtilization

DiskReadBytes

Page 14: CloudWatchの使い方

ネームスペース

classmethod.jp 14

メトリックをまとめるものAWS ではサービスごとのネームスペース

AWS/EC2AWS/RDSAWS/ELB

同じメトリック名であってもネームスペースが異なれば違うものとして扱われる

Page 15: CloudWatchの使い方

ネームスペース

classmethod.jp 15

624.5

34,01210,960

632.8

85.277.5

AWS/ELB AWS/EC2 AWS/RDS

CPUUtilization

CPUUtilization

Page 16: CloudWatchの使い方

ディメンジョン

classmethod.jp 16

メトリックを何らかの特徴でカテゴライズするものInstanceId(AWS/EC2)AutoScalingGroupName(AWS/EC2)

Page 17: CloudWatchの使い方

ディメンジョン

classmethod.jp 17

24.5 34,012

10,96032.8

AWS/EC2

CPUUtilization

InstanceId=xxx

InstanceId=yyy

DiskReadBytes

InstanceId=xxx

InstanceId=yyy

Page 18: CloudWatchの使い方

メトリック

classmethod.jp 18

メトリックはネームスペースメトリック名ディメンジョンで指定する。

例:EC2 の CPU 使用率 ( インスタンス ID はxxx)

Page 19: CloudWatchの使い方

データの登録と取得

classmethod.jp 19

Page 20: CloudWatchの使い方

登録

classmethod.jp 20

メトリックネームスペースメトリック名ディメンジョン ( 任意 )

タイムスタンプ値

単一値 : 79.3統計値 : SampleCount=5, Sum=500, Minimum=50, Maximum=150

Page 21: CloudWatchの使い方

登録

classmethod.jp 21

メトリック

12:00 12:01 12:03 12:04 12:05

リソース① リソース②

20 80

5 / 500 / 50 / 150 5 / 300 / 10 / 150

Page 22: CloudWatchの使い方

登録

classmethod.jp 22

mon-put-data \ --namespace DEVELOPERSIO \ --metric-name test \ --value 20 \ --timestamp 2013-12-09T12:00:00Z

Page 23: CloudWatchの使い方

登録

classmethod.jp 23

mon-put-data \ --namespace DEVELOPERSIO \ --metric-name test \ --statisticValues \ "SampleCount=5, Sum=500, Minimum=50, Maximum=150" \ --timestamp 2013-12-09T12:00:00Z

Page 24: CloudWatchの使い方

取得

classmethod.jp 24

メトリックネームスペースメトリック名ディメンジョン

開始日時、終了日時統計

方法:サンプル数、合計、平均 最大値、最小値周期: 60 秒~ 2 週間

Page 25: CloudWatchの使い方

取得

classmethod.jp 25

メトリック

12:00 12:01 12:03 12:04 12:05

20 80

5 / 500 / 50 / 150 5 / 300 / 10 / 150

周期 60 秒で平均を取得する場合

86.66…=(20+500)/(1+5)

63.33…=(80+300)/(1+5)

NA NA

Page 26: CloudWatchの使い方

取得

classmethod.jp 26

mon-get-stats \ --namespace DEVELOPERSIO \ --metric-name test \ --statistics “Average" \ --period 60 \ --start-time 2013-12-09T12:00:00Z \ --end-time 2013-12-09T12:10:00Z \ --headers

Page 27: CloudWatchの使い方

取得

classmethod.jp 27

Time : 2013-12-09 12:00:00Average : 86.66666666666667Unit : None

Time : 2013-12-09 12:03:00Average : 63.333333333333336Unit : None

Page 28: CloudWatchの使い方

取得

classmethod.jp 28

メトリック

12:00 12:01 12:03 12:04 12:05

20 80

5 / 500 / 50 / 150 5 / 300 / 10 / 150

周期 300 秒で最小値を取得する場合

10

Page 29: CloudWatchの使い方

取得

classmethod.jp 29

mon-get-stats \ --namespace DEVELOPERSIO \ --metric-name test \ --statistics "Minimum" \ –-period 300 \ --start-time 2013-12-09T12:00:00Z \ --end-time 2013-12-09T12:10:00Z \ --headers \

Page 30: CloudWatchの使い方

取得

classmethod.jp 30

Time : 2013-12-09 12:00:00Minimum : 10.0Unit : None

Page 31: CloudWatchの使い方

AWS メトリクス

classmethod.jp 31

Page 32: CloudWatchの使い方

AWS/EC2

classmethod.jp 32

CPUUtilizationDiskReadOpsDiskWriteOpsDiskReadBytesDiskWriteBytesNetworkInNetworkOutStatusCheckFailedStatusCheckFailed_InstanceStatusCheckFailed_System

Page 33: CloudWatchの使い方

AWS/EC2

classmethod.jp 33

CPUUtilizationDiskReadOpsDiskWriteOpsDiskReadBytesDiskWriteBytesNetworkInNetworkOutStatusCheckFailedStatusCheckFailed_InstanceStatusCheckFailed_System

Page 34: CloudWatchの使い方

AWS/EC2

classmethod.jp 34

CPUUtilization

OS 内部から top コマンド等で見る CPU使用率は不正確

http://www.axibase.com/cloud/2010/07/22/ec2-monitoring-the-case-of-stolen-cpu/

Page 35: CloudWatchの使い方

AWS/EC2

classmethod.jp 35

例CPUUtilization

Basic モニタリング監視間隔: 5 分

DimensionInstanceID=i-xxxxxxx

Page 36: CloudWatchの使い方

AWS/EC2

classmethod.jp 36

CPUUtilization統計値:平均周期: 5 分

Page 37: CloudWatchの使い方

AWS/EC2

classmethod.jp 37

CPUUtilization統計値:最大周期: 5 分

Page 38: CloudWatchの使い方

AWS/EC2

classmethod.jp 38

CPUUtilization統計値:サンプル数周期: 5 分

Page 39: CloudWatchの使い方

classmethod.jp 39

AWS/EC2

5 分に一回の監視じゃないの?

Page 40: CloudWatchの使い方

AWS/EC2

classmethod.jp 40

[ec2-user@zabbix-server ~]$ mon-get-stats \> --namespace AWS/EC2 \> --metric-name CPUUtilization \> --dimensions "InstanceId=i-1c46481e" \> --statistics "SampleCount,Average,Sum,Maximum,Minimum" \> --period 300 \> --start-time 2013-12-09T10:10:00.000Z \> --end-time 2013-12-09T10:30:00.000Z \> --region ap-northeast-1 \> --aws-credential-file /opt/aws/credential-file \> --headersTime SampleCount Average Sum Minimum Maximum Unit2013-12-09 10:10:00 5.0 96.704 483.52 91.8 100.0 Percent2013-12-09 10:15:00 5.0 96.338 481.69 95.0 100.0 Percent2013-12-09 10:20:00 5.0 97.682 488.41 93.44 100.0 Percent2013-12-09 10:25:00 5.0 97.688 488.44 95.08 100.0 Percent

CPUUtilization

Page 41: CloudWatchの使い方

AWS/EC2

classmethod.jp 41

Time : 2013-12-09 10:10:00SampleCount : 5.0Average : 96.704Sum : 483.52Minimum : 91.8Maximum :100Unit : percent

CPUUtilization

Page 42: CloudWatchの使い方

AWS/EC2

classmethod.jp 42

CPUUtilization(InstanceId=i-xxxxx)

12:00 12:05 12:10 12:15 12:20

5 / 480 / 95 / 100

i-xxxxx

Page 43: CloudWatchの使い方

AWS/EC2

classmethod.jp 43

[ec2-user@zabbix-server ~]$ mon-get-stats \> --namespace AWS/EC2 \> --metric-name CPUUtilization \> --dimensions "InstanceId=i-1c46481e" \> --statistics "SampleCount,Average,Sum,Maximum,Minimum" \> --period 60 \> --start-time 2013-12-09T10:10:00.000Z \> --end-time 2013-12-09T10:30:00.000Z \> --region ap-northeast-1 \> --aws-credential-file /opt/aws/credential-file \> --headersTime SampleCount Average Sum Minimum Maximum Unit2013-12-09 10:14:00 5.0 96.704 483.52 91.8 100.0 Percent2013-12-09 10:19:00 5.0 96.338 481.69 95.0 100.0 Percent2013-12-09 10:24:00 5.0 97.682 488.41 93.44 100.0 Percent2013-12-09 10:29:00 5.0 97.688 488.44 95.08 100.0 Percent

CPUUtilization

Page 44: CloudWatchの使い方

AWS/EC2

classmethod.jp 44

Time : 2013-12-09 10:14:00SampleCount : 5.0Average : 96.704Sum : 483.52Minimum : 91.8Maximum :100Unit : percent

CPUUtilization

Page 45: CloudWatchの使い方

AWS/EC2

classmethod.jp 45

CPUUtilization統計値:平均周期: 1 分

Page 46: CloudWatchの使い方

AWS/EC2

classmethod.jp 46

CPUUtilization統計値:平均周期: 5 分

Page 47: CloudWatchの使い方

AWS/EC2

classmethod.jp 47

周期を 1 分にしても、 1 分毎の平均ではなく、 5 分毎の平均がプロットされる

サンプル数の場合も、 1 分間ではなく 5分間のサンプル数がプロットされる

Page 48: CloudWatchの使い方

AWS/EC2

classmethod.jp 48

紛らわしいので、周期は監視間隔より大きい値を指定する

監視間隔は下記 URL で確認http://aws.amazon.com/jp/cloudwatch/

Page 49: CloudWatchの使い方

AWS/EC2

classmethod.jp 49

詳細モニタリング監視間隔: 1 分$3.675/ 月

Page 50: CloudWatchの使い方

AWS/EC2

classmethod.jp 50

Page 51: CloudWatchの使い方

AWS/EC2

classmethod.jp 51

CPUUtilization[ec2-user@zabbix-server ~]$ mon-get-stats ¥ --namespace AWS/EC2 ¥ --metric-name CPUUtilization ¥ --dimensions "InstanceId=i-1c46481e" ¥ --statistics "SampleCount,Average,Sum,Maximum,Minimum" ¥ --period 60 ¥ --start-time 2013-12-10T00:00:00.000Z ¥ --end-time 2013-12-10T00:05:00.000Z ¥ --region ap-northeast-1 ¥ --aws-credential-file /opt/aws/credential-file ¥ --headers

Time SampleCount Average Sum Minimum Maximum Unit2013-12-10 00:00:00 1.0 32.43 32.43 32.43 32.43 Percent2013-12-10 00:01:00 1.0 96.72 96.72 96.72 96.72 Percent2013-12-10 00:02:00 1.0 100.0 100.0 100.0 100.0 Percent2013-12-10 00:03:00 1.0 91.8 91.8 91.8 91.8 Percent2013-12-10 00:04:00 1.0 95.0 95.0 95.0 95.0 Percent

Page 52: CloudWatchの使い方

AWS/EC2

classmethod.jp 52

CPUUtilization

Time : 2013-12-10 00:00:00SampleCount : 1.0Average : 96.72Sum : 96.72Minimum : 96.72Maximum : 96.72Unit : Percent

Page 53: CloudWatchの使い方

AWS/EC2

classmethod.jp 53

CPUUtilization(InstanceId=i-xxxxx)

12:00 12:01 12:02 12:03 12:04

95

12:05 12:06 12:07

i-xxxxx

Page 54: CloudWatchの使い方

AWS/EC2

classmethod.jp 54

Basic 監視も詳細監視も 1 分に 1 回の監視を行っている

違いは監視結果をデータポイントとしてCloudWatch に登録する頻度

Page 55: CloudWatchの使い方

AWS/EC2

classmethod.jp 55

CPUUtilization[ec2-user@zabbix-server ~]$ mon-get-stats ¥ --namespace AWS/EC2 ¥ --metric-name CPUUtilization ¥ --dimensions "InstanceId=i-1c46481e" ¥ --statistics "SampleCount,Average,Sum,Maximum,Minimum" ¥ --period 300 ¥ --start-time 2013-12-10T00:00:00.000Z ¥ --end-time 2013-12-10T00:10:00.000Z ¥ --region ap-northeast-1 ¥ --aws-credential-file /opt/aws/credential-file ¥ --headers

Time SampleCount Average Sum Minimum Maximum Unit2013-12-10 00:00:00 5.0 83.19 415.95 32.43 100.0 Percent2013-12-10 00:05:00 5.0 96.662 483.31 95.0 100.0 Percent

Page 56: CloudWatchの使い方

AWS/EC2

classmethod.jp 56

CPUUtilization

Time : 2013-12-10 00:00:00SampleCount : 5.0Average : 83.19Sum : 415.95Minimum : 32.43Maximum : 100.0Unit : Percent

Page 57: CloudWatchの使い方

AWS/EC2

classmethod.jp 57

NetworkInNetworkOut

1 分間のネットワーク転送量 ( バイト )

Page 58: CloudWatchの使い方

AWS/EC2

classmethod.jp 58

NetworkIn[ec2-user@zabbix-server ~]$ mon-get-stats \> --namespace AWS/EC2 \> --metric-name NetworkIn \> --dimensions "InstanceId=i-43523f46" \> --statistics "SampleCount,Average,Sum,Maximum,Minimum" \> --period 300 \> --start-time 2013-12-09T16:10:00.000Z \> --region ap-northeast-1 \> --aws-credential-file /opt/aws/credential-file \> --headersTime SampleCount Average Sum Minimum Maximum Unit2013-12-09 16:10:00 5.0 154.0 770.0 42.0 444.0 Bytes2013-12-09 16:15:00 5.0 122.4 612.0 42.0 264.0 Bytes2013-12-09 16:20:00 5.0 3224.0 16120.0 132.0 9184.0 Bytes2013-12-09 16:25:00 5.0 29705.4 148527.0 306.0 135225.0 Bytes2013-12-09 16:30:00 5.0 868.0 4340.0 306.0 1568.0 Bytes

Page 59: CloudWatchの使い方

AWS/EC2

classmethod.jp 59

DiskReadOpsDiskWriteOpsDiskReadBytesDiskWriteBytesエフェメラルディスク ( ローカルディスク ) の監視結果EBS を使っている場合は AWS/EBS のメトリクスを参照する

Page 60: CloudWatchの使い方

AWS/EC2

classmethod.jp 60

Disk*

Page 61: CloudWatchの使い方

classmethod.jp 61

AWS/EBSVolumeRead/Write5 分間の読み込み・書き込み回数 ( 回 )

Page 62: CloudWatchの使い方

AWS/ELB

classmethod.jp 62

ロードバランシングサービス

『 ELB の挙動と CloudWatch メトリクスの読み方を徹底的に理解する』http://dev.classmethod.jp/cloud/aws/elb-and-cloudwatch-metrics-in-depth/

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_MonitoringLoadBalancerWithCW.html

Page 63: CloudWatchの使い方

AWS/ELB

classmethod.jp 63

ELB は分散システム

Page 64: CloudWatchの使い方

AWS/ELB

classmethod.jp 64

ELB は分散システム台数は Network Interfaces で確認高負荷時には数十台まで増える各ノードがデータポイントを登録する

Page 65: CloudWatchの使い方

AWS/ELB

classmethod.jp 65

CPUUtilization(InstanceId=i-xxxxx)

12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07

Page 66: CloudWatchの使い方

AWS/ELB

classmethod.jp 66

{Healthy,Unhealty}HostCountRequestCountLatencyHTTPCode_ELB_{4,5}XXHTTPCode_Backend_{2,3,4,5}XXBackendConnectionErrorsSurgeQueueLengthSpilloverCount

Page 67: CloudWatchの使い方

AWS/ELB

classmethod.jp 67

{Healthy,Unhealty}HostCountノードと同じアベイラビリティゾーンにある EC2 インスタンスのうち{Healty,Unhealty} なものの数

Page 68: CloudWatchの使い方

classmethod.jp 68

AWS/ELB

Availability Zone Availability Zone

42

Page 69: CloudWatchの使い方

AWS/ELB

classmethod.jp 69

{Healthy,Unhealty}HostCountノードと同じアベイラビリティゾーンにある EC2 インスタンスのうち{Healty,Unhealty} なものの数

ディメンジョンLoadBalancerName = TestELBAvailabilityZone=ap-northeast-1c

統計値:平均マルチ AZ 構成の場合は、合計する

Page 70: CloudWatchの使い方

AWS/ELB

classmethod.jp 70

RequestCountバックエンドのインスタンスからレスポンスが返ってきた数

ディメンジョンLoadBalancerName = TestELB

統計値:合計

Page 71: CloudWatchの使い方

AWS/ELB

classmethod.jp 71

HTTPCode_ELB_{4,5}XXHTTPCode_Backend_{2,3,4,5}XXBackendConnectionErrors

ディメンジョンLoadBalancerName = TestELB

統計値:合計

Page 72: CloudWatchの使い方

AWS/ELB

classmethod.jp 72

LatencyEBL からバックエンドのインスタンスにリクエストが送信されてから、レスポンスが戻るまでの時間

ディメンジョンLoadBalancerName = TestELB

統計値:平均、最大値

Page 73: CloudWatchの使い方

AWS/ELB

classmethod.jp 73

SurgeQueueLengthバックエンドへのリクエスト待ちキューの長さ

ディメンジョンLoadBalancerName = TestELB

統計値:最大値     平均値、最小値

Page 74: CloudWatchの使い方

AWS/ELB

classmethod.jp 74

SpilloverCountキューがあふれて、 HTTPCode_ELB_500 エラーが返った数

ディメンジョンLoadBalancerName = TestELB

統計値:合計

Page 75: CloudWatchの使い方

まとめ

classmethod.jp 75

期待しているものと違う値をとっている可能性がある

主要なメトリクスはドキュメントで確認メトリクスの値があらわすものメトリクスに適した統計値監視間隔

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html