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 Analytics 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ì hai hàng đợi cho mỗi nhóm phân tích:

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

    Hàng đợi này lưu giữ các thông báo phân tích được đẩy từ Bộ xử lý và Bộ định tuyến thông báo. Thông báo được lấy từ đây bằng edge-qpid-server để phân tích cú pháp thông báo và chèn các thông báo đó 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 của các thông báo mà edge-qpid-server không xử lý được nên không muốn nhận nữa. Thông số 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ì công cụ này sẽ tạo hàng đợi chữ cái chết nếu chưa có rồi gửi thông báo sau đến đó:

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 Mô tả Hướng dẫn khắc phục sự cố áp dụng cho
Thư bị mắc kẹt trong hàng đợi chữ cái chết của qpidd edge-qpid-server không hiểu được các thông báo mà công cụ này đọc từ trình môi giới Qpidd hoặc không thể lưu giữ thông báo cho PostgreSQL. Người dùng dịch vụ đám mây riêng tư của Edge

Các bước chẩn đoán thường gặp

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

qpid-stat -q

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

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ị mắc kẹt trong hàng đợi chữ cái chết của qpidd

Chẩn đoán

Điều kiện này có thể xảy ra trong các trường hợp sau:

  1. Một quá trình nâng cấp đã diễn ra trước đây và trong thời gian PostgreSQL ngừng hoạt động.
  2. PostgreSQL tạm thời ngừng hoạt động do sự cố về mạng.
  3. edge-qpid-server đã cố gửi 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 qpidcó tính tương tác:

    qpid-tool

    Hàm này trả về các hàm sau:

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

    list broker

    Hàm này trả về các hàm 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ã nhận dạng của người môi giới. Trong ví dụ, con số đó là 125.

  5. Chạy lệnh sau để di chuyển thư từ hàng đợi chữ cái không hoạt độ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 {}

    Hàm này trả về các hàm sau:

    OK (0) - {}

    Nếu không có kết quả đầu ra thì không có gì để làm và chỉ báo hiệu để không có tin nhắn nào được di chuyển. Nếu không thấy OK(0) thì bạn nên liên hệ với Bộ phận hỗ trợ Apigee Edge.

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

    quit
  7. Đợi 5 phút rồi chạy lại các bước chẩn đoán trong phần Các bước chẩn đoán phổ biến. Xác minh rằng thư trên hàng đợi thực tế đang được xử lý và đảm bảo số lượng thư không còn được giữ nguyên ở 0.

Nếu sự cố 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 vấn đề vẫn tiếp diễn sau khi đã làm theo các 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ẻ chúng với Nhóm hỗ trợ Apigee Edge:

  • Nhật ký Qpidd: /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ý máy chủ Edge-qpid: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Nhật ký máy chủ Edge-postgres:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Số liệu thống kê hàng đợi Qpidd:

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

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