Azure Queue Storage で ApproximateAgeOfOldestMessage を metric する
- Queue の処理遅延を監視/アラートするために欲しい情報だけれど、今のところデフォルトでは取れない
ApproximateMessageCount
のようにデフォルトで取れて欲しい- 要望としては出した
自分で取るときの例
- Dequeue したときに
InsertionTime
と現在時刻との差分から Cloud Queue のおおまかな滞在時間を出す - そのままモニタリング環境に送るか、
histogram
をとって Max の値を一定間隔で送る
var histogram = Metric.Histogram("myqueue.AgeOfMessage", Unit.Custom("sec")); // metrics.net var queue = queueClient.GetQueueReference("myqueue"); // azure queue sdk var message = queue.GetMessage(); if (message.InsertionTime.HasValue) { var messageAge= (int)(DateTime.UtcNow - message.InsertionTime.Value).TotalSeconds; histogram.Update(messageAge); }