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.
Chuyển đến tài liệu về Apigee X.
thông tin

Triệu chứng

Trang tổng quan phân tích (Hiệu suất 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 lỗi có thể ghi nhận được.

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

Bảng sau liệt kê các 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 môi trường tổ chức Edge dành cho người dùng Đá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 Edge dành cho người dùng Đám mây riêng tư
Dữ liệu Analytics không được đẩy sang Cơ sở dữ liệu Postgres Edge dành cho người dùng Đám mây riêng tư
Triển khai Analytics không chính xác Edge dành cho người dùng Đám mây riêng tư
Mã nhận dạng đã lỗi thời của máy chủ Analytics Edge dành cho người dùng Đám mây riêng tư

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

Chẩn đoán

  1. Kiểm tra xem có lưu lượng truy cập cho Proxy API trên môi trường tổ chức 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 pháp sau:
    1. Bật tính năng theo dõi cho bất kỳ API nào đang được người dùng của bạn sử dụng và kiểm tra xem bạn có nhận được yêu cầu nào trong dấu vết 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 các Proxy API trong khoảng thời gian cụ thể hay không).
    3. Nếu bạn ghi nhật ký thông tin từ các Proxy API 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 các Proxy API 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 về số liệu 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. Hãy chờ vài giây, sau đó xem trang tổng quan về số liệu phân tích trong thẻ Giờ và xem dữ liệu có xuất hiện hay không.
  3. Nếu sự cố vẫn tiếp diễn, hãy chuyển đến 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

Triệu chứng

Đầu tiên, hãy xác định xem dữ liệu Analytics mới nhất trong cơ sở dữ liệu Postgres có sẵn hay không.

Cách kiểm tra xem dữ liệu Analytics mới nhất có trong nút chính của Postgres 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 Master Postgres 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 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ì có nghĩa là cơ sở dữ liệu Postgres không có dữ liệu. Nguyên nhân có thể dẫn đến sự cố này là dữ liệu không được đẩy từ Máy chủ Qpid sang cơ sở dữ liệu Postgres. Tiếp tục với phần Dữ liệu Analytics không được đẩy vào 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 dưới đây để chẩn đoán lý do khiến 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à sử dụng API từ một trong các trang tổng quan phân tích theo các bước dưới đây:
    1. Chọn thẻ Mạng từ 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ụ cho nhà phát triển, hãy chọn thẻ "Tiêu đề" rồi để ý phần "Yêu cầu URL".
  2. Dưới đây là kết quả mẫu từ Công cụ cho nhà phát triển:

    Kết quả mẫu cho thấy API dùng trong Trang tổng quan về hiệu suất proxy từ thẻ Mạng trong trang Công cụ dành cho nhà phát triển dành cho trang tổng quan về Hiệu suất 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. Dưới đâ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 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 phản hồi thành công nhưng không có dữ liệu nào, thì tức là Máy chủ quản lý không thể tìm nạp dữ liệu từ máy chủ Postgres do vấn đề về 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ó bất kỳ hạn chế tường lửa nào trên 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 Máy chủ quản lý không lấy được 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ế về tường lửa thì sự cố này có thể là do sự cố mạng.
  3. Nếu xảy ra sự cố mạng trên Máy chủ quản lý, việc khởi động lại có thể khắc phục được vấn đề.
  4. Lần lượt khởi động lại tất cả 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 Bộ phận hỗ trợ Apigee.

Dữ liệu Analytics không được đẩy sang Cơ sở dữ liệu Postgres

Chẩn đoán

Nếu dữ liệu không được đẩy từ Máy chủ Qpid sang Cơ sở dữ liệu Postgres như xác định trong phần 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 từng Máy chủ Qpid đã được thiết lập và đang chạy hay chưa bằng cách thực thi lệnh bên dưới:
    /opt/apigee/bin/apigee-service edge-qpid-server status
    
  2. Nếu có máy chủ Qpid nào gặp sự cố, hãy khởi động lại máy chủ đó. Nếu không, hãy chuyển sang bước 5.
    /opt/apigee/bin/apigee-service edge-qpid-server restart
    
  3. Hãy đợ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 chưa.
    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 dưới đây để kiểm tra xem có dữ liệu mới nhất 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 tiếp tục thực hiện các bước sau.
  5. Kiểm tra xem thông báo trong hàng đợi máy chủ Qpid có được đẩy đế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. Dưới đây là kết quả mẫu cho thấy msgIn và msgOut không bằng nhau. Điều này cho biết rằng các thông báo không được đẩy từ Máy chủ Qpid sang Cơ sở dữ liệu Postgres.

  6. Nếu có kết quả 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 thông báo lỗi như "Có lẽ PG vẫn không hoạt động" hoặc "FATAL: Xin lỗi, có quá nhiều khách hàng" như 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 nên 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ư hình 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 mọi truy vấn SQL trước đó đều được dừng lại và sẽ 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 sự cố vẫn tiếp diễn, hãy liên hệ với Bộ phận hỗ trợ của Apigee.

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

Chẩn đoán

  1. Xem trạng thái triển khai Analytics 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 máy chủ Qpid và Postgres qua 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 hiển thị là " THÀNH CÔNG", thì tức là máy chủ phân tích đã được kết nối đúng cách. Chuyển đến phần Mã nhận dạng duy nhất (UUID) cũ cho máy chủ Analytics.
    2. Nếu trạng thái của máy chủ Qpid/Postgres hiện là "UNKNOWN" (KHÔNG XÁC ĐỊNH) hoặc "FAILURE" thì tức là đã xảy ra sự cố với máy chủ tương ứng.

      Ví dụ: tình huống sau đây sẽ cho thấy trạng thái của máy chủ Postgres là "UNKNOWN" (KHÔNG XÁC ĐỊNH):

      Điều này có thể xảy ra nếu xảy ra lỗi trong quá trình bắt đầu sử dụng số liệu phân tích. Lỗi này khiến thông báo từ Máy chủ quản lý không đến được máy chủ Postgres.

Độ phân giải

Thông thường, bạn có thể giải quyết sự cố này bằng cách khởi động lại các máy chủ hiển thị trạng thái "FAILURE" hoặc "UNKNOWN".

  1. Khởi động lại từng máy chủ có trạng thái đấu dây phân tích là "FAILURE" 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 các máy chủ Qpid đó:
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
      
    2. Nếu bạn gặp vấn đề trên Máy chủ Postgres, hãy khởi động lại cả nút Máy chủ chính và Máy chủ Postgres:
      /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 đối với máy chủ Postgres, vì vậy, bạn cần khởi động lại cả máy chủ Chính và Máy chủ Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

Mã nhận dạng cũ (UUID) của máy chủ Analytics

Chẩn đoán

  1. Lấy cấu hình Analytics bằng lệnh gọi API sau:
    curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
    

    Dưới đây là kết quả mẫu từ API 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 dữ liệu đầu ra là chính xác:
    1. tên org-env được liệt kê trong phần tử "scopes".
    2. Mã nhận dạng duy nhất (UUID) của máy chủ Postgres và máy chủ Qpid.
      • Lấy mã nhận dạng duy nhất (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 mã nhận dạng duy nhất (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 đến phần Dữ liệu Analytics không được đẩy sang Cơ sở dữ liệu Postgres.
  4. Nếu mã nhận dạng duy nhất (UUID) của máy chủ Postgres và/hoặc Qpid là không chính xác, thì có thể Máy chủ quản lý đang tham chiếu đến các UUID cũ.

Độ phân giải

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