Dữ liệu không xuất hiện trên trang tổng quan Analytics

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Dấu hiệu

Trang tổng quan phân tích (Hiệu suất của proxy, Hiệu suất mục tiêu, v.v.) không hiển thị bất kỳ dữ liệu nào trong giao diện người dùng Edge. Tất cả trang tổng quan đều hiển thị thông báo sau:

No traffic in the selected date range

Thông báo lỗi

Vấn đề này không dẫn đến các lỗi có thể quan sát được.

Các nguyên nhân có thể

Bảng sau đây liệt kê những nguyên nhân có thể gây ra vấn đề này:

Nguyên nhân Cho
Không có lưu lượng truy cập API cho Tổ chức-Môi trường Người dùng Edge cho Đám mây riêng tư
Dữ liệu có trong Cơ sở dữ liệu Postgres nhưng không hiển thị trong giao diện người dùng Người dùng Edge cho Đám mây riêng tư
Dữ liệu Analytics không được chuyển đến Cơ sở dữ liệu Postgres Người dùng Edge cho Đám mây riêng tư
Triển khai Analytics không chính xác Người dùng Edge cho Đám mây riêng tư
UUID máy chủ Analytics cũ Người dùng Edge cho Đám mây riêng tư

Không có lưu lượng truy cập API cho Tổ chức-Môi trường

Chẩn đoán

  1. Kiểm tra xem có lưu lượng truy cập cho API Proxy trên tổ chức-môi trường cụ thể trong khoảng thời gian cụ thể mà bạn đang cố gắng xem dữ liệu phân tích bằng một trong các phương thức sau:
    1. Bật tính năng theo dõi cho mọi API mà người dùng hiện đang sử dụng và kiểm tra xem bạn có thể nhận được yêu cầu nào trong dấu vết hay không.
    2. Xem nhật ký truy cập NGINX (/opt/apigee/var/log/edge-router/nginx/logs/access.log) và xem có mục nhập mới nào cho API Proxy trong khoảng thời gian cụ thể hay không.
    3. Nếu bạn ghi thông tin từ API Proxy vào một máy chủ nhật ký như Syslog, Splunk, Loggly, v.v., thì bạn có thể kiểm tra xem có mục nhập nào trong các máy chủ nhật ký này cho API Proxy trong khoảng thời gian cụ thể hay không.
  2. Nếu không có lưu lượng truy cập (không có yêu cầu API) trong khoảng thời gian cụ thể, thì dữ liệu phân tích sẽ không có sẵn. Bạn sẽ thấy thông báo "Không có lưu lượng truy cập trong phạm vi ngày đã chọn" trên trang tổng quan phân tích.

Độ phân giải

  1. Thực hiện một số lệnh gọi đến một hoặc nhiều proxy API trong môi trường tổ chức cụ thể.
  2. Đợi vài giây, sau đó xem trang tổng quan phân tích trong thẻ Giờ và xem dữ liệu có xuất hiện hay không.
  3. Nếu vấn đề vẫn tiếp diễn, hãy chuyển sang phần Dữ liệu có trong Cơ sở dữ liệu Postgres nhưng không hiển thị trong giao diện người dùng.

Dữ liệu có trong Cơ sở dữ liệu Postgres nhưng không hiển thị trong giao diện người dùng

Dấu hiệu

Trước tiên, hãy xác định tính sẵn có của dữ liệu Analytics mới nhất trong cơ sở dữ liệu Postgres.

