Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Dấu hiệu
Ứng dụng khách nhận được mã trạng thái HTTP là 404 cùng với thông báo Not Found và thông báo lỗi Unable to identify proxy for host: VIRTUAL_HOST and url: PATH dưới dạng phản hồi cho các lệnh gọi API.
Lỗi này có nghĩa là Edge không tìm thấy proxy API cho máy chủ ảo và đường dẫn đã chỉ định.
Thông báo Lỗi
Bạn sẽ nhận được mã trạng thái HTTP sau:
HTTP/1.1 404 Not Found
Bạn cũng sẽ thấy một thông báo lỗi tương tự như thông báo dưới đây:
{
"fault":{
"faultstring":"Unable to identify proxy for host: default and url: \/oauth2\/token",
"detail":{
"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"
}
}
}
Thông báo lỗi ở trên cho biết Edge không tìm thấy proxy API cho máy chủ ảo default và đường dẫn /oauth2/token.
Nguyên nhân có thể dẫn đến vấn đề này
Sau đây là một số nguyên nhân có thể gây ra lỗi này:
| Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố áp dụng cho |
|---|---|---|
| API proxy not associated with the specific virtual host | Proxy API cụ thể không được định cấu hình để chấp nhận các yêu cầu trên máy chủ ảo được chỉ định trong thông báo lỗi. | Người dùng Edge Public Cloud và Private Cloud |
| Máy chủ ảo bị xoá trong bản sửa đổi mới triển khai của proxy API | Việc xoá máy chủ ảo khỏi bản sửa đổi mới triển khai trong khi máy khách vẫn đang sử dụng máy chủ ảo cụ thể có thể gây ra vấn đề này. | Người dùng Edge Public Cloud và Private Cloud |
| Đường dẫn không được liên kết với bất kỳ proxy API nào | Proxy API cụ thể không được định cấu hình để chấp nhận các yêu cầu trên đường dẫn được chỉ định trong thông báo lỗi. | Người dùng Edge Public Cloud và Private Cloud |
| Chưa triển khai proxy API trong một môi trường | Proxy API cụ thể không được triển khai trong môi trường cụ thể mà bạn đang cố gắng đưa ra yêu cầu API. | Người dùng Edge Public Cloud và Private Cloud |
| Môi trường không được tải trên Trình xử lý tin nhắn | Môi trường cụ thể (nơi bạn đang cố gắng thực hiện các yêu cầu API) chưa được tải trên Bộ xử lý thông báo do xảy ra lỗi. | Người dùng Edge Private Cloud |
| Chưa triển khai proxy API trên một hoặc nhiều Trình xử lý thông báo | Có thể proxy API không được triển khai trên một hoặc nhiều Trình xử lý thông báo do thiếu thông báo sự kiện trong quá trình triển khai. | Người dùng Edge Private Cloud |
Các bước chẩn đoán thường gặp
Nhật ký NGINX và Trình xử lý thông báo sẽ hữu ích trong việc khắc phục lỗi 404.
Hãy làm theo các bước sau để kiểm tra nhật ký:
- Xem nhật ký NGINX bằng lệnh sau:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Kiểm tra các trường sau trong mục nhập nhật ký:
Trường Giá trị Upstream_status, status404X-Apigee-fault-codemessaging.adaptors.http.flow.ApplicationNotFoundGhi lại mã thư trong nhật ký.
- Kiểm tra nhật ký Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log)để xem bạn cómessaging.adaptors.http.flow.ApplicationNotFoundcho API cụ thể hay không hoặc bạn có mã nhận dạng thông báo duy nhất từ bước 2 cho yêu cầu API hay không.Thông báo lỗi mẫu trong nhật ký Message Processor
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:POST, uri:/weather, message Id:null, exception:com.apigee.rest.framework.ResourceNotFoundException{ code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather, associated contexts = []}, context:Context@342ea86b input=ClientInputChannel(SSLClientChannel[Accepted: Remote:10.123.123.123:8443 Local:10.135.33.68:62092]@1206954 useCount=1 bytesRead=0 bytesWritten=0 age=1ms lastIO=0ms isOpen=true)
Nhật ký ở trên cho thấy mã lỗi và thông báo lỗi như sau:
code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather
Nguyên nhân: Proxy API không được liên kết với máy chủ ảo cụ thể
Nếu bạn không định cấu hình proxy API để chấp nhận các yêu cầu cho máy chủ ảo cụ thể, thì chúng ta có thể nhận được phản hồi 404 Not Found kèm theo thông báo lỗi Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
Chẩn đoán
- Kiểm tra cấu hình Proxy Endpoint (Điểm cuối của proxy) cho proxy API và xem proxy API có được định cấu hình để chấp nhận các yêu cầu cho máy chủ ảo được chỉ định trong lỗi hay không. Điều này được biểu thị bằng phần tử
VirtualHost. Hãy xem một cấu hìnhProxyEndpointmẫu để hiểu rõ điều này.Cấu hình Điểm cuối của Proxy mẫu cho thấy rằng proxy API chấp nhận các yêu cầu trên một máy chủ ảo bảo mật

