External Auth/ACL モジュール状態異常アラート
External Auth/ACL モジュール状態異常アラートは、EMQX が HTTP、MySQL、Redis、PostgreSQL、JWT などの設定された外部認証または認可サービスとの通信中にエラーが発生したことを示します。
この状態はクライアントが認証または認可を完了できなくなり、接続失敗やアクセス制御エラーを引き起こす可能性があります。
ネットワーク接続障害
症状
EMQX が外部認証または認可サービスへのネットワーク接続を確立できません。
デプロイメントログ に timeout や connection refused といったエラーが表示される場合は、EMQX と外部サービス間の接続問題を示しています。
主な原因
- VPCピアリング、PrivateLink、または NAT ゲートウェイが設定されていない、もしくは誤って設定されている。
- 外部サービスの IP アドレスまたはポートが誤っている。
- ファイアウォールやセキュリティグループが必要なポートをブロックしている。
対処方法
- VPCピアリング、PrivateLink、NAT ゲートウェイが正しく設定されており、アクティブであることを確認してください。
- 外部サービスの IP アドレスとポートを確認してください。
- ファイアウォールやセキュリティグループのルールを確認し、EMQX が外部サービスにアクセスできることを確認してください。
- 外部認証サービスに対して高可用性およびロードバランシングを導入し、単一障害点を回避してください。
外部サービスの利用不可または異常状態
症状
外部認証または認可サービスが利用不可または異常状態であるため、EMQX が有効な応答を受信できません。
デプロイメントログ に unrecoverable_error や disconnected といったエラーが表示される場合は、外部サービスの問題を示しています。
主な原因
- 外部サービスが停止している、またはプロセスが予期せず終了した。
- 外部サービスが過負荷で応答できない。
- データベース接続プールが枯渇し、新しい接続を拒否している。
対処方法
- MySQL、PostgreSQL、Redis、HTTPサービスなど外部サービスの状態とログを確認してください。
- CPU、メモリ、接続使用状況を監視し、リソース枯渇をチェックしてください。
- 必要に応じてデータベースサービスの接続プール容量を増やしてください。
外部認証または認可設定の誤り
症状
外部サービスが EMQX が解析できない形式や内容のデータを返します。
デプロイメントログ に invalid_response や decode 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 デコードツールや以下のコマンドでトークンを検証してください。
bashjwt decode <token>JWT のヘッダー、ペイロード、署名を確認してください。
EMQX の
algorithmとpublic_key設定がクライアントの JWT 設定と一致していることを確認してください。適切な JWT 有効期限を設定し、クライアント側でトークンを定期的に更新してください。
トラブルシューティング
- ネットワーク接続を確認します。EMQX テクニカルサポートと連携し、
curl、ping、nc、telnetなどのツールを使って EMQX ノードから外部サービスに到達できるか確認してください。 - 外部サービスを確認します。データベースや HTTP サービスが稼働しているか、接続上限に達していないか、期待される JSON 形式と HTTP ステータスコードを返しているかを確認してください。
- デプロイメントログ を開き、Error Type を Authentication または Authorization に設定し、エラー詳細から原因を特定してください。
- JWT の場合、
algorithmやpublic_keyなどの設定がクライアントと一致しているか確認し、テストトークンをデコードして有効期限や必要なクレームの有無をチェックしてください。