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 một tiện ích bằng cách sử dụng các thông báo xuất hiện ở hai nơi: công cụ Theo dõi và nhật ký tiện ích. Khi một tiện ích không hoạt động, đôi khi bạn cần có thông tin từ cả hai nơi để xác định vấn đề.

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

    Các 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ừ việc cho biết lời gọi tiện ích nào không thành công, cùng với mã lỗi HTTP. Nếu bạn không thấy thông tin hữu ích nào ở đây, thì nơi tốt nhất tiếp theo để xem là nhật ký của tiện ích bạn đang sử dụng.

  • Tiện ích tạo mục nhập nhật ký trong thời gian chạy. (Chỉ quản trị viên tổ chức mới có thể xem nhật ký tiện ích).

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

    Nhật ký cũng bao gồm các mục nhập từ mã tiện ích nội bộ. Khi xem nhật ký, hãy lưu ý rằng một số mục nhập không liên quan đến lỗi bạn đang khắc phục. 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 từ 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 tiện ích bắt nguồn từ chính sách ExtensionCallout trong một proxy API, thông qua tiện ích, đến tài nguyên bên ngoài, rồi 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ột môi trường.

Ví dụ: nếu bạn định cấu hình tiện ích Cloud Logging bằng mã dự án Google Cloud không chính xác, thì Cloud Logging sẽ trả về lỗi cho tiện ích đó. Thông tin chi tiết về các 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, các lỗi này thường xuất hiện 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 chi tiết nào về nguyên nhân gây ra lỗi, ngoại trừ việc cho biết rằng 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 thông tin đó trong các mục nhập nhật ký của tiện ích. Thông báo lỗi sau đây do dịch vụ Cloud Pub/Sub trả về là do mã dự án có định dạng không chính xác.

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

Lỗi trong cấu hình chính sách ExtensionCallout

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

  • 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ệ đối 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 truyề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 lại trong 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 của JSON được tiện ích xử lý và một phần được chuyển đến tài nguyên. Ví dụ: tệp JSON cấu hình tiện ích Cloud Logging bao gồm một đối tượng metadata có nội dung được truyền đến Cloud Logging. Tên khoá không chính xác ở đó (chẳng hạn như 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 mục nhập trong nhật ký tiện ích:

    details: 'Resource type cannot be empty'
    
  • 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 các phần được đánh giá theo chính sách của phần tử <Input> JSON, 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, các lỗi này thường xuất hiện 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 chi tiết nào về nguyên nhân gây ra lỗi, ngoại trừ việc cho biết rằng tiện ích đã trả về lỗi. Lỗi sau đây xuất hiện trong công cụ Theo dõi khi bạn viết sai 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 này thường sẽ xuất hiện trong nhật ký.

Đây là lỗi yêu cầu tài nguyên bên ngoài không thành công vì những 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ề một lỗi cho tiện ích. Lỗi này sẽ được thêm 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, các lỗi này thường xuất hiện 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 chi tiết nào về nguyên nhân gây ra lỗi, ngoại trừ việc cho biết rằng 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 có các mục nhập chứa thông báo từ chính tài nguyên bên ngoài. Thông báo 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'