tofucodes diary

にほんごのほう

CloudWatchでSNSのメトリクス取得につまずいた話

SNSの通知の成功数・失敗数を集計したかったんです。

前任者のコードを見てみたら

// SNSは通知の成功数・失敗数が分からないため0を入れておく

とコメントがあったんだけどそんなことはなくw

CloudWatchでSNSのメトリクスを見ればちゃんと確認できました。

SNSはPush通知で使っているため、iOSAndroidそれぞれの通知成功数・失敗数が取得したかったのですが

ディメンションで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

f:id:tofucode:20151030213415p:plain

after f:id:tofucode:20151030213337p:plain