Menggunakan API metrik

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Apigee Edge merekam berbagai macam data operasional dan bisnis yang mengalir di seluruh API. Metrik yang berasal dari data ini berguna untuk pemantauan operasional dan pemantauan bisnis. Dengan menggunakan Analisis Edge API, Anda dapat, misalnya, menentukan API mana yang berperforma baik atau buruk, developer mana yang menghasilkan traffic bernilai tertinggi, dan aplikasi mana yang menyebabkan masalah terbanyak untuk layanan backend Anda.

Untuk membantu mengakses data metrik ini dengan mudah, Edge mengekspos RESTful API. Anda dapat menggunakan Metrics API saat Anda perlu mengotomatiskan fungsi Analytics tertentu, seperti mengambil metrik secara berkala menggunakan skrip atau klien otomatisasi. Anda juga dapat menggunakan API ini untuk membuat visualisasi Anda sendiri dalam bentuk widget kustom yang dapat disematkan di portal atau aplikasi kustom.

Untuk mempelajari cara menggunakan Analytics di UI pengelolaan API Edge, lihat Ringkasan Analisis API.

Tentang API metrik

Edge menyediakan dua API metrik:

  • Dapatkan metrik menampilkan metrik untuk organisasi dan lingkungan selama jangka waktu tertentu, seperti jam, hari, atau minggu.

    Misalnya, untuk minggu sebelumnya Anda ingin mendapatkan:

    • Jumlah error kebijakan
    • Waktu respons rata-rata
    • Total traffic
  • Atur metrik menurut dimensi akan menampilkan metrik selama jangka waktu tertentu untuk organisasi dan lingkungan yang dikelompokkan berdasarkan dimensi.

    Misalnya, pada minggu sebelumnya Anda menggunakan dimensi untuk mengelompokkan metrik menurut produk API, proxy API, dan email developer untuk mendapatkan:

    • Jumlah error kebijakan per produk API
    • Waktu respons rata-rata per proxy API
    • Total traffic per email developer

    API Get metrics enabled by dimensions mendukung fitur tambahan yang tidak didukung oleh API Get metrics, termasuk:

Tentang kuota API metrik

Edge menerapkan kuota berikut pada panggilan ini. Kuota didasarkan pada sistem backend yang menangani panggilan:

  • Postgres: 40 panggilan per menit
  • BigQuery: 12 panggilan per menit

Tentukan sistem backend yang menangani panggilan dengan memeriksa objek respons. Setiap objek respons berisi properti metaData yang mencantumkan layanan yang menangani panggilan di properti Source. Misalnya, untuk Postgres:

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

Untuk BigQuery, properti Source adalah:

"Source:Big Query"

Jika Anda melebihi kuota panggilan, API akan menampilkan respons HTTP 429.

Mendapatkan metrik dengan Management API

Perbedaan utama antara kedua API tersebut adalah Dapatkan metrik menampilkan metrik mentah untuk seluruh organisasi dan lingkungan. Sedangkan Membuat metrik diatur berdasarkan dimensi memungkinkan Anda mengelompokkan metrik berdasarkan jenis entity yang berbeda, seperti produk API, developer, dan aplikasi.

URL permintaan untuk Get metrics API adalah:

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

Untuk API Dapatkan metrik yang diatur menurut dimensi, Anda menyertakan resource tambahan ke URL setelah /stats yang menentukan dimensi yang diinginkan:

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

Misalnya, agar metrik dikelompokkan berdasarkan proxy API, gunakan URL berikut untuk memanggil API pengelolaan:

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

Menentukan metrik yang akan ditampilkan

Untuk API Get metrics dan API Get metricsaluring by dimensions, Anda menggunakan parameter kueri select untuk menentukan metrics yang akan diambil, dan fungsi agregasi opsional, dalam bentuk:

?select=metric

atau:

?select=aggFunction(metric)

Dengan keterangan:

  • metric menentukan data yang ingin Anda tampilkan. Misalnya, jumlah permintaan API, cache ditemukan, atau error kebijakan. Lihat metrics untuk tabel yang menentukan nama metrik yang akan digunakan dengan parameter kueri select.
  • aggFunction menentukan fungsi agregasi opsional yang dijalankan terhadap metrik. Misalnya, Anda dapat menggunakan fungsi agregasi berikut dengan metrik latensi pemrosesan:

    • avg: Menampilkan latensi pemrosesan rata-rata.
    • min: Menampilkan latensi pemrosesan minimum.
    • max: Menampilkan latensi pemrosesan maksimum.
    • sum: Menampilkan jumlah semua latensi pemrosesan.

    Tidak semua metrik mendukung semua fungsi agregasi. Dokumentasi tentang metrics berisi tabel yang menentukan nama metrik dan fungsi (sum, avg, min, max) yang didukung oleh metrik.

Misalnya, untuk menampilkan jumlah rata-rata transaksi, yang berarti permintaan proxy API, per detik:

?select=tps

Perhatikan bahwa contoh ini tidak memerlukan fungsi agregasi. Contoh berikutnya menggunakan fungsi agregasi untuk menampilkan jumlah hit cache:

?select=sum(cache_hit)

Anda dapat menampilkan beberapa metrik untuk satu panggilan API. Guna mendapatkan metrik untuk jumlah error kebijakan dan ukuran permintaan rata-rata, tetapkan parameter kueri select menggunakan daftar metrik yang dipisahkan koma:

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

Menentukan jangka waktu

Metrics API menampilkan data selama jangka waktu tertentu. Gunakan parameter kueri timeRange untuk menentukan jangka waktu, dalam bentuk:

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

Perhatikan %20 sebelum HH:MM. Parameter timeRange memerlukan karakter spasi yang dienkode URL sebelum HH:MM, atau karakter +, seperti pada: MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM.

Contoh:

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

Jangan menggunakan 24:00 sebagai waktu karena waktu telah mencapai pukul 00:00. Sebagai gantinya, gunakan 23:59.

Menggunakan pembatas

Untuk memisahkan beberapa dimensi dalam panggilan API, gunakan koma (,) sebagai pembatas. Misalnya, dalam panggilan 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

dimensi apis dan apps dipisahkan oleh ,.

Contoh panggilan API

Bagian ini berisi contoh penggunaan API Dapatkan metrik dan Mengelola metrik berdasarkan dimensi API. Lihat contoh Metrics API untuk contoh lainnya.

Menampilkan total jumlah panggilan yang dilakukan ke API Anda selama satu bulan

Untuk melihat jumlah total panggilan yang dilakukan ke semua API di organisasi dan lingkungan Anda selama satu bulan, gunakan Get metrics API:

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

Contoh Respons:

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

Menampilkan total jumlah pesan per proxy API selama dua hari

Dalam contoh ini, Anda menampilkan metrik jumlah permintaan yang diterima oleh semua proxy API selama periode dua hari. Parameter kueri select menentukan fungsi agregat sum untuk metrik message_count pada dimensi apiproxy. Laporan ini menampilkan throughput pesan permintaan untuk semua API untuk traffic yang diterima antara awal 20/6/2018 dan akhir 21/6/2018, dalam waktu 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

Contoh Respons:

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

Respons ini menunjukkan bahwa 1.100 pesan diterima oleh satu proxy API yang disebut 'target-reroute' yang berjalan di lingkungan pengujian antara awal 20/6/2018 dan akhir 21/6/2018.

Untuk mendapatkan metrik untuk dimensi lain, tentukan dimensi lain sebagai parameter URI. Misalnya, Anda dapat menentukan dimensi developer_app untuk mengambil metrik bagi aplikasi developer. Panggilan API berikut menampilkan total throughput (pesan yang diterima) dari semua aplikasi selama interval waktu yang ditentukan:

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

Contoh Respons:

{
  "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"
        }
  ]...
}

Mengurutkan hasil menurut peringkat relatif

Sering kali saat mendapatkan metrik, Anda hanya ingin mendapatkan hasil untuk subkumpulan dari total kumpulan data. Biasanya, Anda perlu mendapatkan hasil untuk "10 aplikasi teratas", misalnya, "10 API paling lambat teratas", "10 aplikasi paling aktif teratas". Anda dapat melakukannya menggunakan parameter kueri topk sebagai bagian dari permintaan.

Misalnya, Anda mungkin tertarik untuk mengetahui siapa developer teratas Anda, yang diukur berdasarkan throughput, atau apa yang memiliki performa terburuk (misalnya, 'topest paling lambat') didasarkan pada latensi.

topk (artinya entitas 'k teratas') memungkinkan pelaporan entitas yang terkait dengan nilai tertinggi untuk metrik tertentu. Hal ini memungkinkan Anda memfilter metrik untuk daftar entitas yang menunjukkan kondisi tertentu. Misalnya, untuk menemukan URL target mana yang paling rentan mengalami error selama seminggu terakhir, parameter topk ditambahkan ke permintaan, dengan nilai 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"
        }
      ]...
}

Hasil permintaan ini adalah kumpulan metrik yang menunjukkan bahwa URL target paling bug6 adalah http://api.company.com.

Anda juga dapat menggunakan parameter topk untuk mengurutkan API yang mengalami throughput tertinggi. Contoh berikut mengambil metrik pada API dengan peringkat teratas, yang ditentukan berdasarkan throughput tertinggi dalam seminggu terakhir:

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

Contoh Respons

{
  "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"
    }
  ]...
}

Memfilter hasil

Untuk tingkat perincian yang lebih besar, Anda dapat memfilter hasil untuk membatasi data yang ditampilkan. Saat menggunakan filter, Anda harus menggunakan dimensi sebagai properti filter.

Misalnya, anggaplah Anda perlu mengambil sejumlah error dari layanan backend yang difilter oleh kata kerja HTTP permintaan. Tujuan Anda adalah mencari tahu berapa banyak permintaan POST dan PUT yang menghasilkan error per layanan backend. Untuk melakukannya, gunakan dimensi target_url bersama dengan filter 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

Contoh respons:

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

Memberi nomor halaman pada hasil

Dalam lingkungan produksi, beberapa permintaan ke Edge analytics API menampilkan set data yang sangat besar. Untuk memudahkan penayangan set data besar dalam konteks aplikasi berbasis UI, API mendukung penomoran halaman secara native.

Untuk memberi nomor halaman hasil, gunakan parameter kueri offset dan limit, bersama dengan parameter pengurutan sortby untuk memastikan urutan item yang konsisten.

Misalnya, permintaan berikut cenderung akan menampilkan set data yang besar, karena permintaan tersebut mengambil metrik untuk semua error pada semua API di lingkungan produk selama seminggu terakhir.

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

Jika aplikasi berbasis UI dapat menampilkan 50 hasil per halaman secara wajar, Anda dapat menetapkan batasnya ke 50. Karena 0 dihitung sebagai item pertama, panggilan berikut menampilkan item 0-49 dalam urutan menurun (sort=DESC adalah default).

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

Untuk 'halaman' hasil kedua, gunakan parameter kueri offset, seperti berikut. Perhatikan bahwa batas dan offset sama. Hal itu karena 0 dihitung sebagai item pertama. Dengan batas 50 dan offset 0, item 0-49 akan ditampilkan. Dengan offset 50, item 50-99 ditampilkan.

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