Gỡ lỗi tiện ích

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Bạn có thể gỡ lỗi cho một tiện ích bằng cách sử dụng các thông báo hiển thị ở hai nơi: công cụ Theo dõi và nhật ký tiện ích. Khi tiện ích không hoạt động, việc xác định sự cố đôi khi có thể yêu cầu thông tin từ cả hai nơi.

  • Công cụ theo dõi của Apigee Edge là nơi bạn kiểm tra và chỉnh sửa mã proxy API lặp đi lặp lại trong quá trình phát triển. Thông báo theo dõi có các lỗi từ mã proxy API của bạn, bao gồm cả proxy API và cấu hình chính sách.

    Lỗi liên quan đến tiện ích xuất hiện trong công cụ Theo dõi thường không chứa nhiều thông tin chi tiết, ngoại trừ thông báo chú thích tiện ích nào không thành công cùng với mã lỗi HTTP. Khi bạn không thấy nội dung nào hữu ích ở đây, nơi tốt nhất tiếp theo để xem là nhật ký cho tiện ích bạn đang sử dụng.

  • Tiện ích tạo các mục nhập nhật ký trong thời gian chạy. (Nhật ký tiện ích chỉ dành cho quản trị viên tổ chức.)

    Các nhật ký này bao gồm các mục nhập được trả về bởi tài nguyên bên ngoài mà tiện ích được định cấu hình để tương tác. Ví dụ: nếu thông tin xác thực tài nguyên bên ngoài bị định cấu hình sai trong tiện ích, thì lỗi có thể xuất hiện ở đây.

    Nhật ký cũng bao gồm các mục nhập từ mã tiện ích nội bộ. Khi bạn xem qua nhật ký, hãy nhớ rằng một số mục nhập không liên quan đến lỗi mà bạn đang sửa. Các mục nhập nhật ký liên quan đến tiện ích thường bắt đầu bằng từ details, như trong mục nhập nhật ký sau đây của tiện ích Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Các loại lỗi và nguyên nhân

Quy trình xử lý yêu cầu của tiện ích chuyển từ chính sách Chú thích mở rộng trong một proxy API, thông qua tiện ích, đến tài nguyên bên ngoài, sau đó quay lại. Vì vậy, lỗi có thể xảy ra ở bất kỳ vị trí nào trong số đó.

Lỗi bạn thấy có thể thuộc các danh mục sau.

Lỗi trong cấu hình tiện ích

Đây là cấu hình mà quản trị viên tổ chức thực hiện khi thêm tiện ích vào môi trường.

Ví dụ: nếu bạn định cấu hình tiện ích Ghi nhật ký trên đám mây với mã dự án Google Cloud không chính xác, thì tính năng Ghi nhật ký Google Cloud sẽ trả về một lỗi cho tiện ích. Thông tin chi tiết về những lỗi này thường có trong nhật ký tiện ích.

Bằng chứng trong công cụ Theo dõi

Trong trình chỉnh sửa proxy, những lỗi này thường hiển thị dưới dạng lỗi cấp 4xx hoặc 5xx. Tuy nhiên, trình chỉnh sửa proxy sẽ không hiển thị bất kỳ thông tin cụ thể nào về nguyên nhân lỗi ngoại trừ trường hợp tiện ích đã trả về lỗi.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Bằng chứng trong nhật ký tiện ích

Nếu có thông tin chi tiết về loại lỗi này, bạn sẽ thấy lỗi đó trong mục nhập nhật ký của tiện ích. Dịch vụ Cloud Pub/Sub trả về thông báo lỗi sau đây, có nguồn gốc từ một mã dự án không đúng định dạng.

details: 'Project does not exist: example-test-12345'

Lỗi trong cấu hình chính sách Chú thích mở rộng

Những lỗi này xảy ra khi Chính sách chú thích tiện ích bị định cấu hình sai, thông qua lỗi cú pháp cấu hình chính sách hoặc thông qua các khóa hoặc giá trị cấu hình không chính xác. Những lỗi này có hai dạng, tuỳ thuộc vào cách định cấu hình chính sách:

  • Các giá trị không chính xác do tài nguyên bên ngoài đánh giá

    Điều này có thể xảy ra khi lỗi cấu hình có vẻ hợp lệ với tiện ích, nhưng không hợp lệ đối với tài nguyên bên ngoài. Ví dụ: nếu tiện ích chuyển mã cơ sở dữ liệu không chính xác đến Cloud Spanner, thì Cloud Spanner sẽ trả về một lỗi được ghi vào nhật ký tiện ích:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Điều này cũng có thể xảy ra đối với JSON cấu hình không chính xác trong phần tử <Input> của chính sách. Đối với một số tiện ích, một phần JSON được tiện ích xử lý và một phần được chuyển tới tài nguyên. Ví dụ: tệp JSON chứa cấu hình Tiện ích ghi nhật ký trên đám mây chứa đối tượng metadata có nội dung được truyền đến tính năng Ghi nhật ký trên đám mây. Tại đây, các tên khoá không chính xác (ví dụ: typ thay vì type) có thể trả về lỗi từ tài nguyên bên ngoài xuất hiện dưới dạng các mục nhập trong nhật ký tiện ích:

    details: 'Resource type cannot be empty'
    
  • Các giá trị không chính xác do tiện ích đánh giá

    Các lỗi này bao gồm lỗi cú pháp trong những phần được chính sách đánh giá trong JSON của phần tử <Input>, lỗi chính tả tên hành động trong phần tử <Action>, v.v. Những lỗi này thường xuất hiện trong công cụ Theo dõi nhưng không xuất hiện trong nhật ký tiện ích.

Bằng chứng trong công cụ Theo dõi

Trong trình chỉnh sửa proxy, những lỗi này thường hiển thị dưới dạng lỗi cấp 4xx hoặc 5xx. Tuy nhiên, trình chỉnh sửa proxy sẽ không hiển thị bất kỳ thông tin cụ thể nào về nguyên nhân lỗi ngoại trừ trường hợp tiện ích đã trả về lỗi. Lỗi sau xuất hiện trong công cụ Theo dõi khi viết sai chính tả tên hành động trong tiện ích Cloud Firestore.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Bằng chứng trong nhật ký tiện ích

Khi cấu hình chính sách dẫn đến lỗi xử lý trong tài nguyên bên ngoài, lỗi thường sẽ xuất hiện trong nhật ký.

Đây là lỗi khi yêu cầu đến tài nguyên bên ngoài không thành công vì các lý do không liên quan đến tiện ích.

Ví dụ: Giả sử bạn đang sử dụng tiện ích Cloud Spanner để thêm một hàng vào cơ sở dữ liệu, nhưng giá trị khoá chính của hàng đã được sử dụng trong một hàng hiện có. Cloud Spanner sẽ trả về lỗi cho tiện ích, điều này sẽ thêm lỗi vào nhật ký tiện ích.

Bằng chứng trong công cụ Theo dõi

Trong trình chỉnh sửa proxy, những lỗi này thường hiển thị dưới dạng lỗi cấp 4xx hoặc 5xx. Tuy nhiên, trình chỉnh sửa proxy sẽ không hiển thị bất kỳ thông tin cụ thể nào về nguyên nhân gây ra lỗi ngoại trừ trường hợp tiện ích đã trả về lỗi.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Bằng chứng trong nhật ký tiện ích

Nhật ký thường sẽ có các mục nhập chứa thông điệp từ chính tài nguyên bên ngoài. Thông điệp nhật ký sau đây từ Cloud Spanner mô tả lỗi giá trị khoá chính hiện có.

details: 'Row [jonesy42] in table user already exists'