- Giả sử các máy chủ ảo được xác định trong môi trường cụ thể như sau:
Tên Cổng Bí danh máy chủ lưu trữ default80myorg-prod.apigee.netsecure443myorg-prod.apigee.net - Bạn đưa ra yêu cầu API đến
defaultVirtualHostbằng URLhttp://myorg-prod.apigee.net/weather - Vì
ProxyEndpointkhông códefaultVirtualHostnhư minh hoạ trong ví dụ ở trên, nên bạn sẽ nhận được mã phản hồi404kèm theo thông báo lỗi sau:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}} - Hãy chuyển đến phần Giải pháp bên dưới để giải quyết vấn đề này.
- Nếu
ProxyEndpointđược định cấu hình để chấp nhận các yêu cầu trêndefaultVirtualHost, hãy chuyển sang nguyên nhân tiếp theo – Đường dẫn không được liên kết với bất kỳ proxy API nào.
Độ phân giải
- Thêm
VirtualHostcòn thiếu vào cấu hìnhProxyEndpointđể giải quyết vấn đề. Đối với ví dụ nêu trên, bạn có thể thêmVirtualHostmặc định vào cấu hìnhProxyEndpointnhư sau:<VirtualHost>default</VirtualHost>
Cấu hình Điểm cuối của Proxy mẫu cho thấy VirtualHost mặc định đang được thêm

