คําขอ API ที่ไม่ได้บันทึกใน Edge UI

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

ลักษณะปัญหา

รูปภาพต่อไปนี้แสดงคำขอ API ไม่ได้รับการบันทึกไว้ใน Edge UI เมื่อเริ่มเซสชันการติดตาม

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

ระบบจะไม่แสดงข้อความแสดงข้อผิดพลาดใน Edge UI เมื่อปัญหานี้เกิดขึ้น

สาเหตุที่เป็นไปได้

ตารางต่อไปนี้แสดงสาเหตุที่เป็นไปได้ซึ่งทำให้บันทึกคำขอ API ใน Edge UI Trace ไม่สำเร็จ

สาเหตุ คำอธิบาย วิธีการแก้ปัญหาสำหรับ
คำขอไม่ได้ประมวลผลโดยเครื่องมือประมวลผลข้อความ คำขอ API ต้องประมวลผลโดยเครื่องมือประมวลผลข้อความของคอมโพเนนต์ Edge เพื่อบันทึกการติดตาม หากคำขอ API ส่ง Apigee Edge ไม่สำเร็จ ระบบจะดำเนินการจากจุดแรกเข้าไปยัง Edge ไม่สำเร็จ (เช่น เราเตอร์) หรือล้มเหลวก่อนที่จะประมวลผลโดยตัวประมวลผลข้อความ การติดตามจะไม่สามารถบันทึกได้ ผู้ใช้ Edge สาธารณะและ Private Cloud
ไม่พบพร็อกซี API ในแผนผังการจัดประเภท ตัวประมวลผลข้อความ Apigee ใช้คำจำกัดความของกฎการกำหนดเส้นทางที่เรียกว่า Classification Tree สำหรับการส่งคำขอตามชื่อโฮสต์ เส้นทางพื้นฐาน การแก้ไข และสภาพแวดล้อมของคำขอที่เข้ามาใหม่ หากพร็อกซี API ที่เกี่ยวข้องถูกนำออกจากโครงสร้างการแยกประเภทด้วยเหตุผลบางอย่าง ธุรกรรมการติดตามอาจไม่แสดงข้อมูล ผู้ใช้ Edge Private Cloud

สาเหตุ: คำขอที่เครื่องมือประมวลผลข้อความไม่ได้ประมวลผล

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

หากต้องการบันทึกคำขอ API ในเซสชันการติดตาม ผู้ประมวลผลข้อความของคอมโพเนนต์ Edge จะต้องประมวลผลคำขอ API ดังกล่าว มีสาเหตุหลายประการที่อาจทำให้คำขอ API ไม่ถูกบันทึกในธุรกรรม Trace

ตัวอย่างเช่น หากคำขอ 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

สถานการณ์ที่ 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

ทำตามขั้นตอนด้านล่างเพื่อพิจารณาว่าปัญหาเกิดขึ้นหรือไม่

  1. ลงชื่อเข้าใช้ Message Processor แต่ละตัวและตรวจสอบว่ามีการปรับใช้การแก้ไขที่เฉพาะเจาะจงของ API ที่ขอในสภาพแวดล้อมที่เกี่ยวข้องของ Message Processor โดยใช้คำสั่งต่อไปนี้หรือไม่

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    ตัวอย่างเอาต์พุต:

    คำสั่งด้านบนจะแสดงรายการการแก้ไขที่ทำให้ใช้งานได้ ตัวอย่างเช่น ถ้ามีการทำให้การแก้ไข 12 ใช้งานได้ คุณจะเห็นผลลัพธ์ต่อไปนี้

    [ "12" ]
    

    คุณอาจพบว่ามีการติดตั้งใช้งานการแก้ไขดังกล่าว เว้นแต่จะพบข้อผิดพลาด HTTP 404 เป็นพักๆ

  2. อ่าน Classification Tree และตรวจสอบการมีอยู่ของชื่อพร็อกซี API โดยใช้คำสั่งต่อไปนี้

    curl -i http://localhost:8082/v1/classification/tree | grep apiName
    
  3. ทำขั้นตอนที่ 1 และ 2 ซ้ำสำหรับโปรแกรมประมวลผลข้อความแต่ละตัว หากชื่อพร็อกซี API ที่ระบุหายไปจากแผนผังการแยกประเภทของโปรแกรมประมวลผลข้อความใดๆ ให้ทำตามวิธีแก้ปัญหาตามที่ระบุไว้ด้านล่าง

ความละเอียด

โปรดทำตามขั้นตอนด้านล่างเพื่อแก้ไขปัญหานี้ อย่าลืมใช้มาตรการป้องกันต่างๆ ที่จำเป็นเพื่อหลีกเลี่ยงการหยุดทำงานของการใช้งานจริงที่อาจเกิดขึ้นจากการรีสตาร์ท Message Processor ขณะที่มีคำขอโหลดสูง

  1. เข้าสู่ระบบโฮสต์ของ Message Processor แต่ละโฮสต์ที่ไม่มีพร็อกซี API ที่ระบุใน Classification Tree แล้วใช้คำสั่งด้านล่างเพื่อรีสตาร์ท Message Processor

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  2. เมื่อรีสตาร์ทแล้ว ให้ใช้คำสั่งด้านล่างเพื่อรอจนกว่าจะเริ่มทำงาน

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
    
  3. เมื่อตัวประมวลผลข้อความพร้อมแล้ว ให้ตรวจสอบความพร้อมใช้งานของพร็อกซี API โดยใช้คำสั่งต่อไปนี้

    curl -v http://localhost:8082/v1/runtime/organizations/orgName/environments/envName/apis/apiName/revisions
    

    ตัวอย่างเอาต์พุต:

    คำสั่งด้านบนจะแสดงรายการการแก้ไขที่ทำให้ใช้งานได้ ตัวอย่างเช่น ถ้ามีการทำให้การแก้ไข 12 ใช้งานได้ คุณจะเห็นผลลัพธ์ต่อไปนี้

    [ "12" ]
    

    คุณอาจพบว่ามีการติดตั้งใช้งานการแก้ไขดังกล่าว เว้นแต่จะพบข้อผิดพลาด HTTP 404 เป็นพักๆ

  4. อ่าน Classification Tree และตรวจสอบการมีอยู่ของชื่อพร็อกซี 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
ข้อมูลผังการแยกประเภทในข้อมูล Message Processor ทั้งหมด
curl -i http://localhost:8082/v1/classification/tree