Sử dụng các API chỉ số

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

Apigee Edge ghi lại nhiều loại nội dung dữ liệu hoạt động và kinh doanh luân chuyển giữa các API. Các chỉ số bắt nguồn từ dữ liệu này là rất hữu ích cho việc giám sát hoạt động và giám sát doanh nghiệp. Khi sử dụng Edge API Analytics, bạn có thể ví dụ: xác định API nào đang hoạt động tốt hay kém, nhà phát triển nào đang cung cấp lưu lượng truy cập có giá trị cao nhất và ứng dụng nào đang gây ra nhiều vấn đề nhất cho các dịch vụ phụ trợ của bạn.

Để giúp truy cập dễ dàng vào dữ liệu chỉ số này, Edge hiển thị API RESTful. Bạn có thể sử dụng API chỉ số khi bạn cần tự động hoá một số chức năng nhất định của Analytics, chẳng hạn như truy xuất các chỉ số định kỳ bằng cách sử dụng tập lệnh hoặc ứng dụng tự động hoá. Bạn cũng có thể sử dụng API để tự tạo hiển thị trực quan dưới dạng tiện ích tuỳ chỉnh mà bạn có thể nhúng vào cổng thông tin hoặc ứng dụng tuỳ chỉnh.

Để tìm hiểu cách sử dụng Analytics trong API Giao diện người dùng quản lý Edge, hãy xem bài viết Tổng quan về API Analytics.

Giới thiệu về API chỉ số

Edge cung cấp 2 API chỉ số:

  • Xem chỉ số sẽ trả về các chỉ số cho một tổ chức và môi trường trong một khoảng thời gian nhất định, chẳng hạn như một giờ, một ngày hoặc một tuần.

    Ví dụ: trong tuần trước, bạn muốn nhận được:

    • Số lỗi về chính sách
    • Thời gian phản hồi trung bình
    • Tổng lưu lượng truy cập
  • Sắp xếp các chỉ số theo phương diện trả về các chỉ số trong một khoảng thời gian cho một tổ chức và môi trường được nhóm theo phương diện.

    Ví dụ: đối với tuần trước, bạn sử dụng phương diện để nhóm các chỉ số theo sản phẩm API, proxy API, và email nhà phát triển để nhận:

    • Số lỗi về chính sách trên mỗi sản phẩm API
    • Thời gian phản hồi trung bình trên mỗi proxy API
    • Tổng lưu lượng truy cập theo email nhà phát triển

    Thẻ Sắp xếp các chỉ số theo phương diện API hỗ trợ các tính năng khác mà Xem chỉ số không hỗ trợ API, bao gồm:

Giới thiệu về hạn mức API chỉ số

Edge thực thi các hạn mức sau đây đối với các lệnh gọi này. Hạn mức này dựa trên hệ thống phụ trợ xử lý cuộc gọi:

  • Postgres: 40 cuộc gọi mỗi phút
  • BigQuery: 12 cuộc gọi mỗi phút

Xác định hệ thống phụ trợ xử lý lệnh gọi bằng cách kiểm tra đối tượng phản hồi. Mỗi đối tượng phản hồi đều chứa một thuộc tính metaData liệt kê dịch vụ đã xử lý lệnh gọi trong thuộc tính Source. Ví dụ như đối với Postgres:

{
  ...
  "metaData": {
    "errors": [],
    "notices": [
      "Source:Postgres",
      "Table used: xxxxxx.yyyyy",
      "query served by:111-222-333"
    ]
  }
}

Đối với BigQuery, thuộc tính Source là:

"Source:Big Query"

Nếu bạn vượt quá hạn mức lệnh gọi, API sẽ trả về phản hồi HTTP 429.

Lấy chỉ số bằng API quản lý

Sự khác biệt chính giữa 2 API là Lấy chỉ số trả về các chỉ số thô cho toàn bộ tổ chức và môi trường, trong khi Sắp xếp các chỉ số theo phương diện cho phép bạn nhóm các chỉ số theo nhiều loại thực thể, chẳng hạn như sản phẩm API, nhà phát triển và ứng dụng.

URL yêu cầu cho API Nhận chỉ số là:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats

Đối với thẻ Sắp xếp các chỉ số theo phương diện API, bạn thêm một tài nguyên bổ sung vào URL sau /stats để chỉ định phương diện mong muốn:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/dimension