Cách kiểm tra xem dữ liệu Analytics mới nhất có trong nút Postgres Master hay không:

  1. Đăng nhập vào từng máy chủ Postgres và chạy lệnh sau để xác thực xem bạn có đang ở trên nút Postgres chính hay không:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
  2. Trên nút Master Postgres, hãy đăng nhập vào PostgreSQL:
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
  3. Kiểm tra xem bảng có tồn tại cho org-env của bạn hay không bằng cách sử dụng truy vấn SQL sau trong cơ sở dữ liệu Postgres:
    \d analytics."orgname.envname.fact"
  4. Kiểm tra xem dữ liệu mới nhất có trong cơ sở dữ liệu Postgres hay không bằng cách sử dụng truy vấn SQL sau:
    select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
  5. Nếu dấu thời gian mới nhất quá cũ (hoặc rỗng), thì điều này cho biết dữ liệu không có trong cơ sở dữ liệu Postgres. Nguyên nhân có thể gây ra vấn đề này là do dữ liệu không được đẩy từ Máy chủ Qpid sang cơ sở dữ liệu Postgres. Chuyển đến phần Dữ liệu Analytics không được gửi đến cơ sở dữ liệu Postgres.
  6. Nếu dữ liệu mới nhất có trong cơ sở dữ liệu Postgres trên nút chính, hãy làm theo các bước bên dưới để chẩn đoán lý do dữ liệu không hiển thị trong giao diện người dùng Edge.

Chẩn đoán

  1. Bật Công cụ cho nhà phát triển trong trình duyệt Chrome và lấy API được dùng từ một trong các trang tổng quan phân tích bằng cách làm theo các bước bên dưới:
    1. Chọn thẻ Mạng trong Công cụ cho nhà phát triển.
    2. Bắt đầu ghi.
    3. Tải lại trang tổng quan Analytics.
    4. Trên bảng điều khiển bên trái trong Công cụ cho nhà phát triển, hãy chọn hàng có "apiproxy?_optimized...".
    5. Trên bảng điều khiển bên phải trong Công cụ dành cho nhà phát triển, hãy chọn thẻ "Tiêu đề" và ghi lại "URL yêu cầu".
  2. Sau đây là kết quả mẫu từ Công cụ dành cho nhà phát triển:

    Đầu ra mẫu cho thấy API được dùng trong trang tổng quan về Hiệu suất của proxy trên thẻ Mạng của Công cụ cho nhà phát triển cho trang tổng quan về Hiệu suất của proxy

  3. Chạy trực tiếp lệnh gọi API quản lý và kiểm tra xem bạn có nhận được kết quả hay không. Sau đây là một lệnh gọi API mẫu cho thẻ Ngày trong trang tổng quan về Hiệu suất của proxy:
    curl -u username:password
      "http://management_server_IP_address:8080/v1/organizations/
      org_name/environments/env_name/stats/apiproxy?limit=14400&
      select=sum(message_count),sum(is_error),avg(total_response_time),
      avg(target_response_time)&sort=DESC&sortby=sum(message_count),sum(is_error),
      avg(total_response_time),avg(target_response_time)&timeRange=08%2F9%2F2017+
      18:00:00~08%2F10%2F2017+18:00:00&timeUnit=hour&tsAscending=true"
  4. Nếu bạn thấy một phản hồi thành công nhưng không có dữ liệu, thì điều đó có nghĩa là Máy chủ quản lý không thể tìm nạp dữ liệu từ máy chủ Postgres do các vấn đề về khả năng kết nối mạng.
  5. Kiểm tra xem bạn có thể kết nối với máy chủ Postgres từ Máy chủ quản lý hay không:
    telnet Postgres_server_IP_address 5432
  6. Nếu bạn không thể kết nối với máy chủ Postgres, hãy kiểm tra xem có hạn chế nào của tường lửa đối với cổng 5432 hay không.
  7. Nếu có các hạn chế về tường lửa, thì đó có thể là nguyên nhân khiến Management Server không thể kéo dữ liệu từ máy chủ Postgres.

Độ phân giải

  1. Nếu có các hạn chế về tường lửa, hãy xoá các hạn chế đó để Máy chủ quản lý có thể giao tiếp với máy chủ Postgres.
  2. Nếu không có hạn chế nào về tường lửa, thì vấn đề này có thể là do lỗi mạng.
  3. Nếu có bất kỳ sự cố nào về mạng trên Máy chủ quản lý, thì việc khởi động lại máy chủ này có thể khắc phục vấn đề.
  4. Khởi động lại từng Máy chủ quản lý bằng lệnh bên dưới:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Kiểm tra xem bạn có thể xem dữ liệu phân tích trong giao diện người dùng Edge hay không.

