การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายการบันทึกข้อความใช้งานได้

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

InvalidProtocol

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management 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.

ตัวอย่างภาพหน้าจอ

สาเหตุ

การติดตั้งใช้งานนโยบาย MessageLaking อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้ หากโปรโตคอลที่ระบุภายในองค์ประกอบ <Protocol> ไม่ถูกต้อง โปรโตคอลที่ถูกต้องคือ TCP และ UDP สำหรับการส่งข้อความ syslog ผ่าน TLS/SSL จะสามารถสนับสนุนเฉพาะ TCP เท่านั้น

ตัวอย่างเช่น การทำให้พร็อกซี API ใช้งานได้ล้มเหลวเนื่องจากข้อผิดพลาดนี้ หากคุณระบุ HTTP ในองค์ประกอบ <Protocol> ของนโยบาย MessageLนั้นๆ ดังที่แสดงด้านล่าง

<Protocol>HTTP</Protocol>

การวิเคราะห์

  1. ระบุนโยบาย MessageLcking ที่เกิดข้อผิดพลาด ซึ่งคุณจะเห็นข้อมูลนี้ในข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ LogToSyslog:

    Invalid Protocol: HTTP for Syslog handler in policy LogToSyslog.
    
  2. ในการกำหนดค่านโยบาย MessageLcking ที่ล้มเหลว ให้ตรวจสอบว่าโปรโตคอลที่ระบุภายในองค์ประกอบ <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.
    

ความละเอียด

ตรวจสอบว่าโปรโตคอลที่กำหนดไว้ในองค์ประกอบ <Protocol> ของนโยบาย MessageLนั้นๆ ถูกต้อง <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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management 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.

ตัวอย่างภาพหน้าจอ

สาเหตุ

การทำให้นโยบาย MessageLcking ใช้งานได้อาจล้มเหลวเนื่องจากข้อผิดพลาดนี้ หากไม่ได้ระบุหมายเลขพอร์ตภายในองค์ประกอบ <Port> หรือหากหมายเลขพอร์ตไม่ถูกต้อง หมายเลขพอร์ตต้องเป็นจำนวนเต็มที่มากกว่า 0

ตัวอย่างเช่น ถ้ามีการประกาศองค์ประกอบ <Port> ดังที่แสดงด้านล่าง การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว

<Port>0</Port>

การวินิจฉัย

  1. ระบุนโยบาย MessageLcking ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ LogToSyslog:

    Invalid Port: 0 for Syslog handler in policy LogToSyslog.
    
  2. ในนโยบาย MessageLcking ที่ล้มเหลว ให้ตรวจสอบว่ามีการระบุหมายเลขพอร์ตที่ถูกต้องภายในองค์ประกอบ <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.
    

ความละเอียด

ตรวจสอบว่าได้กำหนดหมายเลขพอร์ตภายในองค์ประกอบ <Port> ของนโยบาย MessageLogging แล้ว ค่านี้ต้องเป็นจำนวนเต็มที่มากกว่า 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>