Ví dụ: để nhận các chỉ số được nhóm theo proxy API, bạn nên sử dụng URL sau để gọi API quản lý:

https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/apiproxy

Chỉ định chỉ số cần trả về

Đối với cả hai thuộc tính Xem chỉ sốSắp xếp các chỉ số theo phương diện Các API mà bạn sử dụng tham số truy vấn select để chỉ định chỉ số để truy xuất và một hàm tổng hợp không bắt buộc, ở dạng:

?select=metric

hoặc:

?select=aggFunction(metric)

Trong trường hợp:

  • chỉ số chỉ định dữ liệu bạn muốn trả về. Ví dụ: số lượng yêu cầu API, số lượt truy cập vào bộ nhớ đệm hoặc lỗi chính sách. Xem phần chỉ số cho bảng chỉ định tên chỉ số để sử dụng với tham số truy vấn select.
  • aggFunction chỉ định hàm tổng hợp không bắt buộc chạy dựa trên chỉ số. Ví dụ: bạn có thể sử dụng các hàm tổng hợp sau đây với chỉ số độ trễ xử lý:

    • avg: Trả về độ trễ xử lý trung bình.
    • min: Trả về độ trễ xử lý tối thiểu.
    • max: Trả về độ trễ xử lý tối đa.
    • sum: Trả về tổng tất cả độ trễ xử lý.

    Không phải chỉ số nào cũng hỗ trợ toàn bộ hàm tổng hợp. Tài liệu về chỉ số chứa một bảng chỉ định tên chỉ số và hàm (sum, avg, min, max) mà chỉ số hỗ trợ.

Ví dụ: để trả về số giao dịch trung bình, nghĩa là các yêu cầu proxy API mỗi giây:

?select=tps

Lưu ý rằng ví dụ này không yêu cầu hàm tổng hợp. Ví dụ tiếp theo sẽ sử dụng hàm tổng hợp để trả về tổng các lượt truy cập vào bộ nhớ đệm:

?select=sum(cache_hit)

Bạn có thể trả về nhiều chỉ số cho một lệnh gọi API. Cách xem chỉ số về tổng số lỗi vi phạm chính sách và kích thước trung bình của yêu cầu, hãy đặt tham số truy vấn select bằng dấu phẩy danh sách chỉ số:

?select=sum(policy_error),avg(request_size)

Chỉ định khoảng thời gian

API Chỉ số trả về dữ liệu trong một khoảng thời gian nhất định. Sử dụng timeRange tham số truy vấn để chỉ định khoảng thời gian, ở dạng:

?timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM

Hãy lưu ý %20 trước HH:MM. Tham số timeRange yêu cầu một ký tự dấu cách được mã hoá URL trước HH:MM hoặc một ký tự +, như trong: MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM.

Ví dụ:

?timeRange=03/01/2018%2000:00~03/30/2018%2023:59

Đừng dùng 24:00 làm thời gian vì nó kết thúc vào khoảng 00:00. Hãy sử dụng 23:59.

Sử dụng dấu phân cách

Để phân tách nhiều phương diện trong lệnh gọi API, hãy sử dụng dấu phẩy (,) làm dấu phân cách. Ví dụ: trong lệnh gọi API

curl https://api.enterprise.apigee.com/v1/o/myorg/e/prod/stats/apis,apps?select=sum(message_count)&timeRange=9/24/2018%2000:00~10/25/2018%2000:00&timeUnit=day

các phương diện apisapps được phân tách bằng ,.

Lệnh gọi API mẫu

Phần này bao gồm các ví dụ về cách sử dụng bảng Nhận chỉ sốSắp xếp các chỉ số theo phương diện API. Hãy tham khảo bài viết Ví dụ về API Chỉ số để biết thêm ví dụ.

Trả về tổng số lệnh gọi đã thực hiện tới API trong một tháng

Để xem tổng số lệnh gọi được thực hiện tới tất cả API trong tổ chức và môi trường của bạn trong một tháng, hãy sử dụng API Nhận chỉ số:

curl -v "https://api.enterprise.apigee.com/v1/o/{org}/e/{env}/stats/?select=sum(message_count)&timeRange=03/01/2018%2000:00~03/31/2018%2023:59" \
-u email:password

Phản hồi mẫu:

{
  "environments": [
    {
      "metrics": [
        {
          "name": "sum(message_count)",
          "values": [
            "7.44944088E8"
          ]
        }
      ],
      "name": "prod"
    }
  ],
...
}