Nếu bạn vẫn không thấy dữ liệu, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

Dữ liệu Analytics không được chuyển đến Cơ sở dữ liệu Postgres

Chẩn đoán

Nếu dữ liệu không được chuyển từ Máy chủ Qpid sang Cơ sở dữ liệu Postgres như được xác định trong Dữ liệu có trong Cơ sở dữ liệu Postgres nhưng không xuất hiện trong giao diện người dùng, hãy thực hiện các bước sau:

  1. Kiểm tra xem mỗi Máy chủ Qpid có đang hoạt động hay không bằng cách thực thi lệnh bên dưới:
    /opt/apigee/apigee-service/bin edge-qpid-server status
  2. Nếu có Máy chủ Qpid nào ngừng hoạt động, hãy khởi động lại máy chủ đó. Nếu không, hãy chuyển sang bước 5.
    /opt/apigee/apigee-service/bin edge-qpid-server restart
  3. Đợi một lúc rồi kiểm tra lại xem dữ liệu mới nhất có trong cơ sở dữ liệu Postgres hay không.
    1. Đăng nhập vào PostgreSQL:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. Chạy truy vấn SQL bên dưới để kiểm tra xem dữ liệu mới nhất có được cung cấp hay không:
      select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
  4. Nếu có dữ liệu mới nhất, hãy bỏ qua các bước sau và chuyển sang bước cuối cùng trong phần Giải pháp. Nếu không có dữ liệu mới nhất, hãy thực hiện các bước sau.
  5. Kiểm tra xem các thông báo từ hàng đợi máy chủ Qpid có đang được chuyển đến cơ sở dữ liệu Postgres hay không.
    1. Thực thi qpid-stat -q command và kiểm tra các giá trị cột msgInmsgOut.
    2. Sau đây là một kết quả mẫu cho thấy msgIn và msgOut không bằng nhau. Điều này cho thấy rằng các thông báo không được đẩy từ Máy chủ Qpid đến Cơ sở dữ liệu Postgres.

  6. Nếu có sự không khớp trong các cột msgInmsgOut, hãy kiểm tra nhật ký Máy chủ Qpid /opt/apigee/var/log/edge-qpid-server/system.log và xem có lỗi nào không.
  7. Bạn có thể thấy các thông báo lỗi như "Probably PG is still down" (Có lẽ PG vẫn ngừng hoạt động) hoặc "FATAL: sorry, too many clients already" (FATAL: xin lỗi, đã có quá nhiều ứng dụng) như minh hoạ trong hình dưới đây:
    2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3
      WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be
      retriable - . Error observed while trying to connect to
      jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when
      execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d
      Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d]
    2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3
      WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection;
      nested exception is org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
    2017-07-28 09:56:53,617 pool-7-thread-1
      WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be
      retriable - . Error observed while trying to connect to
      jdbc:postgresql://PG_IP_address:5432/apigee
      Initial referenced UUID when execution started in this thread was
      a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used -
      [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d]
    2017-07-28 09:56:53,617 pool-7-thread-1
      WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection;
      nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create
      PoolableConnectionFactory (FATAL: sorry, too many clients already)

Điều này có thể xảy ra nếu Máy chủ Postgres đang chạy quá nhiều truy vấn SQL hoặc CPU đang chạy ở mức cao và do đó không thể phản hồi Máy chủ Qpid.

Độ phân giải

  1. Khởi động lại Máy chủ Postgres và PostgreSQL như minh hoạ bên dưới:
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. Việc khởi động lại này đảm bảo rằng tất cả các truy vấn SQL trước đó đều dừng và cho phép các kết nối mới với cơ sở dữ liệu Postgres.
  3. Tải lại trang tổng quan Analytics và kiểm tra xem dữ liệu Analytics có đang hiển thị hay không.

Nếu vấn đề vẫn tiếp diễn, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.

Triển khai Analytics không chính xác

