Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CloudWatchの使い方

31,059 views

Published on

Published in: Technology, Business
  • Hi there! Get Your Professional Job-Winning Resume Here - Check our website! http://bit.ly/resumpro
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

CloudWatchの使い方

  1. 1. CloudWatchの使い方 CM re:Growth Developers.IO Meetup 01 横田慎介 2013/12/10 classmethod.jp 2
  2. 2. CloudWatchとは classmethod.jp 3
  3. 3. CloudWatchとは AWSの各種サービスのリソース状況を監視 するサービス classmethod.jp 4
  4. 4. CloudWatchとは AWSサービスのリソース状況は CloudWatchでしか監視できない 結果の解釈が難しいことがある classmethod.jp 5
  5. 5. CloudWatchとは CloudWatchは監視データ(データポイント) の倉庫。 EC2などのAWSサービスはデータポイン トをCloudWatchに登録 ユーザはデータの統計情報を取得 データポイントそのものではない classmethod.jp 6
  6. 6. CloudWatchとは classmethod.jp 7
  7. 7. 用語 classmethod.jp 8
  8. 8. メトリクス データポイントの入れ物 データポイントは時系列データとして各 メトリック単位にまとめられる メトリックは メトリック名 ネームスペース ディメンジョン (ユニット) で一意に定まる classmethod.jp 9
  9. 9. メトリクス classmethod.jp 10
  10. 10. 6 10,960 32.8 classmethod.jp 24.5 85.2 34,012 6 77.5 11
  11. 11. メトリック名 メトリックの内容を表す CPUUtilization HealthyHostCount DiskReadBytes classmethod.jp 12
  12. 12. メトリック名 CPUUtilization HealtyHostC ount 6 24.5 85.2 6 DiskReadBytes 34,012 10,960 classmethod.jp 13 77.5 32.8
  13. 13. ネームスペース メトリックをまとめるもの AWSではサービスごとのネームスペース AWS/EC2 AWS/RDS AWS/ELB 同じメトリック名であってもネームス ペースが異なれば違うものとして扱われる classmethod.jp 14
  14. 14. ネームスペース AWS/ELB 6 AWS/EC2 24.5 32.8 CPUUtilization 6 34,012 10,960 classmethod.jp 15 AWS/RDS 77.5 85.2 CPUUtilization
  15. 15. ディメンジョン メトリックを何らかの特徴でカテゴライ ズするもの InstanceId(AWS/EC2) AutoScalingGroupName(AWS/EC2) classmethod.jp 16
  16. 16. ディメンジョン AWS/EC2 24.5 34,012 InstanceId=xxx InstanceId=xxx 10,960 32.8 InstanceId=yyy InstanceId=yyy CPUUtilization classmethod.jp DiskReadBytes 17
  17. 17. メトリック メトリックは ネームスペース メトリック名 ディメンジョン で指定する。 例: EC2のCPU使用率(インスタンスIDはxxx) classmethod.jp 18
  18. 18. データの登録と取得 classmethod.jp 19
  19. 19. 登録 メトリック ネームスペース メトリック名 ディメンジョン(任意) タイムスタンプ 値 単一値: 79.3 統計値: SampleCount=5, Sum=500, Minimum=50, Maximum=150 classmethod.jp 20
  20. 20. 登録 リソース② リソース① 20 80 5 / 300 / 10 / 150 5 / 500 / 50 / 150 メトリック 12:00 classmethod.jp 12:01 12:03 21 12:04 12:05
  21. 21. 登録 mon-put-data --namespace DEVELOPERSIO --metric-name test --value 20 --timestamp 2013-12-09T12:00:00Z classmethod.jp 22
  22. 22. 登録 mon-put-data --namespace DEVELOPERSIO --metric-name test --statisticValues "SampleCount=5, Sum=500, Minimum=50, Maximum=150" --timestamp 2013-12-09T12:00:00Z classmethod.jp 23
  23. 23. 取得 メトリック ネームスペース メトリック名 ディメンジョン 開始日時、終了日時 統計 方法:サンプル数、合計、平均 最大値、最小値 周期:60秒~2週間 classmethod.jp 24
  24. 24. 取得 周期60秒で平均を取得する場合 メトリック 20 80 5 / 300 / 10 / 150 5 / 500 / 50 / 150 12:00 12:01 86.66… =(20+500)/(1+5) classmethod.jp 12:03 12:04 63.33… NA =(80+300)/(1+5) 25 12:05 NA
  25. 25. 取得 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 classmethod.jp 26
  26. 26. 取得 Time : 2013-12-09 12:00:00 Average : 86.66666666666667 Unit : None Time : 2013-12-09 12:03:00 Average : 63.333333333333336 Unit : None classmethod.jp 27
  27. 27. 取得 周期300秒で最小値を取得する場合 メトリック 20 80 5 / 300 / 10 / 150 5 / 500 / 50 / 150 12:00 12:01 12:03 10 classmethod.jp 28 12:04 12:05
  28. 28. 取得 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 classmethod.jp 29
  29. 29. 取得 Time : 2013-12-09 12:00:00 Minimum : 10.0 Unit : None classmethod.jp 30
  30. 30. AWSメトリクス classmethod.jp 31
  31. 31. AWS/EC2 CPUUtilization DiskReadOps DiskWriteOps DiskReadBytes DiskWriteBytes NetworkIn NetworkOut StatusCheckFailed StatusCheckFailed_Instance StatusCheckFailed_System classmethod.jp 32
  32. 32. AWS/EC2 CPUUtilization DiskReadOps DiskWriteOps DiskReadBytes DiskWriteBytes NetworkIn NetworkOut StatusCheckFailed StatusCheckFailed_Instance StatusCheckFailed_System classmethod.jp 33
  33. 33. AWS/EC2 CPUUtilization OS内部からtopコマンド等で見るCPU使用 率は不正確 http://www.axibase.com/cloud/2010/07/22/ ec2-monitoring-the-case-of-stolen-cpu/ classmethod.jp 34
  34. 34. AWS/EC2 例 CPUUtilization Basicモニタリング 監視間隔:5分 Dimension InstanceID=i-xxxxxxx classmethod.jp 35
  35. 35. AWS/EC2 CPUUtilization 統計値:平均 周期:5分 classmethod.jp 36
  36. 36. AWS/EC2 CPUUtilization 統計値:最大 周期:5分 classmethod.jp 37
  37. 37. AWS/EC2 CPUUtilization 統計値:サンプル数 周期:5分 classmethod.jp 38
  38. 38. AWS/EC2 5分に一回の監視じゃないの? classmethod.jp 39
  39. 39. AWS/EC2 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-09T10:10:00.000Z > --end-time 2013-12-09T10:30:00.000Z > --region ap-northeast-1 > --aws-credential-file /opt/aws/credential-file > --headers Time SampleCount Average Sum Minimum Maximum Unit 2013-12-09 10:10:00 5.0 96.704 483.52 91.8 100.0 Percent 2013-12-09 10:15:00 5.0 96.338 481.69 95.0 100.0 Percent 2013-12-09 10:20:00 5.0 97.682 488.41 93.44 100.0 Percent 2013-12-09 10:25:00 5.0 97.688 488.44 95.08 100.0 Percent classmethod.jp 40
  40. 40. AWS/EC2 CPUUtilization Time : 2013-12-09 10:10:00 SampleCount : 5.0 Average : 96.704 Sum : 483.52 Minimum : 91.8 Maximum :100 Unit : percent classmethod.jp 41
  41. 41. AWS/EC2 i-xxxxx 5 / 480 / 95 / 100 CPUUtilization(InstanceId=i-xxxxx) 12:00 classmethod.jp 12:05 12:10 42 12:15 12:20
  42. 42. AWS/EC2 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-09T10:10:00.000Z > --end-time 2013-12-09T10:30:00.000Z > --region ap-northeast-1 > --aws-credential-file /opt/aws/credential-file > --headers Time SampleCount Average Sum Minimum Maximum Unit 2013-12-09 10:14:00 5.0 96.704 483.52 91.8 100.0 Percent 2013-12-09 10:19:00 5.0 96.338 481.69 95.0 100.0 Percent 2013-12-09 10:24:00 5.0 97.682 488.41 93.44 100.0 Percent 2013-12-09 10:29:00 5.0 97.688 488.44 95.08 100.0 Percent classmethod.jp 43
  43. 43. AWS/EC2 CPUUtilization Time : 2013-12-09 10:14:00 SampleCount : 5.0 Average : 96.704 Sum : 483.52 Minimum : 91.8 Maximum :100 Unit : percent classmethod.jp 44
  44. 44. AWS/EC2 CPUUtilization 統計値:平均 周期:1分 classmethod.jp 45
  45. 45. AWS/EC2 CPUUtilization 統計値:平均 周期:5分 classmethod.jp 46
  46. 46. AWS/EC2 周期を1分にしても、1分毎の平均ではな く、5分毎の平均がプロットされる サンプル数の場合も、1分間ではなく5分 間のサンプル数がプロットされる classmethod.jp 47
  47. 47. AWS/EC2 紛らわしいので、周期は監視間隔より大き い値を指定する 監視間隔は下記URLで確認 http://aws.amazon.com/jp/cloudwatch/ classmethod.jp 48
  48. 48. AWS/EC2 詳細モニタリング 監視間隔:1分 $3.675/月 classmethod.jp 49
  49. 49. AWS/EC2 classmethod.jp 50
  50. 50. AWS/EC2 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 Unit 2013-12-10 00:00:00 1.0 32.43 32.43 32.43 32.43 Percent 2013-12-10 00:01:00 1.0 96.72 96.72 96.72 96.72 Percent 2013-12-10 00:02:00 1.0 100.0 100.0 100.0 100.0 Percent 2013-12-10 00:03:00 1.0 91.8 91.8 91.8 91.8 Percent 2013-12-10 00:04:00 1.0 95.0 95.0 95.0 95.0 Percent classmethod.jp 51
  51. 51. AWS/EC2 CPUUtilization Time : 2013-12-10 00:00:00 SampleCount : 1.0 Average : 96.72 Sum : 96.72 Minimum : 96.72 Maximum : 96.72 Unit : Percent classmethod.jp 52
  52. 52. AWS/EC2 i-xxxxx 95 CPUUtilization(InstanceId=i-xxxxx) 12:00 classmethod.jp 12:01 12:02 12:03 12:04 12:05 53 12:06 12:07
  53. 53. AWS/EC2 Basic監視も詳細監視も1分に1回の監視 を行っている 違いは監視結果をデータポイントとして CloudWatchに登録する頻度 classmethod.jp 54
  54. 54. AWS/EC2 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 Unit 2013-12-10 00:00:00 5.0 83.19 415.95 32.43 100.0 Percent 2013-12-10 00:05:00 5.0 96.662 483.31 95.0 100.0 Percent classmethod.jp 55
  55. 55. AWS/EC2 CPUUtilization Time : 2013-12-10 00:00:00 SampleCount : 5.0 Average : 83.19 Sum : 415.95 Minimum : 32.43 Maximum : 100.0 Unit : Percent classmethod.jp 56
  56. 56. AWS/EC2 NetworkIn NetworkOut 1分間のネットワーク転送量(バイト) classmethod.jp 57
  57. 57. AWS/EC2 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 > --headers Time SampleCount Average Sum Minimum Maximum Unit 2013-12-09 16:10:00 5.0 154.0 770.0 42.0 444.0 Bytes 2013-12-09 16:15:00 5.0 122.4 612.0 42.0 264.0 Bytes 2013-12-09 16:20:00 5.0 3224.0 16120.0 132.0 9184.0 Bytes 2013-12-09 16:25:00 5.0 29705.4 148527.0 306.0 135225.0 Bytes 2013-12-09 16:30:00 5.0 868.0 4340.0 306.0 1568.0 Bytes classmethod.jp 58
  58. 58. AWS/EC2 DiskReadOps DiskWriteOps DiskReadBytes DiskWriteBytes エフェメラルディスク(ローカルディスク) の監視結果 EBSを使っている場合はAWS/EBSのメト リクスを参照する classmethod.jp 59
  59. 59. AWS/EC2 Disk* classmethod.jp 60
  60. 60. AWS/EBS VolumeRead/Write 5分間の読み込み・書き込み回数(回) classmethod.jp 61
  61. 61. AWS/ELB ロードバランシングサービス 『ELBの挙動とCloudWatchメトリクスの 読み方を徹底的に理解する』 http://dev.classmethod.jp/cloud/aws/elband-cloudwatch-metrics-in-depth/ http://docs.aws.amazon.com/ElasticLoad Balancing/latest/DeveloperGuide/US_Moni toringLoadBalancerWithCW.html classmethod.jp 62
  62. 62. AWS/ELB ELBは分散システム = classmethod.jp 63
  63. 63. AWS/ELB ELBは分散システム 台数はNetwork Interfacesで確認 高負荷時には数十台まで増える 各ノードがデータポイントを登録する classmethod.jp 64
  64. 64. AWS/ELB CPUUtilization(InstanceId=i-xxxxx) 12:00 classmethod.jp 12:01 12:02 12:03 12:04 12:05 65 12:06 12:07
  65. 65. AWS/ELB {Healthy,Unhealty}HostCount RequestCount Latency HTTPCode_ELB_{4,5}XX HTTPCode_Backend_{2,3,4,5}XX BackendConnectionErrors SurgeQueueLength SpilloverCount classmethod.jp 66
  66. 66. AWS/ELB {Healthy,Unhealty}HostCount ノードと同じアベイラビリティゾーン にあるEC2インスタンスのうち {Healty,Unhealty}なものの数 classmethod.jp 67
  67. 67. AWS/ELB 2 Availability Zone classmethod.jp 4 Availability Zone 68
  68. 68. AWS/ELB {Healthy,Unhealty}HostCount ノードと同じアベイラビリティゾーン にあるEC2インスタンスのうち {Healty,Unhealty}なものの数 ディメンジョン LoadBalancerName=TestELB AvailabilityZone=ap-northeast-1c 統計値:平均 マルチAZ構成の場合は、合計する classmethod.jp 69
  69. 69. AWS/ELB RequestCount バックエンドのインスタンスからレス ポンスが返ってきた数 ディメンジョン LoadBalancerName=TestELB 統計値:合計 classmethod.jp 70
  70. 70. AWS/ELB HTTPCode_ELB_{4,5}XX HTTPCode_Backend_{2,3,4,5}XX BackendConnectionErrors ディメンジョン LoadBalancerName=TestELB 統計値:合計 classmethod.jp 71
  71. 71. AWS/ELB Latency EBLからバックエンドのインスタン スにリクエストが送信されてから、 レスポンスが戻るまでの時間 ディメンジョン LoadBalancerName=TestELB 統計値:平均、最大値 classmethod.jp 72
  72. 72. AWS/ELB SurgeQueueLength バックエンドへのリクエスト待ち キューの長さ ディメンジョン LoadBalancerName=TestELB 統計値:最大値 平均値、最小値 classmethod.jp 73
  73. 73. AWS/ELB SpilloverCount キューがあふれて、 HTTPCode_ELB_500エラーが返った数 ディメンジョン LoadBalancerName=TestELB 統計値:合計 classmethod.jp 74
  74. 74. まとめ 期待しているものと違う値をとっている 可能性がある 主要なメトリクスはドキュメントで確認 メトリクスの値があらわすもの メトリクスに適した統計値 監視間隔 http://docs.aws.amazon.com/AmazonClou dWatch/latest/DeveloperGuide/CW_Suppo rt_For_AWS.html classmethod.jp 75

×