Trả về tổng số thư trên mỗi proxy API trong hai ngày

Trong ví dụ này, bạn trả về chỉ số cho số lượng yêu cầu mà tất cả proxy API nhận được trong khoảng thời gian hai ngày. Tham số truy vấn select xác định hàm tổng hợp sum cho chỉ số message_count trên phương diện apiproxy. Báo cáo trả về thông lượng thông báo yêu cầu cho tất cả các API cho lưu lượng truy cập nhận được trong khoảng thời gian từ ngày 20/6/2018 đến hết ngày 21/6/2018, trong Giờ UTC:

curl  https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59" \
-u email:password

Phản hồi mẫu:

{
  "environments" : [ {
    "dimensions" : [ {
      "metrics" : [ {
        "name" : "sum(message_count)",
        "values" : [ {
          "timestamp" : 1498003200000,
          "value" : "1100.0"
        } ]
      } ],
      "name" : "target-reroute"
    } ],
    "name" : "test"
  } ]...
}

Phản hồi này cho biết rằng 1 proxy API có tên là đã nhận được 1100 thông báo "định tuyến lại mục tiêu" chạy trong môi trường thử nghiệm từ đầu ngày 20/6/2018 đến cuối 21/6/2018.

Để nhận chỉ số cho các phương diện khác, hãy chỉ định một phương diện khác làm tham số URI. Cho Ví dụ: bạn có thể chỉ định phương diện developer_app để truy xuất chỉ số cho ứng dụng của nhà phát triển. Lệnh gọi API sau đây trả về tổng thông lượng (tin nhắn đã nhận) từ mọi ứng dụng cho khoảng thời gian được chỉ định:

curl  https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/developer_app?"select=sum(message_count)&timeRange=06/20/2018%2000:00~06/21/2018%2023:59&timeUnit=day" \
-u email:password

Phản hồi mẫu:

