คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ลักษณะปัญหา
ผู้ใช้สร้างเซสชันการติดตามใน Edge UI ไม่ได้
ข้อความแสดงข้อผิดพลาด
คุณจะได้รับข้อความแสดงข้อผิดพลาดใน Edge UI ตามที่แสดงด้านล่าง
Error creating trace session for API proxy <api proxy name>, revision <revision number>, environment <environment name>.
Failed to create DebugSession <session number>
ภาพหน้าจอของตัวอย่างข้อความแสดงข้อผิดพลาดที่พบใน Edge UI มีดังนี้
สาเหตุที่เป็นไปได้
สาเหตุบางประการที่เป็นไปได้สำหรับข้อผิดพลาดนี้มีดังนี้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
ปัญหาการเชื่อมต่อเครือข่าย | การสื่อสารระหว่างเซิร์ฟเวอร์การจัดการกับเครื่องมือประมวลผลข้อความล้มเหลวเนื่องจากปัญหาการเชื่อมต่อเครือข่ายหรือกฎไฟร์วอลล์ | ผู้ใช้ Edge Private Cloud |
สภาพแวดล้อมไม่โหลดบนตัวประมวลผลข้อความ | สภาพแวดล้อมเฉพาะ (ที่คุณพยายามเปิดใช้งานการติดตาม) ไม่ได้โหลดใน Message Processor (s) เนื่องจากเกิดข้อผิดพลาด | |
รายการตัวประมวลผลข้อความที่ไม่มีอัปเดต | เซิร์ฟเวอร์การจัดการกำลังอ้างอิงไปยังตัวประมวลผลข้อความที่ไม่มีอยู่ (ไม่มีอัปเดต) | |
เข้าถึงเครื่องมือประมวลผลข้อความไม่ได้ | ตัวประมวลผลข้อความหยุดทำงานหรือเข้าถึงไม่ได้ | |
ปัญหาการใช้ทรัพยากรสูง | ตัวประมวลผลข้อความมีการใช้งานทรัพยากร (CPU, หน่วยความจำ หรือโหลด) สูง | |
พร็อกซี API ไม่ทำงานในตัวประมวลผลข้อความอย่างน้อย 1 รายการ | พร็อกซี API อาจไม่สามารถใช้งานได้กับตัวประมวลผลข้อความอย่างน้อย 1 รายการเนื่องจากไม่มีการแจ้งเตือนเหตุการณ์ระหว่างการทำให้ใช้งานได้ | |
ปัญหาเกี่ยวกับ Edge UI | Edge UI สร้างเซสชันการติดตามไม่ได้เนื่องจากข้อผิดพลาดบางอย่าง |
ขั้นตอนการวิเคราะห์ทั่วไป
ใช้ Management API นี้
curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
หากพบข้อผิดพลาด โปรดจดบันทึกไว้ ย้ายไปที่ปัญหาการเชื่อมต่อเครือข่าย
หากได้รับการตอบกลับที่สำเร็จ แสดงว่าสามารถสร้างเซสชันการติดตามได้ผ่าน Management API อย่างไรก็ตาม อาจมีปัญหาเกิดขึ้นกับ Edge UI ซึ่งทำให้สร้างเซสชันการติดตามใน UI ไม่ได้ เลื่อนไปที่ปัญหาเกี่ยวกับ Edge UI
สาเหตุ: ปัญหาการเชื่อมต่อเครือข่าย
การวิเคราะห์
ตรวจสอบบันทึกของเซิร์ฟเวอร์การจัดการ
/opt/apigee/var/log/edge-management-server/logs/system.log
และดูว่ามีข้อผิดพลาดระหว่างการสร้างเซสชันการติดตาม/แก้ไขข้อบกพร่องหรือไม่ตัวอย่างข้อผิดพลาดจากบันทึกของเซิร์ฟเวอร์การจัดการ
2018-02-08 09:08:21,310 org:myorg env:uat qtp1073741635-1074 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID cedeabd2-e4d1-40bb-8f18-d6afc8835e5b org.apache.http.conn.HttpHostConnectException: Connect to 10.84.75.92:8082 [/10.84.75.92] failed: Connection refused at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5] ...<snipped> Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_65] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_65] ...<snipped>
ตัวอย่างข้อผิดพลาดข้างต้นแสดงให้เห็นว่าเราได้รับข้อผิดพลาด "การเชื่อมต่อถูกปฏิเสธ" เมื่อเซิร์ฟเวอร์การจัดการพยายามเชื่อมต่อกับผู้ประมวลผลข้อความบนพอร์ต # 8082 ดังนั้น เซิร์ฟเวอร์การจัดการจึงไม่สามารถสร้างเซสชันการติดตามได้
หากคุณไม่เห็นข้อผิดพลาดเกี่ยวกับการเชื่อมต่อเครือข่ายหรือข้อผิดพลาดที่คล้ายกับที่แสดงในตัวอย่างข้างต้น ให้ย้ายไปที่สภาพแวดล้อมไม่โหลดในเครื่องมือประมวลผลข้อความ
หากคุณพบข้อผิดพลาดเกี่ยวกับการเชื่อมต่อเครือข่ายหรือข้อผิดพลาดที่คล้ายกับที่แสดงในตัวอย่างด้านบน ให้ทำตามขั้นตอนด้านล่าง
ทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์การจัดการไปยัง Message Processor บนพอร์ต 8082 โดยทำตามขั้นตอนต่อไปนี้
ถ้ามี telnet ให้ใช้ telnet
telnet <MessageProcessor_IP> 8082
หาก Telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อดังนี้
nc -vz <MessageProcessor_IP> 8082
หากได้รับการตอบกลับว่า "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" ให้ไปยังขั้นตอนถัดไป
เข้าสู่ระบบตัวประมวลผลข้อความแต่ละเครื่องด้วยที่อยู่ IP ที่ตรงกันซึ่งแสดงข้อผิดพลาด แล้วทำตามขั้นตอนต่อไปนี้
ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังอยู่บนพอร์ต 8082 หรือไม่
netstat -an | grep LISTEN | grep 8082
ถ้าตัวประมวลผลข้อความกำลังฟังอยู่ในพอร์ต 8082 ให้ย้ายไปที่ขั้นตอนที่ 7
ถ้า Message Processor ไม่ทำงานบนพอร์ต 8082 ให้รีสตาร์ท Message Processor โดยใช้คำสั่งต่อไปนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
รอจนกว่าตัวประมวลผลข้อความจะเริ่มสมบูรณ์โดยใช้คำสั่งนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
เมื่อตัวประมวลผลข้อความทำงานแล้ว ให้ตรวจสอบอีกครั้งว่าตัวประมวลผลข้อความกำลังฟังอยู่บนพอร์ต 8082 หรือไม่
หากผู้ประมวลผลข้อความกำลังฟังอยู่บนพอร์ต 8082 ให้ไปยังขั้นตอนที่ 7
ตรวจสอบว่าตอนนี้คุณเริ่มเซสชันการติดตามใน UI ได้แล้วหรือไม่ หากไม่พบปัญหาแล้ว ให้ข้ามขั้นตอนด้านล่าง
หากตัวประมวลผลข้อความทำงานอยู่และฟังอยู่บนพอร์ต 8082 แต่คุณยังไม่สามารถเชื่อมต่อจากเซิร์ฟเวอร์อื่นๆ เช่น เซิร์ฟเวอร์การจัดการ อาจเป็นเพราะมีไฟร์วอลล์ที่ต้องบล็อกการเชื่อมต่อภายนอก
ใช้คำสั่งที่เหมาะสมเพื่อตรวจสอบกฎไฟร์วอลล์ ตัวอย่างเช่น คุณสามารถเรียกใช้คำสั่ง iptables เพื่อแสดงรายการกฎไฟร์วอลล์ทั้งหมดที่กำหนดไว้ในระบบของคุณ
iptables -L -n
หากไม่มีการตั้งค่ากฎไฟร์วอลล์สำหรับพอร์ต 8082 ให้ย้ายไปที่ปัญหาการใช้งานทรัพยากรสูง
หากมีการตั้งค่ากฎไฟร์วอลล์บนพอร์ต 8082 ให้ย้ายไปที่ส่วน "การแก้ปัญหา" ด้านล่าง
ความละเอียด
- ทำงานร่วมกับผู้ดูแลระบบเครือข่ายเพื่ออนุญาตให้มีการรับส่งข้อมูลขาเข้า/ขาออกบนพอร์ต 8082 จากเซิร์ฟเวอร์ภายนอก
หากยังคงพบปัญหาอยู่ ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
สาเหตุ: สภาพแวดล้อมไม่โหลดบนตัวประมวลผลข้อความ
การวิเคราะห์
- ตรวจสอบบันทึกเซิร์ฟเวอร์การจัดการ
/opt/apigee/var/log/edge-management-server/logs/system.log
และดูว่ามีข้อผิดพลาดระหว่างการสร้างเซสชันการติดตาม/แก้ไขข้อบกพร่องหรือไม่ คุณอาจเห็นข้อความแสดงข้อผิดพลาด เช่น "ไม่มีการตอบกลับที่ถูกต้องจาก MP" ระหว่างการสร้างเซสชันการติดตาม/การแก้ไขข้อบกพร่องดังที่แสดงด้านล่าง
2018-01-30 08:28:09,721 org:mynonprod env:uat qtp2007599722-712162 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : no valid responses from MP(s), throwing error 2018-01-30 08:28:09,723 org:mynonprod env:uat qtp2007599722-712162 ERROR REST - CustomJAXRSInvoker.performInvocation() : CustomJAXRSInvoker.performInvocation : Method com.apigee.distribution.DebugSessionAPI.createDebugSession threw an exception. 2018-01-30 08:28:09,724 org:mynonprod env:uat qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Error occurred : Failed to create DebugSession 1517297564678 2018-01-30 08:28:09,724 org:mynonprod env:uat qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Returning error response : ErrorResponse{errorCode = distribution.CreateDebugSessionFailed, errorMessage = Failed to create DebugSession 1517297564678}
ข้อผิดพลาดนี้แสดงว่าผู้ประมวลผลข้อความไม่ตอบกลับไปยังเซิร์ฟเวอร์การจัดการด้วยเหตุผลบางประการ
หากไม่เห็นข้อผิดพลาดที่คล้ายกับในตัวอย่างข้างต้น ให้ย้ายไปที่รายการผู้ประมวลผลข้อความที่ไม่อัปเดต
หากคุณพบข้อผิดพลาดที่คล้ายกับที่แสดงในตัวอย่างข้างต้น ให้ทำตามขั้นตอนต่อไปนี้
สาเหตุหนึ่งที่เป็นไปได้มากที่สุดสำหรับข้อผิดพลาดนี้คือ สภาพแวดล้อมที่คุณพยายามสร้างเซสชันการติดตามไม่ได้โหลดบนตัวประมวลผลข้อความ
ลงชื่อเข้าใช้ Message Processor แต่ละเครื่อง และตรวจสอบว่าสภาพแวดล้อมเฉพาะที่คุณพยายามสร้างเซสชันการติดตามมีการโหลดตัวประมวลผลข้อความโดยใช้คำสั่งด้านล่างหรือไม่
curl -s http://localhost:8082/v1/runtime/organizations/<org-name>/environments
ตัวอย่างเอาต์พุต:
คุณจะเห็นรายการสภาพแวดล้อมที่เป็นขององค์กรหนึ่งๆ ซึ่งโหลดในตัวประมวลผลข้อความในเอาต์พุตของคำสั่งข้างต้น ตัวอย่างเช่น ถ้าสภาพแวดล้อม preprod และ test โหลดในโปรแกรมประมวลผลข้อความ คุณจะเห็นผลลัพธ์ดังนี้
[ "preprod", "test" ]
หากสภาพแวดล้อมเฉพาะ เช่น "dev" ที่คุณพยายามสร้างเซสชันการติดตามปรากฏในคำสั่งข้างต้น ให้ย้ายไปที่รายการผู้ประมวลผลข้อความที่ไม่อัปเดต
หากสภาพแวดล้อมเฉพาะ เช่น "dev" ไม่ปรากฏเป็นส่วนหนึ่งของคำสั่งข้างต้น ให้ตรวจสอบ
/opt/apigee/var/log/edge-message-processor/logs/system.log
และ/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log
ในตัวประมวลผลข้อความเพื่อหาข้อผิดพลาดในระหว่างการโหลดสภาพแวดล้อมเกิดข้อผิดพลาดหลายอย่างที่อาจทำให้โหลดสภาพแวดล้อมในเครื่องประมวลผลข้อความไม่สำเร็จ การแก้ปัญหาขึ้นอยู่กับข้อผิดพลาดที่เกิดขึ้น
ความละเอียด
สภาพแวดล้อมอาจไม่โหลดบนตัวประมวลผลข้อความเนื่องจากสาเหตุหลายประการ ส่วนนี้จะแสดงสาเหตุที่เป็นไปได้ 2 ประการที่ทำให้เกิดปัญหานี้และอธิบายวิธีแก้ไขปัญหา
ถ้าคุณพบข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้ในบันทึกเครื่องมือประมวลผลข้อความ แสดงว่าข้อผิดพลาดนั้นเกิดจากปัญหาที่พบกับใบรับรอง/คีย์ที่เพิ่มลงในคีย์สโตร์/ความน่าเชื่อถือที่ระบุในสภาพแวดล้อมที่ระบุ
ข้อผิดพลาด #1: java.security.KeyStoreException: เขียนทับใบรับรองของตนเองไม่ได้
2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] … Caused by: java.security.KeyStoreException: Cannot overwrite own certificate at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] ... 20 common frames omitted 2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
ข้อผิดพลาด #2: java.security.KeyStoreException: เขียนทับคีย์ลับไม่ได้
2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] ... Caused by: java.security.KeyStoreException: Cannot overwrite secret key at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] ... 20 common frames omitted 2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
ดูรายละเอียดของ keystore/truststore ที่ระบุไว้ในข้อความแสดงข้อผิดพลาดซึ่งแสดงในขั้นตอนก่อนหน้าโดยใช้การเรียก API การจัดการต่อไปนี้
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
ตัวอย่างเอาต์พุต
{ "certs": [ "mycert", "mycert-new" ], "keys": [ "mycert" ], "name": "myTruststore" }
เอาต์พุตตัวอย่างแสดงให้เห็นว่ามีใบรับรอง 2 รายการและคีย์ใน myTruststore ของ Truststore โดยทั่วไป Truststore จะไม่มีคีย์ หากมี ก็ควรจะมีใบรับรองรายการเดียวและคีย์เดียว
ดูรายละเอียดเกี่ยวกับใบรับรองทั้ง 2 ใบโดยใช้ API ต่อไปนี้
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
ตรวจสอบวันที่หมดอายุของใบรับรองแต่ละใบและระบุใบรับรองที่หมดอายุ/เก่ากว่า
ลบใบรับรองที่หมดอายุหรือไม่พึงประสงค์ออกจาก Truststore "myTruststore"
หากยังคงพบปัญหาอยู่หรือพบข้อผิดพลาดอื่นใดนอกเหนือจากที่ระบุไว้ในขั้นตอนที่ 1 ข้างต้น ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
สาเหตุ: เข้าถึงรายการผู้ประมวลผลข้อความไม่มีอัปเดตหรือตัวประมวลผลข้อความไม่ได้
การวินิจฉัย
- หาก Edge UI ใช้เวลานานและสร้างเซสชันการติดตามไม่ได้ อาจเกิดจากสาเหตุต่อไปนี้
- เซิร์ฟเวอร์การจัดการอาจหมายถึงตัวประมวลผลข้อความที่ไม่มีอยู่ (ไม่มีอัปเดต)
- ผู้ประมวลผลข้อความหยุดทำงานหรือเข้าถึงไม่ได้
- ตัวประมวลผลข้อความมีการใช้งานหน่วยความจำ/CPU สูง
- ตรวจสอบบันทึกเซิร์ฟเวอร์การจัดการ
/opt/apigee/var/log/edge-management-server/logs/system.log
และดูว่ามีข้อผิดพลาดระหว่างการสร้างเซสชันการติดตาม/แก้ไขข้อบกพร่องหรือไม่ คุณอาจเห็นข้อความแสดงข้อผิดพลาด เช่น "เซิร์ฟเวอร์ <UUID> ใช้งานไม่ได้หรือเข้าถึงไม่ได้" ระหว่างสร้างเซสชันการติดตาม/แก้ไขข้อบกพร่อง ดังที่แสดงด้านล่าง
2017-12-27 07:42:38,975 org:cocacola env:prod qtp2007599722-222063 INFO DISTRIBUTION - DebugSessionAPI.createDebugSession() : server 458b5910-2646-441c-a6e2-428b6d84e021 is either not up or reachable, skipping the server
ซึ่งอาจเกิดจากข้อผิดพลาด "การเชื่อมต่อหมดเวลา" อีกครั้งหลังจากผ่านไปสักครู่ ดังที่แสดงด้านล่าง
2017-12-27 07:44:46.000 UTC org:cocacola env:prod qtp2007599722-222063 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID {}, skipping it458b5910-2646-441c-a6e2-428b6d84e021 org.apache.http.conn.HttpHostConnectException: Connect to 192.168.101.7:8080 [/192.168.101.7] failed: Connection timed out (Connection timed out) at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219) ~[httpclient-4.3.5.jar:4.3.5] …<snipped> Caused by: java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_144] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_144] …<snipped>
ข้อผิดพลาดทั้งสองนี้อาจเกิดจากตัวประมวลผลข้อความที่เฉพาะเจาะจง ดังนี้
- ไม่มีอัปเดต (ไม่มีแล้ว)
- ใช้งานไม่ได้/เข้าถึงไม่ได้ด้วยเหตุผลบางอย่าง
โปรดทำตามวิธีแก้ปัญหาที่เหมาะสมตามสถานการณ์ที่พบ
ความละเอียด
สถานการณ์ที่ 1 : ตัวประมวลผลข้อความไม่มีอัปเดต (ไม่มีอยู่)
รับรายการเครื่องมือประมวลผลข้อความที่ใช้ API การจัดการด้านล่าง
curl -u <sysadmin> "http://<management-server-host>:8080/v1/servers?pod=<podName>®ions=<regionName>"
จดบันทึกที่อยู่ IP หรือชื่อโฮสต์ที่ตรงกับ UUID ของตัวประมวลผลข้อความที่กล่าวถึงในข้อความแสดงข้อผิดพลาดในบันทึกของเซิร์ฟเวอร์การจัดการ (ขั้นตอนที่ 3 ในการวิเคราะห์ด้านบน) ตรวจสอบว่าโปรแกรมประมวลผลข้อความถูกต้องโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
- แผนภาพการตั้งค่าโทโพโลยีล่าสุดของ Private Cloud
- ที่อยู่ IP ของ Edge Server ล่าสุด - ตารางการแมปชื่อโฮสต์
หากคุณพบว่าเป็นผู้ประมวลผลข้อความที่ถูกต้อง ให้ย้ายไปที่สถานการณ์ที่ 2 : เข้าถึงผู้ประมวลผลข้อความไม่ได้
ลบตัวประมวลผลข้อความเก่า (ไม่มีอยู่) โดยใช้ API การจัดการต่อไปนี้
ยกเลิกการลงทะเบียนเครื่องมือประมวลผลข้อความจากสภาพแวดล้อมขององค์กร
curl -X POST http://<management-server-host>:8080/v1/o/<orgName>/e/<envName>/servers -d "uuid={uuid}®ion=<regionName>&pod=<podName}&action=remove"
ยกเลิกการลงทะเบียนประเภทของเซิร์ฟเวอร์:
curl http://<management-server-host>:8080/v1/servers -X POST -d "type={message-processor}®ion=<regionName>&pod=<podName>&uuid=<uuid>&action=remove"
ลบเซิร์ฟเวอร์โดยทำดังนี้
curl http://<management-ip>:8080/v1/servers/<uuid> -X DELETE
ทำซ้ำขั้นตอนที่ 3 หากพบปัญหาเดียวกันในสภาพแวดล้อมอื่นๆ ในองค์กร
สถานการณ์ที่ 2: เข้าถึงผู้ประมวลผลข้อความไม่ได้
- เข้าสู่ระบบตัวประมวลผลข้อความแต่ละรายการโดยการระบุที่อยู่ IP/ชื่อโฮสต์ตาม UUID ที่สังเกตจากข้อความแสดงข้อผิดพลาดในบันทึกของเซิร์ฟเวอร์การจัดการ
รีสตาร์ทโปรแกรมประมวลผลข้อความ
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ตรวจสอบอีกครั้งว่าคุณสามารถสร้างเซสชันการติดตามได้ไหม หากยังคงพบปัญหาอยู่ ให้ไปที่ต้องรวบรวมข้อมูลการวินิจฉัย.
สาเหตุ: ปัญหาการใช้งานทรัพยากรสูง
การวินิจฉัย
เข้าสู่ระบบตัวประมวลผลข้อความแต่ละโปรแกรม และตรวจสอบว่ามีการใช้งานทรัพยากรในระดับสูงหรือไม่ เช่น CPU, หน่วยความจำ หรือโหลด คุณสามารถใช้คำสั่ง
top
ในระบบปฏิบัติการ Unix เพื่อรับข้อมูลการใช้งานทรัพยากรของการประมวลผลข้อความ ดังนี้top
ถ้าผู้ประมวลผลข้อความไม่ได้ใช้งานทรัพยากรสูง ให้ข้ามไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
ถ้าผู้ประมวลผลข้อความมีการใช้งาน CPU หรือหน่วยความจำสูง นั่นอาจทำให้ผู้ประมวลผลข้อความไม่ตอบกลับไปยังเซิร์ฟเวอร์การจัดการได้ทันเวลา ซึ่งจะป้องกันไม่ให้คุณสร้างเซสชันการติดตามได้ในที่สุด
ถ้าตัวประมวลผลข้อความมีการใช้งาน CPU สูง ให้สร้างดัมพ์ชุดข้อความ 3 รายการทุก 30 วินาทีโดยใช้คำสั่งต่อไปนี้
sudo <JAVA_HOME>/bin/jstack -l <pid> > <filename>
หากผู้ประมวลผลข้อความมีการใช้งานหน่วยความจำสูง ให้สร้างฮีพดัมพ์โดยใช้คำสั่งต่อไปนี้
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
ย้ายไปที่ความละเอียด
ความละเอียด
รีสตาร์ทตัวประมวลผลข้อความโดยใช้คำสั่งด้านล่าง วิธีนี้จะช่วยลดการใช้ CPU และหน่วยความจำ:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ตรวจสอบการเรียก API และยืนยันว่าปัญหายังคงอยู่
โปรดติดต่อฝ่ายสนับสนุนของ Apigee Edge และส่งดัมพ์ของเทรด ฮีปดัมพ์ และบันทึกของผู้ประมวลผลข้อความ (
/opt/apigee/var/log/edge-message-processor/logs/system.log)
เพื่อช่วยตรวจสอบสาเหตุของการใช้งาน CPU/หน่วยความจำสูง
สาเหตุ: พร็อกซี API ไม่ทำงานในระบบประมวลผลข้อความอย่างน้อย 1 รายการ
ในบางกรณี พร็อกซี API อาจไม่สามารถใช้งานได้กับตัวประมวลผลข้อความอย่างน้อย 1 รายการ กรณีนี้มักเกิดขึ้นเนื่องจากไม่มีการแจ้งเตือนเหตุการณ์จากเซิร์ฟเวอร์การจัดการไปยังผู้ประมวลผลข้อความในระหว่างการติดตั้งใช้งานพร็อกซี API ที่ระบุ และในกรณีนี้ คุณจะสร้างเซสชันการติดตามใน Edge UI ไม่ได้เช่นกัน
การวินิจฉัย
เข้าสู่ระบบตัวประมวลผลข้อความแต่ละรายการ และตรวจสอบว่ามีการติดตั้งใช้งานพร็อกซี API ในเวอร์ชันที่เจาะจงโดยใช้คำสั่งต่อไปนี้หรือไม่
curl -v localhost:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
ตัวอย่างเอาต์พุต:
คุณจะเห็นรายการการแก้ไขเป็นเอาต์พุตของคำสั่งข้างต้น ตัวอย่างเช่น หากมีการทำให้เวอร์ชัน 12 ใช้งานได้แล้ว คุณจะเห็นผลลัพธ์ดังนี้
[ "12" ]
ถ้าการแก้ไขเฉพาะสำหรับพร็อกซี API ไม่ปรากฏเป็นเอาต์พุตของคำสั่งที่กล่าวถึงในขั้นตอนที่ 1 ข้างต้น ให้รีสตาร์ทตัวประมวลผลข้อความที่ต้องการตามที่อธิบายไว้ในการแก้ปัญหาด้านล่าง
ทำซ้ำขั้นตอนที่ 1-2 สำหรับ Message Processor ทั้งหมด
หากมีการใช้การแก้ไขเฉพาะสำหรับพร็อกซี API กับตัวประมวลผลข้อความทั้งหมด ก็ไม่ใช่สาเหตุของปัญหานี้ ย้ายไปที่ต้องรวบรวมข้อมูลการวินิจฉัย
ความละเอียด
รีสตาร์ทตัวประมวลผลข้อความเฉพาะที่ไม่ได้ติดตั้งใช้งานการแก้ไขที่เจาะจงของพร็อกซี API
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
สาเหตุ: ปัญหากับ Edge UI
การวินิจฉัย
- ตรวจสอบบันทึก Edge UI
/opt/apigee/var/log/edge-ui/application.log
และ/opt/apigee/var/log/edge-ui/edge-ui.log
และดูว่ามีข้อผิดพลาดใดๆ หรือไม่ - โปรดติดต่อทีมสนับสนุนของ Apigee Edge และแชร์ไฟล์เหล่านี้เพื่อตรวจสอบเพิ่มเติม
ต้องรวบรวมข้อมูลการวินิจฉัย
หากปัญหายังคงอยู่แม้ว่าจะทำตามคำแนะนำข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจฉัยต่อไปนี้ โปรดติดต่อทีมสนับสนุนของ Apigee Edge โดยตรง
เอาต์พุตของคำสั่ง:
curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
บันทึกของเซิร์ฟเวอร์การจัดการ
/opt/apigee/var/log/edge-management-server/logs/system.log.
บันทึกตัวประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log.
เอาต์พุตของคำสั่ง telnet/nc จากเซิร์ฟเวอร์การจัดการไปยังผู้ประมวลผลข้อความ:
telnet <MessageProcessor_IP> 8082 nc -vz <MessageProcessor_IP> 8082
เอาต์พุตของคำสั่ง netstat ด้านล่างในตัวประมวลผลข้อความ:
netstat -an > netstat.txt
หากพบว่ามีปัญหาเกี่ยวกับ Edge UI ให้ส่งบันทึก UI ของ Edge
/opt/apigee/var/log/edge-ui/application.log
และ/opt/apigee/var/log/edge-ui/edge-ui.log.
รายละเอียดว่ามีการลองใช้ส่วนต่างๆ ใดใน Playbook นี้และข้อมูลเชิงลึกอื่นๆ ที่จะช่วยให้เราจัดการกับปัญหานี้ได้อย่างรวดเร็ว