Service Bus および Event Hubs の UserError、ServerError について

1 minute read

よくある質問

Service Bus や Event Hubs のサーバエラー、ユーザエラーともに、どういった場合に発生しますか?

回答

・サーバエラーについて

基本的にはプラットフォーム側で何かあった場合に Event Hubs のサービス側 (Azure プラットフォーム側) で何らかのエラーが発生した場合に生じます。 具体的には、以下になります。

  • メンテナンスによる一過性の状況
  • 障害による緊急的な状況

・ユーザーエラーについて

ユーザーエラーはクライアントサイド側で何らかの処理が適切に行われない状況に発生する可能性がございます。
具体的には、以下になります。

  • Service bus や、Event Hubs に接続するアプリケーションで設定する接続文字列が間違っているなど、アプリケーションの構成に問題がある状況
  • Service bus や、Event Hubs に接続するアプリケーション内で、例外が発生している状況(メンテナンスの影響も含む)

・対処について

・サーバエラーについて
基本的に一過性のものについては、リトライを実施いただくことにより、処理が完了することが見込まれます。

・ユーザーエラーについて
状況によって対応が分かれます。
極端な例となってしまいますが、URL のパスが間違っていたり、メソッドで指定した引数が間違っている場合などは
何度リトライしても失敗で終わってしまいます。
そのため、まずは Service Bus や、Event Hubs に接続するアプリケーションの構成をご確認いただいたり、
SDK、.NET Framework APIを使用している場合は、例外時のアクションが公式ドキュメントにございますので、ご参考にしていただけると幸いです。

Service Bus や、Event Hubs に接続するアプリケーションとして、Funstion App の Service Bus トリガーなどをご利用いただいている構成でユーザーエラーが発生する事例がございます。Function App では定期的に AMQP プロトコルを使用して、Event Hubs や Service Bus へメッセージがないか確認する処理を実施しています。そのタイミングでメンテナンスが発生、またはネットワークの瞬断が発生した場合には、ユーザーエラーが記録される可能性がございます。これは、関数自体が実行されていないときに発生する可能性がございますので、業務影響がないものであれば無視していただいてもよいものもございます。

・メトリック監視について

上記のように、ユーザーエラー・サーバーエラーのメトリックは、様々な要因でカウントされうるメトリックとなります。
そのため、メトリックカウントを 「0 より大きい」また「1以上」などの閾値で監視している場合、リトライ処理でカバーされるものや、一過性の事象の場合も
検知される可能性がございます。監視要件については、お客様環境に依存するため、お客様の運用方針に基づき決めていただく必要が御座いますが、
例えば、継続して、エラーが発生している場合に warning として発砲し、そのタイミングで Service Bus、Event Hubs に接続しているアプリケーションに影響が出ていた場合に初めてエラーとして扱う、または、アプリケーション側のエラーを検知したうえで、メトリックを確認し、継続的に発生しているか確認するなど、複合的に判断していただくことをお薦めいたします。

数分以上継続して発生しており、リトライ処理でカバーできない状況が発生している場合は、サーバー側での障害の可能性もございますため、
弊社にお問合せください。

参考ドキュメント

再試行 ~ 一般的なガイドライン

Event Hub ~ 再試行メカニズム

Service Bus ~ 再試行メカニズム

Event Hub ~ メッセージングの例外

Service Bus ~ メッセージングの例外








2020 年 6 月 4 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。