Message Logging 정책 배포 오류 문제 해결

ApigeeApigee Hybrid 문서입니다.
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>