{
  "environments": [
    {
      "dimensions": [
        {
          "metrics": [
            {
              "name": "sum(message_count)",
              "values": [
                {
                  "timestamp": 1498003200000,
                  "value": "886.0"
                }
              ]
            }
          ],
          "name": "Test-App"
        },
        {
          "metrics": [
            {
              "name": "sum(message_count)",
              "values": [
                {
                  "timestamp": 1498003200000,
                  "value": "6645.0"
                }
              ]
            }
          ],
          "name": "johndoe_app"
        },
        {
          "metrics": [
            {
              "name": "sum(message_count)",
              "values": [
                {
                  "timestamp": 1498003200000,
                  "value": "1109.0"
                }
              ]
            }
          ],
          "name": "marys_app"
        }
  ]...
}

Sắp xếp kết quả theo thứ hạng tương đối

Nhiều khi nhận được chỉ số, bạn chỉ muốn nhận kết quả cho một tập hợp con của tổng tập hợp . Thông thường, bạn cần nhận được kết quả cho "10 hàng đầu", ví dụ: "10 chậm nhất API", "10 ứng dụng hoạt động nhiều nhất". Bạn có thể thực hiện việc này bằng cách sử dụng tham số truy vấn topk như một phần của yêu cầu.

Ví dụ: bạn có thể muốn biết ai là nhà phát triển hàng đầu của bạn, được đo lường theo công suất, hoặc yếu tố nào hoạt động kém nhất (ví dụ: API mục tiêu "chậm nhất hàng đầu") có độ trễ.

topk (có nghĩa là "k thực thể hàng đầu") cho phép báo cáo về các thực thể được liên kết có giá trị cao nhất cho một chỉ số nhất định. Điều này cho phép bạn lọc các chỉ số cho danh sách thực thể thể hiện một điều kiện cụ thể. Ví dụ: để tìm xem URL mục tiêu nào là hay gặp lỗi nhất trong tuần qua, nên tham số topk sẽ được thêm vào yêu cầu, có giá trị 1:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&topk=1" \
  -u email:password
{
  "environments": [
    {
      "dimensions": [
        {
          "metrics": [
            {
              "name": "sum(is_error)",
              "values": [
                {
                  "timestamp": 1494201600000,
                  "value": "12077.0"
                }
              ]
            }
          ],
          "name": "http://api.company.com"
        }
      ]...
}

Kết quả của yêu cầu này là một tập hợp các chỉ số cho thấy rằng URL mục tiêu lỗi http://api.company.com.

Bạn cũng có thể sử dụng tham số topk để sắp xếp các API có hiệu suất cao nhất thông lượng. Ví dụ sau đây truy xuất các chỉ số trên API có thứ hạng cao nhất, được xác định theo giá trị cao nhất công suất trong tuần trước:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(message_count)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=day&sortby=sum(message_count)&sort=DESC&topk=1" \
-u email:password

Phản hồi mẫu

{
  "environments": [
    {
      "dimensions": [
        {
          "metrics": [
            {
              "name": "sum(message_count)",
              "values": [
                {
                  "timestamp": 1494720000000,
                  "value": "5750.0"
                },
                {
                  "timestamp": 1494633600000,
                  "value": "5752.0"
                },
                {
                  "timestamp": 1494547200000,
                  "value": "5747.0"
                },
                {
                  "timestamp": 1494460800000,
                  "value": "5751.0"
                },
                {
                  "timestamp": 1494374400000,
                  "value": "5753.0"
                },
                {
                  "timestamp": 1494288000000,
                  "value": "5751.0"
                },
                {
                  "timestamp": 1494201600000,
                  "value": "5752.0"
                }
              ]
            }
          ],
          "name": "testCache"
        }
      ],
      "name": "test"
    }
  ]...
}

Đang lọc kết quả

Để có độ chi tiết cao hơn, bạn có thể lọc kết quả để giới hạn dữ liệu được trả về. Khi sử dụng bộ lọc, bạn phải sử dụng phương diện làm thuộc tính bộ lọc.

Ví dụ: giả sử bạn cần truy xuất số lượng lỗi từ các dịch vụ phụ trợ được lọc theo động từ HTTP của yêu cầu. Mục tiêu của bạn là tìm hiểu số lượng yêu cầu POST và PUT đang tạo lỗi cho mỗi dịch vụ phụ trợ. Để làm như vậy, bạn sử dụng phương diện target_url cùng với bộ lọc request_verb:

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/target_url?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&filter=(request_verb%20in%20'POST','PUT')" \
-u email:password

Câu trả lời mẫu:

{
  "environments" : [
    {
      "dimensions" : [
        {
          "metrics" : [
            {
              "name" : "sum(is_error)",
              "values" : [
                {
                  "timestamp" : 1519516800000,
                  "value" : "1.0"
                }
              ]
          }
        ],
        "name" : "testCache"
        }
      ],
      "name" : "test"
    }
  ]...
}

Phân trang kết quả

Trong môi trường phát hành chính thức, một số yêu cầu đối với API Analytics của Edge sẽ trả về lượng dữ liệu rất lớn bộ. Để dễ dàng hiển thị các tập dữ liệu lớn trong ngữ cảnh ứng dụng dựa trên giao diện người dùng, API hỗ trợ sẵn tính năng phân trang.

Để phân trang kết quả, hãy sử dụng tham số truy vấn offsetlimit, cùng với tham số sắp xếp sortby để đảm bảo thứ tự nhất quán của mục.

Ví dụ: yêu cầu sau đây có thể trả về một tập dữ liệu lớn, vì yêu cầu này truy xuất chỉ số cho tất cả các lỗi trên tất cả API trong môi trường sản phẩm trong tuần trước.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)" \
-u email:password

Nếu ứng dụng dựa trên giao diện người dùng của bạn có thể hiển thị hợp lý 50 kết quả trên mỗi trang, bạn có thể đặt giới hạn đến 50. Vì 0 được tính là mục đầu tiên, nên lệnh gọi sau sẽ trả về các mục từ 0 đến 49 theo thứ tự giảm dần đơn đặt hàng (sort=DESC là mặc định).

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=0" \
-u email:password

Đối với 'trang' thứ hai của kết quả, hãy sử dụng tham số truy vấn độ lệch như sau. Lưu ý rằng giới hạn và chênh lệch là giống nhau. Đó là vì 0 được tính là mục đầu tiên. Với giới hạn là 50 và chênh lệch bằng 0, các mục từ 0 đến 49 được trả về. Với chênh lệch là 50, các mặt hàng từ 50-99 sẽ bị trả về.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env}/stats/apiproxy?"select=sum(is_error)&timeRange=05/08/2018%2000:00~05/15/2018%2000:00&timeUnit=week&sortby=sum(is_error)&limit=50&offset=50" \
-u email:password