คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ลักษณะปัญหา
รูปภาพต่อไปนี้แสดงคำขอ API ที่ไม่ได้บันทึกไว้ใน Edge UI เมื่อเริ่มเซสชันการติดตาม
ข้อความแสดงข้อผิดพลาด
เมื่อเกิดปัญหานี้ขึ้น ข้อความแสดงข้อผิดพลาดใน Edge UI จะไม่ปรากฏขึ้น
สาเหตุที่เป็นไปได้
ตารางต่อไปนี้แสดงสาเหตุที่เป็นไปได้ที่ทำให้บันทึกคำขอ API ในการติดตาม UI ของ Edge ไม่สำเร็จ
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
---|---|---|
คำขอที่ไม่ได้รับการประมวลผลโดยผู้ประมวลผลข้อความ | ตัวประมวลผลข้อความของ Edge ต้องประมวลผลคําขอ API ก่อนจึงจะบันทึกการติดตามได้ หากคําขอ API เข้าถึง Apigee Edge ไม่สําเร็จ จะไม่สําเร็จที่จุดแรกเข้าของ Edge (เช่น Router) หรือล้มเหลวก่อนที่จะประมวลผลโดย Message Processor จะทำให้ไม่สามารถบันทึกการติดตามได้ | ผู้ใช้ Edge Public และ Private Cloud |
ไม่พบพร็อกซี API ในแผนภูมิการจำแนกประเภท | ตัวประมวลผลข้อความของ Apigee ใช้คำจำกัดความของกฎการกำหนดเส้นทางที่เรียกว่า Classification Tree เพื่อส่งคำขอตามชื่อโฮสต์ เส้นทางพื้นฐาน การแก้ไข และสภาพแวดล้อมของคำขอที่เข้ามาใหม่ หากมีการนำพร็อกซี API ที่เกี่ยวข้องออกจากแผนผังการแยกประเภทด้วยเหตุผลบางอย่าง ระบบอาจไม่แสดงธุรกรรมการติดตาม | ผู้ใช้ Edge Private Cloud |
สาเหตุ: คำขอไม่ได้รับการดำเนินการโดยผู้ประมวลผลข้อความ
การวิเคราะห์
หากต้องการบันทึกคำขอ API ในเซสชันการติดตาม ต้องประมวลผลคำขอ API โดยผู้ประมวลผลข้อความที่เป็นคอมโพเนนต์ของ Edge มีสาเหตุหลายประการที่ทำให้ระบบไม่สามารถบันทึกคำขอ API ในธุรกรรมการติดตามได้
เช่น หากคำขอ API เข้าถึง Apigee Edge ไม่สำเร็จในจุดแรกเข้าของ Edge (เช่น เราเตอร์) หรือล้มเหลวก่อนที่จะได้รับการประมวลผลโดยผู้ประมวลผลข้อความ จะทำให้ไม่สามารถบันทึกการติดตามได้ สถานการณ์แต่ละสถานการณ์เหล่านี้อธิบายไว้โดยละเอียดที่ด้านล่างนี้
สถานการณ์ที่ 1: คำขอเข้าถึง Apigee Edge ไม่สำเร็จ
สาเหตุ
ในสถานการณ์นี้ ข้อผิดพลาดอาจเกิดจากการแปลงชื่อ DNS หรือปัญหาการเชื่อมต่อเครือข่าย หากเป็นเช่นนั้น คุณอาจพบข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้คำสั่งนี้
curl https://hostName:port/apiProxyBasePath/requestPath
curl: (6) Could not resolve host: hostName
ความละเอียด
คุณสามารถยืนยันการกำหนดค่า DNS ด้วยคำสั่งต่อไปนี้
dig hostName
คุณสามารถยืนยันการเชื่อมต่อเครือข่ายด้วยคำสั่งต่อไปนี้
telnet hostName port
สถานการณ์ที่ 2: คำขอล้มเหลวที่เราเตอร์ Apigee Edge
สาเหตุ
ในสถานการณ์นี้ ข้อผิดพลาดอาจเกิดจากแฮนด์เชค TLS/SSL ล้มเหลว หากเป็นเช่นนั้น คุณอาจพบข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้
Received fatal alert: handshake_failure
HTTP/1.1 400 Bad Request
นอกจากนี้คุณอาจเห็นข้อผิดพลาดเกี่ยวกับใบรับรอง SSL
ความละเอียด
โปรดอ่าน Playbook ต่อไปนี้เพื่อแก้ปัญหา
สถานการณ์ที่ 3: ผู้ประมวลผลข้อความไม่สามารถดำเนินการตามคำขอได้
สาเหตุ
ในสถานการณ์นี้ ผู้ประมวลผลข้อความ Apigee จะไม่พบพร็อกซี API สำหรับโฮสต์และเส้นทางเสมือนที่ระบุ ด้วยเหตุนี้ คุณจึงอาจเห็นข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้
HTTP/1.1 404 Not Found
{ "fault":{ "faultstring":"Unable to identify proxy for host: default and url: \/apiProxyBasePath/requestPath", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
ความละเอียด
ดู Playbook นี้เพื่อแก้ปัญหา: 404 ระบุพร็อกซีสําหรับโฮสต์ไม่ได้
สาเหตุ: ไม่พบพร็อกซี API ในรายงานการแยกประเภท
การวิเคราะห์
หากผู้ประมวลผลข้อความไม่พบพร็อกซี API ในแผนผังการแยกประเภท คำขอ API ที่ส่งไปยังพร็อกซีดังกล่าวจะไม่แสดงในเซสชันการติดตามใน Edge UI
โปรดทำตามขั้นตอนต่อไปนี้เพื่อดูว่าเป็นกรณีนี้หรือไม่
ลงชื่อเข้าใช้ Message Processor แต่ละเครื่อง แล้วตรวจสอบว่ามีการใช้งานการแก้ไขเฉพาะของ API ที่ร้องขอในสภาพแวดล้อมที่เกี่ยวข้องของ Message Processor โดยใช้คำสั่งต่อไปนี้หรือไม่
curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
ตัวอย่างเอาต์พุต:
คำสั่งข้างต้นจะแสดงรายการการแก้ไขที่ทำให้ใช้งานได้แล้ว ตัวอย่างเช่น ถ้ามีการทำให้เวอร์ชัน 12 ใช้งานได้ คุณจะเห็นเอาต์พุตต่อไปนี้
[ "12" ]
ถ้าคุณพบข้อผิดพลาด HTTP 404 ที่เกิดขึ้นเป็นระยะๆ คุณอาจเห็นว่ามีการทำให้การแก้ไขที่ระบุใช้งานได้แล้ว
อ่านแผนผังการจัดประเภทและตรวจสอบว่ามีชื่อพร็อกซี API หรือไม่โดยใช้คำสั่งต่อไปนี้
curl -i http://localhost:8082/v1/classification/tree | grep apiName
ทำขั้นตอนที่ 1 และ 2 ซ้ำสำหรับผู้ประมวลผลข้อความแต่ละราย หากชื่อพร็อกซี API ที่ระบุหายไปจากโครงสร้างการจัดประเภทของตัวประมวลผลข้อความ ให้ทำตามวิธีแก้ด้านล่าง
ความละเอียด
โปรดทำตามขั้นตอนด้านล่างเพื่อแก้ไขปัญหานี้ โปรดใช้ความระมัดระวังที่จำเป็นเพื่อหลีกเลี่ยงการหยุดทำงานของเวอร์ชันที่ใช้งานจริงที่อาจเกิดขึ้นจากการรีสตาร์ทตัวประมวลผลข้อความในขณะที่มีการโหลดคำขอจำนวนมาก
เข้าสู่ระบบโฮสต์ตัวประมวลผลข้อความแต่ละโฮสต์ที่ไม่มีพร็อกซี API เฉพาะใน Classification Tree และใช้คำสั่งด้านล่างเพื่อรีสตาร์ทตัวประมวลผลข้อความ
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
เมื่อรีสตาร์ทแล้ว ให้ใช้คำสั่งด้านล่างเพื่อรอจนกว่าจะพร้อมใช้งาน
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
เมื่อตัวประมวลผลข้อความพร้อมใช้งาน ให้ยืนยันความพร้อมใช้งานของพร็อกซี API โดยใช้คำสั่งต่อไปนี้
curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
ตัวอย่างเอาต์พุต:
คำสั่งข้างต้นจะแสดงรายการการแก้ไขที่ทำให้ใช้งานได้แล้ว ตัวอย่างเช่น ถ้ามีการทำให้เวอร์ชัน 12 ใช้งานได้ คุณจะเห็นเอาต์พุตต่อไปนี้
[ "12" ]
ถ้าคุณพบข้อผิดพลาด HTTP 404 ที่เกิดขึ้นเป็นระยะๆ คุณอาจเห็นว่ามีการทำให้การแก้ไขที่ระบุใช้งานได้แล้ว
อ่านแผนผังการจัดประเภทและตรวจสอบว่ามีชื่อพร็อกซี API อยู่โดยใช้คำสั่งต่อไปนี้
curl -i http://localhost:8082/v1/classification/tree | grep apiName
หากยังคงพบปัญหาอยู่ ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
ต้องรวบรวมข้อมูลการวินิจฉัย
หากปัญหายังคงอยู่หลังจากทำตามวิธีการข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจฉัยต่อไปนี้แล้วแชร์กับทีมสนับสนุนของ Apigee Edge
ประเภทข้อมูลการวินิจฉัย | คำสั่ง |
---|---|
เอาต์พุตของคำสั่งเซสชันการติดตาม | curl -v management-server-host:8080/v1/runtime/organizations/orgName/environments/envName/apis/apiProxyName/revisions/revisionNumber/debugsessions -u user |
บันทึกของเซิร์ฟเวอร์การจัดการ | /opt/apigee/var/log/edge-management-server/logs/system.log |
บันทึกเครื่องมือประมวลผลข้อความ | /opt/apigee/var/log/edge-message-processor/logs/system.log |
เอาต์พุตของคำสั่ง telnet /netcat จากเซิร์ฟเวอร์การจัดการไปยังผู้ประมวลผลข้อความ |
telnet MessageProcessor_IP 8082 nc -vz MessageProcessor_IP 8082 |
เอาต์พุตของคำสั่ง netstat ในตัวประมวลผลข้อความ | netstat -an > netstat.txt |
การแก้ไขรายการเอาต์พุตที่ทำให้ใช้งานได้สำหรับพร็อกซี API ที่ระบุในตัวประมวลผลข้อความทั้งหมด | curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions |
ผลลัพธ์แผนผังการจัดประเภทในเครื่องมือประมวลผลข้อความทั้งหมด | curl -i http://localhost:8082/v1/classification/tree |