Chẩn đoán

  1. Lấy trạng thái triển khai số liệu phân tích bằng cách sử dụng lệnh gọi API sau:
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
  2. Kiểm tra trạng thái của các máy chủ Qpid và Postgres trong kết quả của lệnh gọi API.
    1. Nếu trạng thái của máy chủ Qpid và Postgres là "SUCCESS" (THÀNH CÔNG), thì điều đó có nghĩa là các máy chủ phân tích đã được kết nối đúng cách. Chuyển đến phần UUID máy chủ Analytics cũ.
    2. Nếu trạng thái của máy chủ Qpid/Postgres là "UNKNOWN" (KHÔNG XÁC ĐỊNH) hoặc "FAILURE" (THẤT BẠI), thì điều đó cho thấy có vấn đề với máy chủ tương ứng.

      Ví dụ: trường hợp sau đây cho thấy trạng thái của các máy chủ Postgres là "UNKNOWN":

      Điều này có thể xảy ra nếu có lỗi trong quá trình tham gia Analytics. Lỗi này ngăn các thông báo từ Máy chủ quản lý đến được máy chủ Postgres.

Độ phân giải

Bạn thường có thể giải quyết vấn đề này bằng cách khởi động lại các máy chủ hiển thị trạng thái "FAILURE" (THẤT BẠI) hoặc "UNKNOWN" (KHÔNG XÁC ĐỊNH).

  1. Khởi động lại từng máy chủ có trạng thái kết nối Analytics là "FAILURE" (THẤT BẠI) hoặc "UNKNOWN" (KHÔNG XÁC ĐỊNH) bằng lệnh sau:
    /opt/apigee/apigee-service/bin/apigee-service component restart
  2. Ví dụ:
    1. Nếu bạn gặp vấn đề trên Máy chủ Qpid, hãy khởi động lại Máy chủ Qpid:
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    2. Nếu bạn thấy vấn đề này trên Máy chủ Postgres, hãy khởi động lại cả nút Máy chủ Postgres chính và phụ:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  3. Trong ví dụ trên, thông báo "UNKNOWN" (KHÔNG XÁC ĐỊNH) xuất hiện cho các máy chủ Postgres, vì vậy, bạn cần khởi động lại cả máy chủ Postgres chính và phụ:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

UUID máy chủ Analytics cũ

Chẩn đoán

  1. Lấy cấu hình phân tích bằng cách sử dụng lệnh gọi API sau:
    curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax

    Sau đây là kết quả mẫu từ API nêu trên:

    [ {
      "name" : "axgroup001",
      "properties" : {
        "consumer-type" : "ax"
      },
      "scopes" : [ "myorg~prod", "myorg~test" ],
      "uuids" : {
        "aries-datastore" : [ ],
        "postgres-server" : [ "6777...2db14" ],
        "dw-server" : [ ],
        "qpid-server" : [ "774e...fb23", "29f3...8c11" ]
      },
      "consumer-groups" : [ {
        "name" : "consumer-group-001",
        "consumers" : [ "774e...8c11" ],
        "datastores" : [ "6777...db14" ],
        "properties" : {
        }
      } ],
      "data-processors" : {
      }
    } ]
  2. Đảm bảo thông tin sau đây trong đầu ra là chính xác:
    1. tên org-env được liệt kê trong phần tử "scopes".
    2. UUID của máy chủ Postgres và máy chủ Qpid.
      • Lấy UUID của máy chủ Postgres bằng cách chạy lệnh sau trên từng nút máy chủ Postgres:
        curl 0:8084/v1/servers/self/uuid
      • Lấy UUID của Máy chủ Qpid bằng cách chạy lệnh sau trên từng nút máy chủ Qpid:
        curl 0:8083/v1/servers/self/uuid
  3. Nếu tất cả thông tin đều chính xác, hãy chuyển sang phần Dữ liệu Analytics không được gửi đến Cơ sở dữ liệu Postgres.
  4. Nếu UUID của máy chủ Postgres và/hoặc Qpid không chính xác, thì có thể Máy chủ quản lý đang tham chiếu đến UUID cũ.

Độ phân giải

Để xoá các UUID cũ và thêm UUID chính xác của các máy chủ, hãy liên hệ với Nhóm hỗ trợ Apigee Edge.