Skip to content

External Auth/ACL モジュール状態異常アラート

External Auth/ACL モジュール状態異常アラートは、EMQX が HTTP、MySQL、Redis、PostgreSQL、JWT などの設定された外部認証または認可サービスとの通信中にエラーが発生したことを示します。

この状態はクライアントが認証または認可を完了できなくなり、接続失敗やアクセス制御エラーを引き起こす可能性があります。

ネットワーク接続障害

症状

EMQX が外部認証または認可サービスへのネットワーク接続を確立できません。

デプロイメントログtimeoutconnection refused といったエラーが表示される場合は、EMQX と外部サービス間の接続問題を示しています。

主な原因

  • VPCピアリング、PrivateLink、または NAT ゲートウェイが設定されていない、もしくは誤って設定されている。
  • 外部サービスの IP アドレスまたはポートが誤っている。
  • ファイアウォールやセキュリティグループが必要なポートをブロックしている。

対処方法

  • VPCピアリング、PrivateLink、NAT ゲートウェイが正しく設定されており、アクティブであることを確認してください。
  • 外部サービスの IP アドレスとポートを確認してください。
  • ファイアウォールやセキュリティグループのルールを確認し、EMQX が外部サービスにアクセスできることを確認してください。
  • 外部認証サービスに対して高可用性およびロードバランシングを導入し、単一障害点を回避してください。

外部サービスの利用不可または異常状態

症状

外部認証または認可サービスが利用不可または異常状態であるため、EMQX が有効な応答を受信できません。

デプロイメントログunrecoverable_errordisconnected といったエラーが表示される場合は、外部サービスの問題を示しています。

主な原因

  • 外部サービスが停止している、またはプロセスが予期せず終了した。
  • 外部サービスが過負荷で応答できない。
  • データベース接続プールが枯渇し、新しい接続を拒否している。

対処方法

  • MySQL、PostgreSQL、Redis、HTTPサービスなど外部サービスの状態とログを確認してください。
  • CPU、メモリ、接続使用状況を監視し、リソース枯渇をチェックしてください。
  • 必要に応じてデータベースサービスの接続プール容量を増やしてください。

外部認証または認可設定の誤り

症状

外部サービスが EMQX が解析できない形式や内容のデータを返します。

デプロイメントログinvalid_responsedecode error といったエラーが表示される場合は、設定ミスや応答形式の誤りを示しています。

主な原因

  • HTTP API の応答に EMQX が要求する result フィールドが欠落している。
  • データベースクエリが無効、または結果が返ってこない。
  • 設定された JWT キーがクライアントの使用するキーと一致しない。

対処方法

  • 外部 HTTP API の応答が EMQX の認証・認可 API 要件に準拠していることを確認してください。
  • データベースクエリが有効で、期待される結果を返すことを確認してください。
  • テスト環境でデバッグモードを有効にし、外部サービスの応答が EMQX で正しく解析できることを確認してください。

JWT 設定の問題

症状

JWT を認証または認可に使用している場合、JWT 設定とクライアントのトークン生成方法の不一致や無効なトークンにより、このアラートが発生することがあります。

主な原因

  • キー不一致:クライアントが署名に使用するキーと EMQX の検証キーが異なる。ログに通常 JWT verification failed が含まれます。
  • アルゴリズム不一致:クライアントが HS256 を使用しているのに対し、EMQX は RS256 など別のアルゴリズムを設定している。ログに通常 unsupported algorithm が含まれます。
  • 期限切れまたは無効なトークン:クライアントが期限切れまたは無効な JWT を使用している。ログに通常 exp claim is expired が含まれます。

対処方法

  • JWT デコードツールや以下のコマンドでトークンを検証してください。

    bash
    jwt decode <token>
  • JWT のヘッダー、ペイロード、署名を確認してください。

  • EMQX の algorithmpublic_key 設定がクライアントの JWT 設定と一致していることを確認してください。

  • 適切な JWT 有効期限を設定し、クライアント側でトークンを定期的に更新してください。

トラブルシューティング

  1. ネットワーク接続を確認します。EMQX テクニカルサポートと連携し、curlpingnctelnet などのツールを使って EMQX ノードから外部サービスに到達できるか確認してください。
  2. 外部サービスを確認します。データベースや HTTP サービスが稼働しているか、接続上限に達していないか、期待される JSON 形式と HTTP ステータスコードを返しているかを確認してください。
  3. デプロイメントログ を開き、Error TypeAuthentication または Authorization に設定し、エラー詳細から原因を特定してください。
  4. JWT の場合、algorithmpublic_key などの設定がクライアントと一致しているか確認し、テストトークンをデコードして有効期限や必要なクレームの有無をチェックしてください。