Message Logging ポリシーのデプロイエラーのトラブルシューティング

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
Apigee Edge のドキュメントを表示する

InvalidProtocol

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Saving Revision revision_number
Invalid Protocol: invalid_protocol for Syslog handler in policy policy_name.

エラー メッセージの例

Error Saving Revision 4
Invalid Protocol: HTTP for Syslog handler in policy LogToSyslog.

スクリーンショットの例

リビジョン 4 の保存エラー。

原因

<Protocol> 要素内で指定されたプロトコルが有効でない場合、MessageLogging ポリシーのデプロイがこのエラーで失敗する場合があります。有効なプロトコルは TCP と UDP です。TLS / SSL 経由で Syslog メッセージを送信する場合は、TCP のみがサポートされます。

たとえば、次のように MessageLogging ポリシーの <Protocol> 要素に HTTP を指定すると、API プロキシのデプロイがこのエラーにより失敗します。

<Protocol>HTTP</Protocol>

診断

  1. エラーが発生した MessageLogging ポリシーを特定します。この情報はエラー メッセージにあります。たとえば、次のエラーでは、ポリシー名は LogToSyslog: です。

    Invalid Protocol: HTTP for Syslog handler in policy LogToSyslog.
    
  2. 失敗した MessageLogging ポリシー構成で、<Protocol> 要素内で指定されたプロトコルが有効かどうかを確認します。無効なプロトコルが指定されている場合、それがエラーの原因です。

    たとえば、次のポリシーでは無効なプロトコルが指定されています。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageLogging name="LogToSyslog">
      <Syslog>
        <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
        <Host>logs-01.loggly.com</Host>
        <Port>514</Port>
        <Protocol>HTTP</Protocol>
        <FormatMessage>true</FormatMessage>
      </Syslog>
      <logLevel>ALERT</logLevel>
    </MessageLogging>
    

    <Protocol> 要素内で定義されたプロトコルが無効なため、API プロキシのデプロイは次のエラーで失敗します。

    Invalid Protocol: HTTP for Syslog handler in policy LogToSyslog.
    

解決策

MessageLogging ポリシーの <Protocol> 要素で定義されたプロトコルが有効であることを確認します。<Protocol> 要素では次の値がサポートされます。

  • TCP
  • UDP

上記の例を修正するには、<Protocol> 要素内に有効なプロトコルを定義します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
  </Syslog>
  <logLevel>ALERT</logLevel>
</MessageLogging>

InvalidPort

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Saving Revision revision_number
Invalid Port: 0 for Syslog handler in policy policy_name.

エラー メッセージの例

Error Saving Revision 4
Invalid Port: 0 for Syslog handler in policy LogToSyslog.

スクリーンショットの例

リビジョン 4 の保存エラー。

原因

<Port> 要素内でポート番号が指定されていないか、有効でない場合、MessageLogging ポリシーのデプロイがこのエラーで失敗する場合があります。ポート番号は 0 より大きい整数である必要があります。

たとえば、<Port> 要素が次のように宣言されていると、API プロキシのデプロイが失敗します。

<Port>0</Port>

診断

  1. エラーが発生した MessageLogging ポリシーを特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは、ポリシー名は LogToSyslog: です。

    Invalid Port: 0 for Syslog handler in policy LogToSyslog.
    
  2. 失敗した MessageLogging ポリシーで、<Port> 要素内に有効なポート番号が指定されているかどうかを確認します。ポート番号が定義されていないか、無効な場合、これがエラーの原因です。

    たとえば、次のポリシーには無効なポート番号が指定されています。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageLogging name="LogToSyslog">
      <Syslog>
        <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
        <Host>logs-01.loggly.com</Host>
        <Port>0</Port>
        <Protocol>TCP</Protocol>
        <FormatMessage>true</FormatMessage>
      </Syslog>
      <logLevel>ALERT</logLevel>
    </MessageLogging>
    

    <Port> 要素内で定義されたポート番号が無効なため、API プロキシのデプロイは次のエラーで失敗します。

    Invalid Port: 0 for Syslog handler in policy LogToSyslog.
    

解決策

MessageLogging ポリシーの <Port> 要素内にポート番号を定義します。0 より大きい整数を指定する必要があります。

上記の例を修正するには、<Protocol> 要素内で有効なポート番号を定義します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
  </Syslog>
  <logLevel>ALERT</logLevel>
</MessageLogging>