CloudWatchでSNSのメトリクス取得につまずいた話
SNSの通知の成功数・失敗数を集計したかったんです。
前任者のコードを見てみたら
// SNSは通知の成功数・失敗数が分からないため0を入れておく
とコメントがあったんだけどそんなことはなくw
CloudWatchでSNSのメトリクスを見ればちゃんと確認できました。
SNSはPush通知で使っているため、iOSとAndroidそれぞれの通知成功数・失敗数が取得したかったのですが
ディメンションでPlatformを指定してもどうにも取得できない。
Amazon Simple Notification Service は以下のディメンションを CloudWatch に送信します。
上記リンクにもこう書いてあるのに…。
でなぜ取得できなかったのか結論から言うと、SNSのTopicを使ってPush通知を送っていたから、でした。
以下は取得できるメトリクスをAWS-CLIで確認した結果です。
TopicNameの方は取れてますが、Platformの方は取れてませんね。
$ aws cloudwatch list-metrics --namespace 'AWS/SNS' --dimensions "Name=TopicName,Value=トピック名" { "Metrics": [ { "Namespace": "AWS/SNS", "Dimensions": [ { "Name": "TopicName", "Value": "トピック名" } ], "MetricName": "DwellTime" }, (省略) ] }
$ aws cloudwatch list-metrics --namespace 'AWS/SNS' --dimensions "Name=Platform,Value=APNS" { "Metrics": [] }
試しにTopicではなくSNSのApplicationに対して通知をしてみたところ、Topicメトリクス以外のフィルタについても確認することができました。
AWSコンソールの表示も以下のように変わりました。
before
after