🎫
Azure EventHubsのInput、Outputメッセージ数を比較する
やりたいこと
Azure EventHubsで大量のメッセージを捌いていると、どのくらいのメッセージが来てるか、遅延が発生したりしていないか、InputMessagesとOutputMessagesを比較したくなったので、
Azure Monitorのクエリをメモとして残します。
EventHubs > 監視 > ログ
ここでクエリを実行します。
日付単位でメッセージ数を集計したい
Azure OpenAIで下記のように依頼しました。
Azure Monitorのクエリで取得できるIncommingMessagesとOutgoingMessagesの数がIncommingMessagesに対して5%以内の差分か判定するクエリを教えて
だいたい、下記のような感じのクエリが出力されたので、期間とかを変更して
6日分くらいのデータを集計するようにしました。
// 入力メッセージ数の集計
let InputMessages = AzureMetrics
| where MetricName == "IncomingMessages" and TimeGenerated >= ago(7d)
| summarize TotalInputMessages = sum(Total) by bin(TimeGenerated, 1d);
// 出力メッセージ数の集計
let OutputMessages = AzureMetrics
| where MetricName == "OutgoingMessages" and TimeGenerated >= ago(7d)
| summarize TotalOutputMessages = sum(Total) by bin(TimeGenerated, 1d);
// 入力メッセージ数と出力メッセージ数の結合と比較
InputMessages
| join kind=inner OutputMessages on TimeGenerated
| project TimeGenerated, TotalInputMessages, TotalOutputMessages,
Difference = abs(TotalInputMessages - TotalOutputMessages),
IsWithin5Percent = abs(TotalInputMessages - TotalOutputMessages) <= (TotalInputMessages * 0.05)
| order by TimeGenerated desc
6日前くらいの分単位のInput/Outputメッセージの比較
let InputMessages = AzureMetrics
| where MetricName == "IncomingMessages" and TimeGenerated >= ago(7d) and TimeGenerated <= ago(5d)
| summarize TotalInputMessages = sum(Total) by TimeGenerated;
let OutputMessages = AzureMetrics
| where MetricName == "OutgoingMessages" and TimeGenerated >= ago(7d) and TimeGenerated <= ago(5d)
| summarize TotalOutputMessages = sum(Total) by TimeGenerated;
// 入力メッセージ数と出力メッセージ数の結合と比較
InputMessages
| join kind=inner OutputMessages on TimeGenerated
| project TimeGenerated, TotalInputMessages, TotalOutputMessages,
Difference = abs(TotalInputMessages - TotalOutputMessages),
IsWithin5Percent = abs(TotalInputMessages - TotalOutputMessages) <= (TotalInputMessages * 0.05)
| order by TimeGenerated desc
上記を実行すると、1分あたりのOutputメッセージ数が1200、1300などの100メッセージ単位で捌かれていることに気づきました。
どこかで分単位のLIMITに引っかかってるんだろうなー
EventHubsのLimit
この辺のLimitではなさそうなので、メッセージを捌く側のLimitかなーまとめ
AOAIで大体のクエリはできますが、間違いとか、ステップを踏む必要もあるので、公開情報として残すことでGPT-Xの精度向上につながらないかなというモチベーションが生まれてます。
Discussion