前提条件
CloudWatchへの権限
CloudWatchの読み取り権限があること。
AWS CLI
以下のバージョンで動作確認済
- AWS CLI 1.11.8
コマンド
aws --version
結果(例)
aws-cli/1.11.7 Python/2.7.11 Darwin/15.6.0 botocore/1.4.64
バージョンが古い場合は最新版に更新しましょう。
コマンド
sudo -H pip install -U awscli
- 準備
=======
0.1. リージョンの決定
変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。
変数の確認
aws configure list
結果(例)
Name Value Type Location
---- ----- ---- --------
profile lambdaFull-prjz-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
- 事前作業
===========
1.1. 名前空間の指定
CloudWatchの名前空間を指定します。
変数の設定
CWATCH_NAMESPACE='VPNStatus'
1.2. メトリックの一覧
指定した名前空間で利用できるメトリックの一覧を表示してみましょう。
コマンド
aws cloudwatch list-metrics \
--namespace ${CWATCH_NAMESPACE}
Lambda関数の実行後、一覧表示されるまで1分ほど必要になるようです。
結果
{
"Metrics": [
{
"Namespace": "VPNStatus",
"Dimensions": [
{
"Name": "CGW",
"Value": "cgw-xxxxxxxx"
},
{
"Name": "VGW",
"Value": "vgw-xxxxxxxx"
},
{
"Name": "Region",
"Value": "ap-northeast-1"
}
],
"MetricName": "vpn-xxxxxxxx"
}
]
}
1.3. 変数の設定
カスタマゲートウェイIDを変数に格納します。
変数の設定(例)
VPC_CGW_ID='cgw-xxxxxxxx'
VPNゲートウェイ、を変数に格納します。
変数の設定(例)
VPC_VGW_ID='vgw-xxxxxxxx'
VPNコネクションのIDを変数に格納します。
変数の設定(例)
VPC_VPN_ID='vpn-xxxxxxxx'
1.3. ディメンションの指定
CloudWatchのディメンションを指定します。
ここでは、CGW ID、VGW ID、リージョン名をディメンションとして利用します
。
変数の設定
CWATCH_DIMENSIONS="Name=CGW,Value=${VPC_CGW_ID} Name=VGW,Value=${VPC_VGW_ID} Name=Region,Value=${AWS_DEFAULT_REGION}" \
&& echo ${CWATCH_DIMENSIONS}
1.4. メトリック名の指定
変数の設定
CWATCH_METRIC_NAME="${VPC_VPN_ID}"
変数の設定
CWATCH_STATISTICS='Sum'
- 必要な要素の決定
===================
2.1. 統計周期の決定
統計情報の取得単位(周期)を秒単位で指定します。
ここでは5分(300秒)周期にしてみます。
変数の設定
CWATCH_STAT_PERIOD='300'
2.2. 統計期間の決定
統計情報の対象期間を指定します。
ここでは、24時間(1440分)前から現在を対象にしてみます。
変数の設定
TIME_BEFORE_MIN='1440'
変数の設定
CWATCH_END_TIME=$( date -u '+%FT%TZ' ) \
&& echo ${CWATCH_END_TIME}
変数の設定(OSX/BSD系OSの場合)
CWATCH_START_TIME=$( date -u -v-${TIME_BEFORE_MIN}M '+%FT%TZ' ) \
&& echo ${CWATCH_START_TIME}
変数の設定(Linux系OSの場合)
CWATCH_START_TIME=$( date -u -d "${TIME_BEFORE_MIN} mins ago" '+%FT%TZ' ) \
&& echo ${CWATCH_START_TIME}
- 統計情報の確認
=================
実際に値を取ってみましょう。
変数の確認
cat << ETX
CWATCH_NAMESPACE: ${CWATCH_NAMESPACE}
CWATCH_METRIC_NAME: ${CWATCH_METRIC_NAME}
CWATCH_START_TIME: ${CWATCH_START_TIME}
CWATCH_END_TIME: ${CWATCH_END_TIME}
CWATCH_STAT_PERIOD: ${CWATCH_STAT_PERIOD}
CWATCH_STATISTICS: ${CWATCH_STATISTICS}
CWATCH_DIMENSIONS: ${CWATCH_DIMENSIONS}
ETX
コマンド
aws cloudwatch get-metric-statistics \
--namespace ${CWATCH_NAMESPACE} \
--metric-name ${CWATCH_METRIC_NAME} \
--start-time ${CWATCH_START_TIME} \
--end-time ${CWATCH_END_TIME} \
--period ${CWATCH_STAT_PERIOD} \
--statistics ${CWATCH_STATISTICS} \
--dimensions ${CWATCH_DIMENSIONS}
結果
{
"Datapoints": [
{
"Timestamp": "2016-10-24T01:23:45Z",
"Sum": 2.0,
"Unit": "Count"
}
],
"Label": "vpn-xxxxxxxx"
}