1. tcsh

    No comment

    tcsh
Changes in body
Source | HTML | Preview
@@ -1,339 +1,391 @@
-http://jawsug-cli.doorkeeper.jp/events/17391 でのハンズオン資料です。
-
AWS CLIを利用してCloudWatchのメトリックを見てみます。
今回は、SNSを例として使います。
前提条件
========
-## CloudWatchへの権限
-* CloudWatchに対してフル権限があること。
+SNSへの権限
+-----------
+
+SNSに対してフル権限があること。
-## AWS CLIのバージョン
+
+AWS CLIのバージョン
+-------------------
+
以下のバージョンで動作確認済
+* AWS CLI 1.10.
+* AWS CLI 1.10.6
* AWS CLI 1.6.10
+```bash:コマンド:
+aws --version
+```
-0. 事前準備
-===========
+```text:結果(例):
+ aws-cli/1.10.4 Python/2.7.5 Darwin/13.4.0 botocore/1.3.26
+```
-0.1. トピックの作成
----------------------
+バージョンが古い場合は最新版に上げることをオススメします。
-トピックが存在し、通知が可能になっている必要があります。
+```bash:コマンド(OSXの場合)
+sudo -H /opt/local/bin/pip install -U awscli
+```
-以下のハンズオンを事前に行なってください。
-* トピックの作成 http://qiita.com/tcsh/items/e05e21e7338668cbf3b8
-* 通知先の登録 (e-mail) http://qiita.com/tcsh/items/ca81576b0018bfa32cbe
+0. 準備
+=======
-0.2. リージョンの
+0.1. リージョンの
---------------------
-対象のトピックが存在するリージョンを指定します。
+利用するリージョンを決めます。 (カレントユーザが利用するカレントリージ
+ョンも切り変わります。)
+
+```bash:変数の設定(東京リージョンの場合):
+export AWS_DEFAULT_REGION='ap-northeast-1'
+```
+
+
+0.2. 変数の確認
+---------------
+
+プロファイルが想定のものになっていることを確認します。
```bash:コマンド:
- export AWS_DEFAULT_REGION='ap-northeast-1'
+aws configure list
```
-このハンズオンでは、AWS標準のリージョン変数を利用していますが、regionオプションでコマンド毎に指定しても同様の結果になります。
-(「オペミスを回避するために明示的に実行する」という意味ではregionオプションの方が良いです。)
+```text:結果(例):
+ Name Value Type Location
+ ---- ----- ---- --------
+ profile admin-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. 事前作業
+===========
-0.3. トピックの指定
+1.1. トピックの指定
-------------------
対象となるトピックを指定します。
```bash:コマンド:
- SNS_TOPIC_NAME='example-topic'
+SNS_TOPIC_NAME="$(date +%Y%m%d)-handson-cloudwatch" \
+ && echo ${SNS_TOPIC_NAME}
```
+そのリージョンでユニークである必要があります。
-1. 対象の指定
+すでに同じ名前のトピックが存在しないことを確認します。
+
+```bash:コマンド:
+aws sns list-topics |\
+ grep ${SNS_TOPIC_NAME}
+```
+
+```text:結果:
+ (戻り値なし)
+```
+
+
+1.2. トピックの作成
+---------------------
+
+以下の手順でトピックを作成してください。
+
+* トピックの作成 http://qiita.com/tcsh/items/e05e21e7338668cbf3b8
+* 通知先の登録 (e-mail) http://qiita.com/tcsh/items/ca81576b0018bfa32cbe
+
+
+
+
+
+2. 対象の指定
=============
-名前空間の指定
+2.1. 名前空間の指定
--------------
CloudWatchの名前空間を指定します。
```bash:コマンド:
CWATCH_NAMESPACE='AWS/SNS'
```
-ディメンションの指定
+2.2. ディメンションの指定
--------------------
CloudWatchのディメンションを指定します。
ここでは、トピック名をディメンションとして利用します。
```bash:コマンド:
CWATCH_DIMENSIONS="Name=TopicName,Value=${SNS_TOPIC_NAME}"
```
-2. メトリックの一覧
+3. メトリックの一覧
===================
指定した名前空間の指定したディメンションで利用できるメトリックの一覧を表示してみましょう。
```bash:コマンド:
aws cloudwatch list-metrics \
--namespace ${CWATCH_NAMESPACE} \
--dimensions ${CWATCH_DIMENSIONS}
```
SNSトピックの作成後、一覧表示されるまで5-10分ほど必要になるようです。
```json:結果:
{
"Metrics": [
{
"Namespace": "AWS/SNS",
"Dimensions": [
{
"Name": "TopicName",
"Value": "example-topic"
}
],
"MetricName": "PublishSize"
},
{
"Namespace": "AWS/SNS",
"Dimensions": [
{
"Name": "TopicName",
"Value": "example-topic"
}
],
"MetricName": "NumberOfNotificationsDelivered"
},
{
"Namespace": "AWS/SNS",
"Dimensions": [
{
"Name": "TopicName",
"Value": "example-topic"
}
],
"MetricName": "NumberOfMessagesPublished"
},
{
"Namespace": "AWS/SNS",
"Dimensions": [
{
"Name": "TopicName",
"Value": "example-topic"
}
],
"MetricName": "NumberOfNotificationsFailed"
}
]
}
```
SNSトピックの作成直後だと、PublishSizeは無いかもしれません。
-3. 統計情報の範囲、周期の決定
+4. 統計情報の範囲、周期の決定
=============================
-3.1. 統計周期の決定
+4.1. 統計周期の決定
-------------------
統計情報の取得単位(周期)を秒単位で指定します。
ここでは5分(300秒)周期にしてみます。
```bash:コマンド:
- CWATCH_STAT_PERIOD='300'
+CWATCH_STAT_PERIOD='300'
```
-3.2. 統計期間の決定
+4.2. 統計期間の決定
-------------------
統計情報の対象期間を指定します。
ここでは、24時間(1440分)前から現在を対象にしてみます。
```bash:コマンド:
- CWATCH_END_TIME=`date -u '+%FT%TZ'` \
+CWATCH_END_TIME=`date -u '+%FT%TZ'` \
&& echo ${CWATCH_END_TIME}
TIME_BEFORE_MIN='1440'
```
```bash:コマンド(OSX/BSD系OSの場合):
- CWATCH_START_TIME=`date -u -v-${TIME_BEFORE_MIN}M '+%FT%TZ'` \
+CWATCH_START_TIME=`date -u -v-${TIME_BEFORE_MIN}M '+%FT%TZ'` \
&& echo ${CWATCH_START_TIME}
```
```bash:コマンド(Linux系OSの場合):
- CWATCH_START_TIME=`date -u -d "${TIME_BEFORE_MIN} mins ago" '+%FT%TZ'` \
+CWATCH_START_TIME=`date -u -d "${TIME_BEFORE_MIN} mins ago" '+%FT%TZ'` \
&& echo ${CWATCH_START_TIME}
```
-4. 統計情報の確認
+5. 統計情報の確認
=========================================
http://docs.aws.amazon.com/sns/latest/dg/MonitorSNSwithCloudWatch.html
利用できるメトリックから、実際に値を取ってみましょう。
SNSトピック作成直後であれば、残念ながら全て空になっているはずです。
-NumberOfMessagesPublished
+5.1. NumberOfMessagesPublished
-------------------------
metric名と集計方法を決定します。
```bash:コマンド:
- CWATCH_METRIC_NAME='NumberOfMessagesPublished'
- CWATCH_STATISTICS='Sum'
+CWATCH_METRIC_NAME='NumberOfMessagesPublished'
+CWATCH_STATISTICS='Sum'
```
```bash:コマンド:
- aws cloudwatch get-metric-statistics \
+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}
```
```json:結果(データが存在する場合の例):
{
"Datapoints": [
{
"Timestamp": "2015-01-05T00:02:00Z",
"Sum": 0.0,
"Unit": "Count"
}
],
"Label": "NumberOfMessagesPublished"
}
```
-PublishSize
+5.2. PublishSize
-----------
metric名を決定します。
```bash:コマンド:
CWATCH_METRIC_NAME='PublishSize'
```
集計方法を決定します。
PublishSizeは、以下の4種類の集計方法を選択できます。
```bash:コマンド:
CWATCH_STATISTICS='Minimum'
CWATCH_STATISTICS='Maximum'
CWATCH_STATISTICS='Average'
CWATCH_STATISTICS='SampleCount'
```
```bash:コマンド:
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}
```
```json:結果:
{
"Datapoints": [],
"Label": "PublishSize"
}
```
-NumberOfNotificationsDelivered
+5.3. NumberOfNotificationsDelivered
------------------------------
metric名と集計方法を決定します。
```bash:コマンド:
CWATCH_METRIC_NAME='NumberOfNotificationsDelivered'
CWATCH_STATISTICS='Sum'
```
```bash:コマンド:
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}
```
```json:結果(データが存在しない場合の例):
{
"Datapoints": [],
"Label": "NumberOfNotificationsDelivered"
}
```
-NumberOfNotificationsFailed
+5.4. NumberOfNotificationsFailed
---------------------------
metric名を決定します。
```bash:コマンド:
CWATCH_METRIC_NAME='NumberOfNotificationsFailed'
```
集計方法を決定します。
NumberOfNotificationsFailedは、以下の2種類の集計方法を選択できます。
```bash:コマンド:
CWATCH_STATISTICS='Sum'
CWATCH_STATISTICS='Average'
```
```bash:コマンド:
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}
```
```json:結果(データが存在しない場合の例):
{
"Datapoints": [],
"Label": "NumberOfNotificationsFailed"
}
```
完了
====
CloudWatchに保存されたSNSの監視情報について見ることができました。
-次は、CloudWatchに保存されているSQSの監視情報についてアラートを設定してみます。