- Ngoài ra, trong ví dụ được đề cập ở trên, nếu bạn chỉ định sử dụng
secureVirtualHostcho proxy API cụ thể này, thì chỉ gửi các yêu cầu API đếnsecureVirtualHostbằng giao thức HTTPS:https://myorg-prod.apigee.net/weather
Nguyên nhân: Máy chủ ảo bị xoá trong bản sửa đổi mới triển khai của proxy API
Nếu một bản sửa đổi mới của một proxy API được triển khai sau khi xoá một máy chủ ảo cụ thể (là một phần của bản sửa đổi đã triển khai trước đó), thì máy chủ ảo đó vẫn được các ứng dụng sử dụng để đưa ra yêu cầu API, điều này có thể gây ra vấn đề này.
Chẩn đoán
- Kiểm tra cấu hình Proxy Endpoint (Điểm cuối của proxy) cho API proxy để xem API proxy có được định cấu hình để chấp nhận các yêu cầu cho máy chủ ảo được chỉ định trong lỗi hay không. Điều này được biểu thị bằng phần tử
VirtualHosttrong cấu hìnhProxyEndpoint. - Nếu máy chủ ảo được chỉ định trong lỗi không tồn tại trong cấu hình
ProxyEndpoint, hãy thực hiện các bước sau. Nếu không, hãy chuyển sang nguyên nhân tiếp theo – Đường dẫn không được liên kết với bất kỳ proxy API nào. - So sánh cấu hình
ProxyEndpointcủa bản sửa đổi đã triển khai trước đó với bản sửa đổi hiện được triển khai.- Ví dụ: giả sử bản sửa đổi bạn đã triển khai trước đó là
5và bản sửa đổi bạn hiện đang triển khai là6:- Máy chủ ảo được định cấu hình trong Điểm cuối của proxy ở bản sửa đổi 5
- Máy chủ ảo được định cấu hình trong Điểm cuối proxy ở bản sửa đổi 6
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection><HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> - Trong ví dụ trên,
VirtualHost vh1có trongrevision 5,nhưng bị xoá trongrevision 6và được thay thế bằngVirtualHost secure. - Vì vậy, nếu bạn hoặc khách hàng của bạn đang gửi yêu cầu đến proxy API này bằng
VirtualHost vh1(thuộcrevision 5), thì bạn sẽ nhận được mã phản hồi404kèm theo thông báo lỗi sau:{"fault":{"faultstring":"Unable to identify proxy for host: vh1 and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- Ví dụ: giả sử bản sửa đổi bạn đã triển khai trước đó là
- Kiểm tra xem thay đổi máy chủ ảo có được thực hiện cố ý hay vô tình trong bản sửa đổi hiện đang được triển khai hay không, rồi thực hiện các biện pháp thích hợp như được giải thích trong phần Giải pháp.
Độ phân giải
Nếu bạn xác định rằng (các) máy chủ ảo đã bị xoá trong một bản sửa đổi mới, thì đó có thể là hành động cố ý hoặc vô tình. Đối với mỗi trường hợp, hãy thực hiện các bước giải quyết/đề xuất sau đây để giải quyết vấn đề.
Tình huống 1: Thay đổi có chủ ý
Trong trường hợp bạn cố ý xoá máy chủ ảo, bạn có thể chọn một trong các lựa chọn sau. Lựa chọn đầu tiên là phương pháp được đề xuất:
- Tạo một proxy mới có đường dẫn cơ sở khác và sử dụng một máy chủ ảo khác (không có trong bản sửa đổi đã triển khai trước đó).
-
Nếu bạn muốn tiếp tục sử dụng API proxy hiện có nhưng sử dụng một máy chủ ảo khác, thì tốt hơn là bạn nên giữ lại máy chủ ảo hiện có và thêm máy chủ ảo bổ sung.
Điều này sẽ đảm bảo rằng người dùng của proxy API này không bị ảnh hưởng bởi thay đổi.
Nếu bạn muốn sử dụng proxy API hiện có và chỉ có một máy chủ ảo khác, thì hãy thông báo trước cho người dùng và thực hiện thay đổi này trong thời gian bảo trì.
Điều này sẽ đảm bảo rằng người dùng của proxy API này biết về thay đổi và họ có thể sử dụng một máy chủ ảo khác để thực hiện các lệnh gọi đến proxy API này. Do đó, những người dùng này sẽ không bị ảnh hưởng bởi thay đổi này.
Tình huống 2: Thay đổi ngoài ý muốn
Trong trường hợp bạn vô tình xoá máy chủ ảo chứ không phải cố ý,hãy làm như sau:
- Cập nhật cấu hình
ProxyEndpointtrong bản sửa đổi hiện đang được triển khai để sử dụng cùng một máy chủ ảo đã được dùng trong bản sửa đổi đã triển khai trước đó. Trong ví dụ trên, hãy thay đổi phần sau đây từ:<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>tới
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection> - Triển khai lại bản sửa đổi.
Các phương pháp hay nhất
Bạn nên triển khai các proxy mới hoặc bản sửa đổi mới trong thời gian bảo trì hoặc khi lưu lượng truy cập dự kiến ở mức thấp nhất để tránh mọi vấn đề phát sinh trong quá trình triển khai hoặc giảm thiểu ảnh hưởng đến lưu lượng truy cập.
Nguyên nhân: Đường dẫn không được liên kết với bất kỳ proxy API nào
Nếu bạn không định cấu hình API proxy để chấp nhận các yêu cầu cho đường dẫn cụ thể được dùng trong URL yêu cầu API, thì bạn có thể nhận được phản hồi 404 Not Found kèm theo thông báo lỗi Unable to identify proxy for host: VIRTUAL_HOST and url: PATH.
Chẩn đoán
- Xem cấu hình
ProxyEndpointcho proxy API cụ thể mà bạn dự định đưa ra yêu cầu API. - Kiểm tra xem proxy API có được định cấu hình để chấp nhận các yêu cầu cho đường dẫn cụ thể được chỉ ra trong thông báo lỗi hay không. Bạn có thể thực hiện việc này bằng cách làm theo các bước trong Tình huống 1 và Tình huống 2.
Tình huống 1: Đường dẫn không khớp với basepath của API proxy
- Nếu
pathđược chỉ ra trong thông báo lỗi không giống vớibasepathcủa một proxy API cụ thể hoặc không bắt đầu bằngbasepath, thì đó có thể là nguyên nhân gây ra lỗi. - Hãy xem một ví dụ để giải thích điều này:
basepathcủa proxy API dự kiến là/weather- URL yêu cầu API là
https://myorg-prod.apigee.net/climate. Điều này có nghĩa là đường dẫn được dùng trong URL yêu cầu API là/climate. - Trong ví dụ này,
pathkhông giống vớibasepathvà không bắt đầu bằngbasepath. Do đó, bạn sẽ gặp lỗi sau:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/climate", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
Độ phân giải
- Đảm bảo rằng
pathđược dùng trong URL yêu cầu API của bạn giống vớibasepathcủa một proxy API cụ thể. - Trong ví dụ trên, URL yêu cầu API phải như sau:
{ https://myorg-prod.apigee.net/weather
Tình huống 2: Đường dẫn không khớp với bất kỳ luồng có điều kiện nào hiện có
- Nếu
pathđược dùng trong URL yêu cầu API bắt đầu bằngbasepath, thì có thểpath suffix(phần xuất hiện saubasepath) được chỉ ra trong thông báo lỗi không khớp với bất kỳ luồng có điều kiện nào, thì điều đó có thể gây ra lỗi404. - Hãy xem một ví dụ để giải thích điều này:
basepathcủa proxy API dự kiến là/weather- URL yêu cầu API là
https://myorg-prod.apigee.net/weather/Delhi. Điều này có nghĩa là đường dẫn được dùng trong URL yêu cầu API là/weather/Delhi.
- Trong ví dụ này,
pathbắt đầu bằngbasepath/weather. Ngoài ra, nó có mộtpath suffixlà/Delhi. - Bây giờ, hãy kiểm tra xem có luồng có điều kiện nào trong
ProxyEndpointhay không. - Nếu không có luồng có điều kiện hoặc có một vài luồng không có điều kiện, hãy chuyển sang nguyên nhân tiếp theo – Proxy API chưa được triển khai trong một môi trường.
- Nếu
ProxyEndpointchỉ có các quy trình có điều kiện, hãy kiểm tra những điều sau:- Nếu các điều kiện trong tất cả các luồng có điều kiện này kiểm tra một
proxy.pathsuffixcụ thể (đường dẫn sau đường dẫn cơ sở). - Và nếu
path suffixđược chỉ định trong URL yêu cầu API không khớp với bất kỳ điều kiện nào, thì đó là nguyên nhân gây ra lỗi.
- Nếu các điều kiện trong tất cả các luồng có điều kiện này kiểm tra một
- Giả sử chúng ta có 2 luồng trong
ProxyEndpointvà cả hai đều là luồng có điều kiện như minh hoạ dưới đây:<Condition>(proxy.pathsuffix MatchesPath "/Bangalore") and (request.verb = "GET")</Condition> <Condition>(proxy.pathsuffix MatchesPath "/Chennai") and (request.verb = "GET")</Condition>
- Trong ví dụ minh hoạ ở trên, chúng ta có 2 luồng có điều kiện, một luồng khớp với
proxy.pathsuffix(đường dẫn sau basepath) với/Bangalorevà luồng còn lại khớp với/Chennai. Nhưng không có mẫu nào khớp với/Delhi. Đây làpath suffixđược truyền trong URL yêu cầu API. - Đây là nguyên nhân gây ra lỗi
404. Do đó, bạn sẽ gặp lỗi sau:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/weather\/Delhi", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
- Trong ví dụ minh hoạ ở trên, chúng ta có 2 luồng có điều kiện, một luồng khớp với
Độ phân giải
- Đảm bảo rằng
path suffixkhớp với ít nhất một trong các luồng có điều kiện trong điểm cuối proxy của bạn. - Trong ví dụ trên, bạn có thể sử dụng một trong các phương pháp sau để giải quyết lỗi:
- Nếu bạn muốn thực thi bất kỳ nhóm chính sách cụ thể nào cho đường dẫn
/Delhi, hãy thêm một luồng riêng biệt với nhóm chính sách bắt buộc và đảm bảo có một điều kiện phù hợp với/proxy.pathsuffix/Delhinhư minh hoạ bên dưới:<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- Nếu bạn muốn thực thi một nhóm chính sách chung cho đường dẫn
/Delhi, thì trong quy trình chung, hãy đảm bảo rằng có một điều kiện cho phép/proxy.pathsuffixchung. Tức là nó sẽ cho phép mọi đường dẫn saubasepath/weathernhư minh hoạ dưới đây:<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- Nếu bạn muốn thực thi bất kỳ nhóm chính sách cụ thể nào cho đường dẫn
Nếu ProxyEndpoint có basepath chính xác và path suffix được chỉ định trong URL API khớp với một trong các luồng có điều kiện, thì hãy chuyển sang nguyên nhân tiếp theo – Chưa triển khai proxy API trong một môi trường.
Nguyên nhân: Proxy API chưa được triển khai trong một môi trường
Chẩn đoán
- Xác định môi trường mà bí danh máy chủ lưu trữ được dùng trong URL yêu cầu API của bạn.
Bạn có thể thực hiện việc này bằng cách kiểm tra thông tin chi tiết của tất cả máy chủ ảo trong từng môi trường của tổ chức trong giao diện người dùng Edge.
Ví dụ: giả sử bạn có cấu hình sau:
- Nếu
http://myorg-prod.apigee.net/weatherlà URL của bạn, thìmyorg-prod.apigee.netlà tên thay thế của máy chủ lưu trữ. - Bí danh máy chủ lưu trữ
myorg-prod.apigee.netđược định cấu hình trong một trong các máy chủ lưu trữ ảo trong môi trườngprodcủa tổ chức bạn.
- Nếu
- Kiểm tra để xem liệu proxy API cụ thể có được triển khai trong môi trường cụ thể được xác định ở bước 1 nêu trên hay không.
- Nếu API proxy không được triển khai trong môi trường cụ thể, thì đó là nguyên nhân gây ra lỗi
404.- Vì vậy, trong ví dụ được dùng ở bước 1 nêu trên, giả sử proxy API không được triển khai trong môi trường
prod, thì đó là nguyên nhân gây ra lỗi. - Chuyển đến phần Giải pháp bên dưới.
- Vì vậy, trong ví dụ được dùng ở bước 1 nêu trên, giả sử proxy API không được triển khai trong môi trường
- Nếu proxy API được triển khai trong môi trường cụ thể, hãy chuyển sang nguyên nhân tiếp theo – Môi trường không được tải trên Bộ xử lý thông báo.
Độ phân giải
Triển khai proxy API trong môi trường cụ thể mà bạn dự định gửi yêu cầu API.
Nguyên nhân: Môi trường không được tải trên Trình xử lý tin nhắn
Chẩn đoán
- Đăng nhập vào từng Trình xử lý tin nhắn và kiểm tra xem môi trường cụ thể mà bạn đang thực hiện yêu cầu API có được tải trên Trình xử lý tin nhắn hay không bằng lệnh sau:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- Nếu môi trường cụ thể được liệt kê trong lệnh trên, hãy chuyển sang nguyên nhân tiếp theo – Chưa triển khai proxy API trên một hoặc nhiều Trình xử lý thông báo.
- Nếu môi trường cụ thể không có trong danh sách, hãy kiểm tra
/opt/apigee/var/log/edge-message-processor/logs/system.logvà/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.logtrên Trình xử lý thông báo để xem có lỗi nào trong quá trình tải môi trường hay không. - Có thể có nhiều lỗi khác nhau dẫn đến việc không tải được môi trường trên Trình xử lý thông báo. Cách giải quyết tuỳ thuộc vào lỗi đã xảy ra.
Độ phân giải
Có nhiều lý do khiến Môi trường không được tải trên Trình xử lý thông báo. Phần này minh hoạ một số lý do có thể dẫn đến vấn đề này và giải thích cách giải quyết vấn đề.
-
Nếu bạn thấy một trong những lỗi sau đây trong nhật ký Message Processor, thì lỗi đó là do vấn đề xảy ra với các chứng chỉ/khoá đã được thêm vào kho khoá/kho tin cậy được chỉ định trong môi trường được chỉ định.
Lỗi 1: java.security.KeyStoreException: Không thể ghi đè chứng chỉ của riêng mình
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 omitted2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
Lỗi số 2: java.security.KeyStoreException: Không thể ghi đè khoá bí mật
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
- Lấy thông tin chi tiết về kho khoá/kho lưu trữ đáng tin cậy được chỉ định trong thông báo lỗi xuất hiện ở bước trước bằng cách sử dụng lệnh gọi API quản lý sau:
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
Ví dụ về kết quả đầu ra:
{ "certs":[ "mycert", "mycert-new" ], "keys":[ "mycert" ], "name":"myTruststore" } - Kết quả đầu ra mẫu cho thấy có 2 chứng chỉ và một khoá trong truststore
myTruststore. Thông thường, truststore không chứa khoá. Nếu có, bạn nên có một chứng chỉ và một khoá duy nhất. - Lấy thông tin chi tiết về 2 chứng chỉ bằng cách sử dụng API sau:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- Kiểm tra ngày hết hạn của từng chứng chỉ và xác định chứng chỉ đã hết hạn/cũ hơn.
- Xoá chứng chỉ không mong muốn hoặc đã hết hạn khỏi kho lưu trữ đáng tin cậy
myTruststore.
Nếu vấn đề vẫn tiếp diễn hoặc nếu bạn gặp phải lỗi khác với những lỗi được đề cập trong bước 1 ở trên, hãy chuyển đến phần Phải thu thập thông tin chẩn đoán.
Nguyên nhân: API proxy chưa được triển khai trên một hoặc nhiều Trình xử lý thông báo
Có thể bạn chưa triển khai API proxy trên một hoặc nhiều Trình xử lý thông báo. Vấn đề này rất hiếm khi xảy ra và chủ yếu là do Thông báo sự kiện bị thiếu từ Máy chủ quản lý đến Trình xử lý thông báo trong quá trình triển khai một proxy API cụ thể. Trong trường hợp này, bạn cũng sẽ không thể tạo phiên theo dõi trong giao diện người dùng Edge.
Chẩn đoán
- Đăng nhập vào từng Trình xử lý thông báo và kiểm tra xem bản sửa đổi cụ thể của proxy API đã được triển khai hay chưa bằng cách sử dụng lệnh sau:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- Nếu bản sửa đổi cụ thể của API proxy không xuất hiện dưới dạng đầu ra của lệnh được đề cập trong bước 1 ở trên, hãy khởi động lại Message Processor cụ thể như giải thích trong phần Giải pháp.
- Lặp lại các bước 1 và 2 cho tất cả Trình xử lý thông báo.
- Nếu bản sửa đổi cụ thể của API proxy được triển khai trên tất cả các Trình xử lý thông báo, thì đây không phải là nguyên nhân gây ra vấn đề này. Chuyển đến phần Phải thu thập thông tin chẩn đoán.
Độ phân giải
Khởi động lại các Trình xử lý thông báo cụ thể mà bản sửa đổi cụ thể của API proxy chưa được triển khai.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Chẩn đoán vấn đề bằng tính năng Giám sát API
Tính năng Giám sát API cho phép bạn nhanh chóng cô lập các khu vực có vấn đề để chẩn đoán lỗi, hiệu suất và các vấn đề về độ trễ cũng như nguồn của các vấn đề đó, chẳng hạn như ứng dụng của nhà phát triển, proxy API, mục tiêu phụ trợ hoặc nền tảng API.
Đối với vấn đề này, bạn có thể chuyển đến trang API Monitoring > Investigate (Giám sát API > Điều tra) rồi chọn ngày, proxy, v.v. thích hợp. Bạn có thể thấy các thông tin chi tiết sau:
- Mã lỗi:
messaging.adaptors.http.flow.ApplicationNotFound - Mã trạng thái:
404 - Nguồn lỗi:
ApigeehoặcMP
Ngoài ra, bạn có thể nhấp vào Xem nhật ký như trong ảnh chụp màn hình ở trên để kiểm tra thêm.

Bước qua một kịch bản mẫu minh hoạ cách khắc phục sự cố 5xx với các API bằng tính năng Giám sát API. Ví dụ: bạn có thể muốn thiết lập một cảnh báo để nhận thông báo khi số lượng mã trạng thái 404 vượt quá một ngưỡng cụ thể.
Phải thu thập thông tin chẩn đoán
Nếu vấn đề vẫn tiếp diễn ngay cả sau khi bạn làm theo hướng dẫn ở trên, hãy thu thập thông tin chẩn đoán sau đây. Hãy liên hệ và chia sẻ thông tin này với Nhóm hỗ trợ Apigee Edge.
- Nếu bạn là người dùng Đám mây công cộng, hãy cung cấp những thông tin sau:
- Tên tổ chức
- Tên môi trường
- Tên proxy API
- Hoàn tất lệnh curl để tái tạo lỗi
- Nếu bạn là người dùng Đám mây riêng, hãy cung cấp những thông tin sau:
- Thông báo lỗi hoàn chỉnh đã được ghi nhận
- Tên môi trường
- Gói proxy API
- Nhật ký Bộ xử lý tin nhắn
/opt/apigee/var/log/edge-message-processor/logs/system.log - Đầu ra của các lệnh sau trên mỗi Bộ xử lý thông báo.
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions - Thông tin chi tiết về những phần trong sách hướng dẫn này mà bạn đã thử và mọi thông tin chi tiết khác sẽ giúp chúng tôi nhanh chóng giải quyết vấn đề này.