このプラグイン(githubのURLです)では、CloudWatch APIを使ってSQSのMetricsを取得します。
What metric does this plugin get?
取得できるMetricsとしては以下のものがあります。カラム名は左から、NameはMetric名、StatisticsはAvgとかSumとか何でStatisticsして値を取得するか、DescriptionはMetricの簡単な説明です。
Name | Statistics | Description |
---|---|---|
NumberOfMessageSent | Sum | Queueに追加されたメッセージの数の合計 |
SentMessageSize | Minimum | 取得間隔内にQueueに追加されたメッセージのサイズの中で最も小さいもの |
SentMessageSize | Maximum | 取得間隔内にQueueに追加されたメッセージのサイズの中で最も大きいもの |
SentMessageSize | Average | 取得間隔内にQueueに追加されたメッセージの平均サイズ |
SentMessageSize | Sum | 取得間隔内にQueueに追加されたメッセージの合計サイズ |
NumberOfMessagesReceived | Sum | ReceiveMessage APIのcallで取得したメッセージの数 |
NumberOfEmptyReceives | Sum | ReceiveMessage APIのcallでメッセージを返さなかったcall回数 |
NumberOfMessagesDeleted | Sum | Queueから削除されたメッセージの数 |
ApproximateNumberOfMessagesDelayed | Average | 遅延が発生して、すぐに読み取れないQueueの数 |
ApproximateNumberOfMessagesVisible | Average | Queueから取得可能なメッセージの数。Queue Lengthですね。 |
ApproximateNumberOfMessagesNotVisible | Average | 処理中のメッセージの数。取り出されて削除されてないメッセージとかはここにカウントされるます。 |
Zabbix Template
Items
Itemsとしては、上のAPIをcallしているだけなので上記の表のみです。
Triggers
Queue Length
ApproximateNumberOfMessagesNotVisibleの値からQueueの長さをみて、Info, Average, Highとそれぞれの閾値に対してAlert投げます。閾値はそれぞれMacroに切り出してあるので、default値に過不足があれば適時調整ですね。
Number of Getting Empty Messages
アプリケーションの特性によっては不要かもしれませんが、Queueに何も入ってないことを検知するより、ReceiveMessage APIのCallが空だった回数でアラートをあげています。DBにInsertするときにSQSに対してMessageを投げてConsumerが取り出すようなアーキテクチャーだと溜まりすぎても問題だし、空すぎてもなんかおかしいってことあると思います。
Graphs
Number of Operated Queue
Messageの各オペレーションをグラフ化です。
- 追加されたメッセージの数
- 受け取ったメッセージの数
- 削除されたメッセージの数
をグラフにしてます。
Number of Visible Messages
Queue Lengthのグラフです。
Total Message Size
Queueに入っているMessageのTotal Sizeです。
Size per Message
1MessageあたりのBytesです。
Queue Length自体はアプリケーションの特性によっては取得することに意味はないのかもしれませんが、明らかにたまっているとき、明らかに少ない時にいつもとは違う何かが起こっていることには気づけるはずです。そこに気づくだけでも意味はあるかと...