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

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

InvalidProtocol

오류 메시지

Edge UI 또는 Edge Management 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.

예시 스크린샷

원인

<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

오류 메시지

Edge UI 또는 Edge Management 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.

예시 스크린샷

원인

포트 번호가 <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>