雑多なインフラエンジニア日記

技術ブログでっす~

mon-get-stats でRDS/ELBのリソース情報を取得

mon-get-stats(CloudWatch API)を使って、RDSやELBのリソース情報を
取得する方法をメモ。Nagios、muninなどのプラグインに組み込みました。

・過去記事
http://xoxo-infra.hatenablog.com/entry/2013/04/04/024554

・CloudWatch API
http://aws.amazon.com/developertools/2534

・mon-get-stats
http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cli-mon-get-stats.html

RDSのリソース情報取得

・CPU (Percent)

mon-get-stats \
--metric-name "CPUUtilization" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


・Memory Free (Byte)

mon-get-stats \
--metric-name "FreeableMemory" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "SwapUsage" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


・Disk Free (Byte)

mon-get-stats \
--metric-name "FreeStorageSpace" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


・Disk IOPS (IOPS= Count/Second)

mon-get-stats \
--metric-name "ReadIOPS" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "WriteIOPS" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


・Disk Latency (Seconds)

mon-get-stats \
--metric-name "ReadLatency" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "WriteLatency" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


・Disk Throughput (Bytes/Second)

mon-get-stats \
--metric-name "ReadThroughput" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "WriteThroughput" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


MySQL Con

mon-get-stats \
--metric-name "DatabaseConnections" \
--statistics "Maximum" \
--namespace "AWS/RDS" \
--dimensions "DBInstanceIdentifier=DBインスタンス名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360


ELBのリソース情報取得


・Latency (Seconds)

mon-get-stats \
--metric-name "Latency" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360



・Request (Count)

mon-get-stats \
--metric-name "Request" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360



・ELB StatusCode (Count)

mon-get-stats \
--metric-name "HTTPCode_ELB_4XX" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "HTTPCode_ELB_5XX" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360



・Backend StatusCode (Count)

mon-get-stats \
--metric-name "HTTPCode_Backend_2XX" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "HTTPCode_Backend_4XX" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360

mon-get-stats \
--metric-name "HTTPCode_Backend_5XX" \
--statistics "Maximum" \
--namespace "AWS/ELB" \
--dimensions "LoadBalancerName=ロードバランサ名" \
--start-time `date --iso-8601=seconds --date '6 minutes ago'` \
--end-time `date --iso-8601=seconds --date '1 minutes ago'` \
--period 360