Dữ liệu Analytics bị kẹt trong hàng đợi chết của Qpidd

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

Triệu chứng

Thiếu dữ liệu phân tích trong giao diện người dùng Edge do máy chủ Qpidd không chuyển thông báo phân tích sang PostgreSQL. Trong Edge, thành phần edge-qpid-server tương ứng với máy chủ Qpidd.

Qpidd duy trì 2 hàng đợi cho mỗi nhóm số liệu phân tích:

  • ax-q-axgroup001-consumer-group-001

    Hàng đợi này lưu giữ thông báo phân tích được đẩy từ Bộ định tuyến và Bộ xử lý thư. Thông báo được lấy từ đây bằng edge-qpid-server, giúp phân tích cú pháp thông báo và chèn vào PostgreSQL. Sau khi được xử lý thành công, thư sẽ được xoá khỏi hàng đợi.

  • ax-q-axgroup001-consumer-group-001-dl

    Hàng đợi này là hàng đợi chữ cái chết. Địa chỉ này đóng vai trò là đích đến cho các thông báo mà edge-qpid-server không xử lý được và do đó không muốn nhận nữa. Trường hợp này thường được điền sẵn khi vượt quá số lượng phân phối tối đa hoặc nếu PostgreSQL từ chối chèn dữ liệu mới do lỗi thời gian chạy.

Thông báo lỗi

Nguyên nhân gốc rễ có thể là do nhiều lỗi thời gian chạy từ thành phần edge-qpid-server. Thông thường, nếu edge-qpid-server gặp lỗi thời gian chạy từ PostgreSQL, thì nó sẽ tạo hàng đợi chữ cái chết nếu chưa có, sau đó gửi thông báo sau ở đó:

yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.

Nguyên nhân có thể xảy ra

Nguyên nhân Nội dung mô tả Hướng dẫn khắc phục sự cố có thể áp dụng cho
Thư bị kẹt trong hàng đợi thư đã dừng của qpidd edge-qpid-server không hiểu được các thông báo mà nó đọc từ nhà môi giới Qpidd hoặc không thể lưu giữ các thông báo đến PostgreSQL. Người dùng đám mây riêng tư ở Edge

Các bước chẩn đoán thông thường

Chạy lệnh sau để xem số liệu thống kê trong hàng đợi Qpidd:

qpid-stat -q

Kết quả trả về tập hợp các hàng đợi đã đăng ký với trình môi giới. Nếu hàng đợi có tên kết thúc bằng "-dl" có thư được điền thì có thư bị kẹt trong hàng đợi chữ cái cuối cùng.

Queues
  queue                                     dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut   cons  bind
  ========================================================================================================================
  ax-q-axgroup-001-consumer-group-001       Y                   0     185    185     0       13.8m   13.8m      6      2
  ax-q-axgroup-001-consumer-group-001-dl    Y                   0     70     70      0        3.9m    3.9m      0      2

Nguyên nhân: Thư bị treo trong hàng đợi chữ cái đã chết của qpidd

Chẩn đoán

Tình trạng này có thể xảy ra trong các trường hợp sau:

  1. Trước đây, chúng tôi đã từng nâng cấp một trình bổ trợ, nhưng vào thời gian đó, PostgreSQL ngừng hoạt động.
  2. Tạm thời ngừng hoạt động của PostgreSQL do vấn đề về mạng.
  3. edge-qpid-server đã cố gắng gửi một thông báo đến PostgreSQL nhưng PostgreSQL trả về lỗi thời gian chạy.

Độ phân giải

  1. Ghi lại tên của hàng đợi trong phần Các bước chẩn đoán phổ biến. Ví dụ:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Chạy lệnh qpid-tool để nhập lời nhắc qpid mang tính tương tác:

    qpid-tool

    comamnd này trả về như sau:

    Management Tool for QPID
    qpid:
  3. Chạy list broker để nhận danh sách các nhà môi giới đang hoạt động:

    list broker

    comamnd này trả về như sau:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    Trong đó cột ID chỉ định mã nhận dạng của người môi giới.

  4. Ghi lại mã của nhà môi giới. Trong ví dụ, nó là 125.

  5. Chạy lệnh sau để di chuyển các tin nhắn từ hàng đợi chữ cái không thành công trở lại hàng đợi thực tế:

    call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}

    comamnd này trả về như sau:

    OK (0) - {}

    Nếu không có kết quả thì không cần làm gì, không có thư cần di chuyển. Nếu không thấy OK(0) thì bạn nên liên hệ với Nhóm hỗ trợ Apigee.

  6. Thoát khỏi cửa sổ dòng lệnh qpid-tool.

    quit
  7. Chờ 5 phút, sau đó chạy lại các bước chẩn đoán từ Các bước chẩn đoán phổ biến. Xác minh rằng các thư trong hàng đợi thực tế đang được xử lý và đảm bảo rằng số lượng thư không còn hoạt động vẫn ở mức 0.

Nếu vấn đề vẫn tiếp diễn, hãy chuyển đến phần tiếp theo.

Phải thu thập thông tin chẩn đoán

Nếu sự cố vẫn tiếp diễn sau khi đã làm theo các hướng dẫn ở trên, hãy thu thập các thông tin chẩn đoán sau. Hãy liên hệ và chia sẻ thông tin với Nhóm hỗ trợ Apigee:

  • Nhật ký đã đọc dữ liệu: /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • Nhật ký Postgresql: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Nhật ký Edge-qpid-server: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Nhật ký Edge-postgres-server:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Số liệu thống kê trong hàng đợi đã đọc mã:

    qpid-stat -q
  • Nhóm Analytics được trả về bằng lệnh curl sau đây:

    curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax