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 dữ liệu về hoạt động và kinh doanh lưu chuyển trên các API. Các chỉ số thu được từ dữ liệu này rất hữu ích cho việc theo dõi hoạt động và giám sát hoạt động kinh doanh. Chẳng hạn, khi sử dụng Edge API Analytics, bạn có thể xác định API nào đang hoạt động hiệu quả hoặc kém, nhà phát triển nào đang mang lại 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 đối với các dịch vụ phụ trợ của bạn.

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

Để tìm hiểu cách sử dụng Analytics trong giao diện người dùng quản lý API 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ố:

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

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

    • Số lượng lỗi về chính sách
    • Thời gian trả lời trung bình
    • Tổng lưu lượng truy cập
  • Sắp xếp các chỉ số được sắp xếp theo phương diện sẽ 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ụ: trong tuần trước, bạn sử dụng các phương diện để nhóm các chỉ số theo sản phẩm API, proxy API và email của nhà phát triển để có được:

    • Số lỗi 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 trên mỗi email nhà phát triển

    API Tải các chỉ số được sắp xếp theo phương diện hỗ trợ các tính năng khác mà API Lấy chỉ số không hỗ trợ, bao gồm:

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

Edge thực thi các hạn mức sau cho 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ý lệnh 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ý cuộc 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 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ụ: đố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 cuộc gọi, API sẽ trả về phản hồi HTTP 429.

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

Điểm khác biệt chính giữa 2 API này là tính năng Lấy chỉ số trả về các chỉ số thô cho toàn bộ tổ chức và môi trường, còn tính năng 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 Lấy chỉ số là:

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

Đối với API Sắp xếp các chỉ số được sắp xếp theo phương diện, bạn sẽ 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 sẽ 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 các chỉ số cần trả về

Đối với cả API Lấy chỉ sốSắp xếp các chỉ số theo phương diện, bạn sẽ sử dụng tham số truy vấn select để chỉ định metrics cần truy xuất và một hàm tổng hợp không bắt buộc có dạng như sau:

?select=metric

hoặc:

?select=aggFunction(metric)

Trong trường hợp:

  • chỉ số chỉ định dữ liệu mà 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. Hãy xem metrics 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 theo 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 của tất cả độ trễ xử lý.

    Không phải chỉ số nào cũng hỗ trợ tất cả hàm tổng hợp. Tài liệu về metrics có 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ố lượng giao dịch trung bình (tức là số yêu cầu proxy API) mỗi giây:

?select=tps

Xin 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ử dụng hàm tổng hợp để trả về tổng số 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. Để xem các chỉ số cho tổng số lỗi 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 cách sử dụng danh sách các chỉ số được phân tách bằng dấu phẩy:

?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 tham số truy vấn timeRange để chỉ định khoảng thời gian, theo biểu mẫu:

?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 sử dụng 24:00 làm thời gian vì nó diễn ra vào khoảng 00:00. Thay vào đó, hãy sử dụng tỷ lệ 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 tá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 kích thước apisapps được phân tách bằng ,.

Lệnh gọi API mẫu

Phần này trình bày các ví dụ về cách sử dụng các API Nhận chỉ sốNhận các chỉ số được sắp xếp theo phương diện. Hãy xem các ví dụ về API Chỉ số để biết thêm ví dụ.

Trả về tổng số lệnh gọi được thực hiện đến các API của bạn trong một tháng

Để xem tổng số lệnh gọi được thực hiện đến tất cả cá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 Lấy 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

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

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

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

Trong ví dụ này, bạn sẽ trả về các chỉ số cho số lượng yêu cầu mà tất cả các proxy API nhận được trong khoảng thời gian 2 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 này trả về thông lượng thông báo yêu cầu cho tất cả API cho lưu lượng truy cập nhận được từ đầu ngày 20 tháng 6 năm 2018 đến cuối ngày 21 tháng 6 năm 2018 theo 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

Câu trả lờ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.100 thông báo đã nhận được qua một proxy API có tên là "target-reroute" chạy trong môi trường thử nghiệm trong khoảng thời gian từ ngày 20/6/2018 đến cuối ngày 21/6/2018.

Để lấy 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. Ví dụ: bạn có thể chỉ định phương diện developer_app để truy xuất chỉ số cho các ứng dụng của nhà phát triển. Lệnh gọi API sau đây trả về tổng công suất (thông báo nhận được) từ ứng dụng bất kỳ trong một khoảng thời gian đã 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

Câu trả lờ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 các chỉ số, bạn chỉ muốn nhận kết quả cho một tập hợp con trong tổng tập dữ liệu. Thông thường, bạn cần lấy kết quả cho "10 ứng dụng hàng đầu", ví dụ: "10 API chậm nhất hàng đầu", "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 trong yêu cầu.

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

topk (có nghĩa là thực thể "k hàng đầu") cho phép báo cáo về những thực thể liên kết với giá trị cao nhất của một chỉ số nhất định. Thao tác này cho phép bạn lọc các chỉ số cho danh sách các thực thể minh hoạ cho một điều kiện cụ thể. Ví dụ: để tìm URL mục tiêu dễ gặp lỗi nhất trong tuần qua, tham số topk sẽ được thêm vào yêu cầu, với 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 bị lỗi nhất là http://api.company.com.

Bạn cũng có thể sử dụng tham số topk để sắp xếp các API có thông lượng cao nhất. 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 công suất cao nhấ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ả

Để xem thông tin chi tiết hơn, bạn có thể lọc kết quả nhằm giới hạn dữ liệu được trả về. Khi sử dụng bộ lọc, bạn phải dùng các 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 có bao nhiêu yêu cầu POST và PUT đang tạo ra lỗi trên mỗi dịch vụ phụ trợ. Để làm điều này, hãy 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 thực tế, một số yêu cầu đối với API phân tích Edge sẽ trả về các tập dữ liệu rất lớn. Để giúp dễ dàng hiển thị các tập dữ liệu lớn trong bối cảnh của ứng dụng dựa trên giao diện người dùng, API sẵn hỗ trợ 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 các mục.

Ví dụ: yêu cầu sau đây có thể sẽ 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ả lỗi trên mọi 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, thì bạn có thể đặt giới hạn là 50. Vì 0 được tính là mục đầu tiên, nên lệnh gọi sau đây trả về các mục từ 0-49 theo thứ tự giảm dần (sort=DESC là giá trị 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' kết quả thứ hai, hãy sử dụng tham số truy vấn chênh lệch như sau. Xin lưu ý rằng giới hạn và độ lệch là giống nhau. Lý do là 0 được tính là mục đầu tiên. Với giới hạn là 50 và độ lệch là 0, các mục từ 0 đến 49 sẽ được trả về. Với độ lệch là 50, các mục từ 50 đến 99 sẽ được 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