Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. info
Dấu hiệu
Dữ liệu Analytics bị thiếu trong Giao diện người dùng Edge mới do máy chủ Qpidd không chuyển thông báo Analytics 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 Analytics:
ax-q-axgroup001-consumer-group-001
Hàng đợi này chứa các thông báo Analytics được đẩy từ Bộ xử lý thông báo và Bộ định tuyến. Các thông báo được kéo từ đây bằng
edge-qpid-server. Thành phần này sẽ phân tích cú pháp các thông báo và chèn chúng vào PostgreSQL. Sau khi xử lý thành công, các thông báo sẽ bị xoá khỏi hàng đợi.ax-q-axgroup001-consumer-group-001-dl
Hàng đợi này là hàng đợi thư không gửi được. Hàng đợi này đóng vai trò là đích đến của các thông báo mà
edge-qpid-serverkhông xử lý được và do đó không muốn nhận nữa. Hàng đợi này thường được điền khi vượt quá số lần gử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 nhận được lỗi thời gian chạy từ PostgreSQL, thì thành phần này sẽ tạo hàng đợi thư không gửi được (nếu chưa có) rồi gửi thông báo sau vào đó:
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.
Các 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ông báo bị kẹt trong hàng đợi thư không gửi được của qpidd | edge-qpid-server không hiểu được các thông báo mà thành phần này đọc từ trình môi giới Qpidd hoặc không lưu được các thông báo vào PostgreSQL.
|
Người dùng Edge cho Đám mây riêng tư |
Các bước chẩn đoán thường gặp
Chạy lệnh sau trên nút Qpid để xem số liệu thống kê về hàng đợi Qpidd:
/opt/apigee/apigee-qpidd/bin/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ông báo được điền (Q-Depth(Messages) trong Edge cho Đám mây riêng tư 4.53.00 trở lên hoặc msg trong Edge cho Đám mây riêng tư 4.52.x trở xuống), thì các thông báo sẽ bị kẹt trong hàng đợi thư không gửi được.
Ví dụ về kết quả trong Edge cho Đám mây riêng tư 4.53.00 trở lên (bao gồm cả 4.54.00, Apache Qpid Broker-J):
+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | Queue Name | Messages Enqueued | Total Enqueued(B) | Messages Dequeued | Total Dequeued(B) | Consumers | Bindings | Q-Depth(Messages) | Q-Depth(B) | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001 | 185 | 13800000 | 185 | 13800000 | 6 | 1 | 0 | 0 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001-dl | 70 | 3900000 | 0 | 0 | 0 | 1 | 70 | 3900000 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Ví dụ về kết quả trong Edge cho Đám mây riêng tư 4.52.x trở xuống (trình môi giới C++
qpidd cũ):
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ông báo bị kẹt trong hàng đợi thư không gửi được 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:
- Đã có một lần nâng cấp trong quá khứ, trong thời gian đó PostgreSQL đã ngừng hoạt động.
- PostgreSQL bị ngừng hoạt động tạm thời do sự cố mạng.
edge-qpid-serverđã cố gắng gửi thông báo đến PostgreSQL nhưng PostgreSQL trả về lỗi thời gian chạy.
Độ phân giải
Hãy làm theo các bước cho phiên bản Edge cho Đám mây riêng tư để di chuyển các thông báo bị kẹt từ hàng đợi thư không gửi được trở lại hàng đợi Analytics chính.
Edge cho Đám mây riêng tư 4.53.00 trở lên (bao gồm cả 4.54.00)
Edge cho Đám mây riêng tư 4.53.00 trở lên (bao gồm cả 4.54.00) sử dụng Apache Qpid Broker-J (10.0.1 trong 4.54.00 và 8.0.6 trong 4.53.x). CLI qpid-tool cũ đã bị xoá trong Edge cho Đám mây riêng tư 4.53.00 trở lên và không thể sử dụng được.
Thay vào đó, hãy sử dụng Apache Qpid Broker-J HTTP Management REST API (moveMessages) hoặc Bảng điều khiển quản lý web Qpid để di chuyển các thông báo từ hàng đợi thư không gửi được trở lại hàng đợi Analytics chính:
Ghi lại tên chính xác của hàng đợi chính và hàng đợi thư không gửi được từ kết quả Các bước chẩn đoán thường gặp (ví dụ:
ax-q-axgroup001-consumer-group-001vàax-q-axgroup001-consumer-group-001-dl, hoặcax-q-axgroup-001-consumer-group-001vàax-q-axgroup-001-consumer-group-001-dl).Trên nút Qpid, hãy chạy lệnh
curlsau để gọi thao tácmoveMessagestrên hàng đợi thư không gửi được thông qua Qpid Broker-J API Quản lý HTTP (cổng8090theo mặc định):curl -u QPID_USER:QPID_PASSWORD -X POST \ -H "Content-Type: application/json" \ -d '{"destination": "ax-q-axgroup001-consumer-group-001"}' \ http://127.0.0.1:8090/api/latest/queue/default/default/ax-q-axgroup001-consumer-group-001-dl/moveMessagesTrong trường hợp:
QPID_USERvàQPID_PASSWORDlà thông tin đăng nhập quản lý Qpid được định cấu hình trong/opt/apigee/customer/application/qpidd.propertieshoặc/opt/apigee/token/application/qpidd.properties(mặc định làguest:guest).- Thay thế
ax-q-axgroup001-consumer-group-001vàax-q-axgroup001-consumer-group-001-dlnếu tên hàng đợi Analytics của bạn trongqpid-stat -qkhác nhau. - Để di chuyển thông báo theo lô, hãy thêm
"limit"vào nội dung yêu cầu JSON (ví dụ:"limit": 100000). - Nếu SSL/TLS được bật trên API Quản lý Qpid (
conf_qpidd_qpid_management.https.enabled=true), hãy sử dụnghttps://và truyền--cacert(hoặc-k) đếncurl.
Xác minh kết quả lệnh. Một lệnh gọi thành công sẽ trả về một mảng JSON gồm các mã nhận dạng thông báo nội bộ đã di chuyển:
[ 3, 4, 5 ]
Nếu mảng được trả về là mảng trống (
[]), thì không có thông báo nào trong hàng đợi thư không gửi được để di chuyển.Đợi 5 phút rồi chạy
/opt/apigee/apigee-qpidd/bin/qpid-stat -qtừ Các bước chẩn đoán thường gặp. Xác minh rằng các thông báo trên hàng đợi chính (ax-q-axgroup001-consumer-group-001) đang được xử lý vàQ-Depth(Messages)trên hàng đợi thư không gửi được (ax-q-axgroup001-consumer-group-001-dl) vẫn ở mức0.
Edge cho Đám mây riêng tư 4.52.x trở xuống
Ghi lại tên của các hàng đợi từ các bước chẩn đoán thường gặp. Ví dụ:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Chạy lệnh
qpid-toolđể nhập lời nhắcqpidtương tác:qpid-tool
Lệnh này trả về nội dung sau:
Management Tool for QPID qpid:
Chạy
list brokerđể lấy danh sách các trình môi giới đang hoạt động:list broker
Lệnh này trả về nội dung sau:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Trong đó, cột
IDchỉ định mã nhận dạng của trình môi giới.Ghi lại mã nhận dạng của trình môi giới. Trong ví dụ này, mã nhận dạng là
125.Chạy lệnh sau để di chuyển các thông báo từ hàng đợi thư không gửi được trở lại hàng đợi thực:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}Lệnh này trả về nội dung sau:
OK (0) - {}Nếu không có kết quả nào, tức là không có gì để làm, nghĩa là không có thông báo nào để di chuyển. Nếu bạn không thấy
OK (0), thì bạn nên liên hệ với Nhóm hỗ trợ Apigee Edge.Thoát khỏi thiết bị đầu cuối
qpid-tool:quit
Đợi 5 phút rồi chạy lại các bước chẩn đoán từ Các bước chẩn đoán thường gặp. Xác minh rằng các thông báo trên hàng đợi thực đang được xử lý và đảm bảo số lượng
msgthư không gửi được vẫn ở mức0.
Nếu vấn đề vẫn tiếp diễn, hãy chuyển sang phần tiếp theo.
Thông tin chẩn đoán bắt buộc phải thu thập
Nếu vấn đề vẫn tiếp diễn sau khi bạn làm theo các hướng dẫn trước đó, hãy thu thập thông tin chẩn đoán sau đây và chia sẻ với Nhóm hỗ trợ Apigee Edge:
- Nhật ký Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge cho Đám mây riêng tư 4.53.00 trở lên) và/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ê về hàng đợi Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Nhóm Analytics do lệnh curl sau trả về:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax