Monitoring Amazon SNS topics using CloudWatch
Amazon SNS and Amazon CloudWatch are integrated so you can collect, view, and analyze metrics for
every active Amazon SNS notification. Once you have configured CloudWatch for Amazon SNS, you can gain
better insight into the performance of your Amazon SNS topics, push notifications, and SMS
deliveries. For example, you can set an alarm to send you an email notification if a
specified threshold is met for an Amazon SNS metric, such as
NumberOfNotificationsFailed
. For a list of all the metrics that Amazon SNS
sends to CloudWatch, see Amazon SNS metrics. For more
information about Amazon SNS push notifications, see Sending mobile push notifications
with Amazon SNS.
Note
The metrics you configure with CloudWatch for your Amazon SNS topics are automatically collected and pushed to CloudWatch at 1-minute intervals. These metrics are gathered on all topics that meet the CloudWatch guidelines for being active. A topic is considered active by CloudWatch for up to six hours from the last activity (that is, any API call) on the topic.
There is no charge for the Amazon SNS metrics reported in CloudWatch; they are provided as part of the Amazon SNS service.
View CloudWatch metrics for Amazon SNS
You can monitor metrics for Amazon SNS using the CloudWatch console, CloudWatch's own command line interface (CLI), or programmatically using the CloudWatch API. The following procedures show you how to access the metrics using the AWS Management Console.
To view metrics using the CloudWatch console
-
Sign in to the CloudWatch console
. -
On the navigation panel, choose Metrics.
-
On the All metrics tab, choose SNS, and then choose one of the following dimensions:
-
Country, SMS Type
-
PhoneNumber
-
Topic Metrics
-
Metrics with no dimensions
-
-
To view more detail, choose a specific item. For example, if you choose Topic Metrics and then choose NumberOfMessagesPublished, the average number of published Amazon SNS messages for a 1-minute period throughout the time range of 6 hours is displayed.
-
To view Amazon SNS usage metrics, on the All metrics tab, choose Usage, and select the target Amazon SNS usage metric (for example,
NumberOfMessagesPublishedPerAccount
).
Set CloudWatch alarms for Amazon SNS metrics
CloudWatch also allows you to set alarms when a threshold is met for a metric. For example, you could set an alarm for the metric, NumberOfNotificationsFailed, so that when your specified threshold number is met within the sampling period, then an email notification would be sent to inform you of the event.
To set alarms using the CloudWatch console
-
Sign in to the AWS Management Console and open the CloudWatch console at https://console.aws.amazon.com/cloudwatch/
. -
Choose Alarms, and then choose the Create Alarm button. This launches the Create Alarm wizard.
-
Scroll through the Amazon SNS metrics to locate the metric you want to place an alarm on. Select the metric to create an alarm on and choose Continue.
-
Fill in the Name, Description, Threshold, and Time values for the metric, and then choose Continue.
-
Choose Alarm as the alarm state. If you want CloudWatch to send you an email when the alarm state is reached, choose either an existing Amazon SNS topic or choose Create New Email Topic. If you choose Create New Email Topic, you can set the name and email addresses for a new topic. This list will be saved and appear in the drop-down box for future alarms. Choose Continue.
Note
If you use Create New Email Topic to create a new Amazon SNS topic, the email addresses must be verified before they will receive notifications. Emails are sent only when the alarm enters an alarm state. If this alarm state change happens before the email addresses are verified, they will not receive a notification.
-
At this point, the Create Alarm wizard gives you a chance to review the alarm you’re about to create. If you need to make any changes, you can use the Edit links on the right. Once you are satisfied, choose Create Alarm.
For more information about using CloudWatch and alarms, see the CloudWatch
Documentation
Amazon SNS metrics
Amazon SNS sends the following metrics to CloudWatch.
Namespace | Metric | Description |
---|---|---|
AWS/SNS |
NumberOfMessagesPublished
|
The number of messages published to your Amazon SNS topics. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum |
AWS/SNS |
NumberOfNotificationsDelivered
|
The number of messages successfully delivered from your Amazon SNS topics to subscribing endpoints. For a delivery attempt to succeed, the endpoint's subscription must accept the message. A subscription accepts a message if a.) it lacks a filter policy or b.) its filter policy includes attributes that match those assigned to the message. If the subscription rejects the message, the delivery attempt isn't counted for this metric. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum |
AWS/SNS |
NumberOfNotificationsFailed
|
The number of messages that Amazon SNS failed to deliver. For Amazon SQS, email, SMS, or mobile push endpoints, the metric increments by 1 when Amazon SNS stops attempting message deliveries. For HTTP or HTTPS endpoints, the metric includes every failed delivery attempt, including retries that follow the initial attempt. For all other endpoints, the count increases by 1 when the message fails to deliver (regardless of the number of attempts). This metric does not include messages that were rejected by subscription filter policies. You can control the number of retries for HTTP endpoints. For more information, see Amazon SNS message delivery retries. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut |
The number of messages that were rejected by subscription filter policies. A filter policy rejects a message when the message attributes don't match the policy attributes. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut-MessageAttributes |
The number of messages that were rejected by subscription filter policies for attribute-based filtering. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut-MessageBody |
The number of messages that were rejected by subscription filter policies for payload-based filtering. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut-InvalidAttributes |
The number of messages that were rejected by subscription filter policies because the messages' attributes are invalid – for example, because the attribute JSON is incorrectly formatted. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut-NoMessageAttributes |
The number of messages that were rejected by subscription filter policies because the messages have no attributes. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFilteredOut-InvalidMessageBody |
The number of messages that were rejected by subscription filter policies because the message body is invalid for filtering – for example, invalid JSON message body. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsRedrivenToDlq
|
The number of messages that have been moved to a dead-letter queue. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
NumberOfNotificationsFailedToRedriveToDlq
|
The number of messages that couldn't be moved to a dead-letter queue. Units: Count Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Sum, Average |
AWS/SNS |
PublishSize
|
The size of messages published. Units: Bytes Valid dimensions: Application, PhoneNumber, Platform, and TopicName Valid statistics: Minimum, Maximum, Average and Count |
AWS/SNS |
SMSMonthToDateSpentUSD |
The charges you have accrued since the start of the current calendar month for sending SMS messages. You can set an alarm for this metric to know when your month-to-date charges are close to the monthly SMS spend quota for your account. When Amazon SNS determines that sending an SMS message would incur a cost that exceeds this quota, it stops publishing SMS messages within minutes. For information about setting your monthly SMS spend quota, or for information about requesting a spend quota increase with AWS, see Setting SMS messaging preferences in Amazon SNS. Units: USD Valid dimensions: None Valid statistics: Sum |
AWS/SNS |
SMSSuccessRate
|
The rate of successful SMS message deliveries. Units: Count Valid dimensions: PhoneNumber Valid statistics: Sum, Average, Data Samples |
Dimensions for Amazon SNS metrics
Amazon Simple Notification Service sends the following dimensions to CloudWatch.
Dimension |
Description |
---|---|
Application
|
Filters on application objects, which represent an app and device registered with one of the supported push notification services, such as APNs and FCM. |
Application,Platform
|
Filters on application and platform objects, where the platform objects are for the supported push notification services, such as APNs and FCM. |
Country |
Filters on the destination country or region of an SMS message. The country or region is represented by its ISO 3166-1 alpha-2 code. |
PhoneNumber
|
Filters on the phone number when you publish SMS directly to a phone number (without a topic). |
Platform
|
Filters on platform objects for the push notification services, such as APNs and FCM. |
TopicName
|
Filters on Amazon SNS topic names. |
SMSType |
Filters on the message type of SMS message. Can be promotional or transactional. |
Amazon SNS usage metrics
Amazon Simple Notification Service sends the following usage metrics to CloudWatch.
Namespace |
Service |
Metric |
Resource |
Type |
Description |
---|---|---|---|---|---|
AWS/Usage | SNS | ResourceCount |
NumberOfMessagesPublishedPerAccount |
Resource |
|
AWS/Usage | SNS | ResourceCount |
ApproximateNumberOfTopics |
Resource |
|
AWS/Usage | SNS | ResourceCount |
ApproximateNumberOfFilterPolicies |
Resource |
|
AWS/Usage | SNS | ResourceCount |
ApproximateNumberOfPendingSubscriptions |
Resource |
|
AWS/Usage | SNS | CallCount |
|
API |
|