Metrik API'lerini kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Apigee Edge, API'ler arasında geçiş yapan çok çeşitli operasyonel verileri ve iş verilerini kaydeder. Bu verilerden türetilen metrikler, operasyonel izleme ve iş izleme için kullanışlıdır. Örneğin, Edge API Analytics'i kullanarak hangi API'lerin iyi veya kötü performans gösterdiğini, hangi geliştiricilerin en yüksek değerde trafik sağladığını ve arka uç hizmetlerinizde en fazla soruna hangi uygulamaların neden olduğunu belirleyebilirsiniz.

Edge, bu metrik verilerine kolayca erişmek için RESTful API sunar. Bir otomasyon istemcisi veya komut dosyası kullanarak metrikleri düzenli olarak almak gibi belirli Analytics işlevlerini otomatikleştirmeniz gerektiğinde metrikler API'sini kullanabilirsiniz. API'yi, portallara veya özel uygulamalara yerleştirebileceğiniz özel widget'lar biçiminde kendi görselleştirmelerinizi oluşturmak için de kullanabilirsiniz.

API Edge yönetim kullanıcı arayüzünde Analytics'i nasıl kullanacağınızı öğrenmek için API Analytics'e genel bakış sayfasına göz atın.

Metrik API'leri hakkında

Edge iki metrik API'si sağlar:

  • Metrikleri al, kuruluş ve ortam ile ilgili saat, gün veya hafta gibi belirli bir süre boyunca metrikler döndürür.

    Örneğin, önceki hafta için şunu almak istiyorsunuz:

    • Politika hatalarının sayısı
    • Ortalama yanıt süresi
    • Toplam trafik
  • Metrikleri boyutlara göre düzenle seçeneği, boyuta göre gruplandırılmış bir kuruluş ve ortam için belirli bir dönemdeki metrikleri döndürür.

    Örneğin, önceki hafta metrikleri kullanarak şu metrikleri elde ettiniz: API ürününe, API proxy'sine ve geliştirici e-posta adresine göre gruplayın:

    • API ürünü başına politika hatası sayısı
    • API proxy'si başına ortalama yanıt süresi
    • Geliştirici e-postası başına toplam trafik

    Metrikleri boyutlara göre düzenleyin API'si, Metrikleri al API'si tarafından desteklenmeyen ek özellikleri destekler. Örneğin:

Metric API kotaları hakkında

Edge bu çağrılarda aşağıdaki kotaları uygular. Kota, çağrıyı işleyen arka uç sistemine bağlıdır:

  • Postgres: Dakikada 40 çağrı
  • BigQuery: Dakikada 12 çağrı

Yanıt nesnesini inceleyerek çağrıyı işleyen arka uç sistemini belirleyin. Her yanıt nesnesi, çağrıyı Source özelliğinde işleyen hizmeti listeleyen bir metaData özelliği içerir. Örneğin, Postgres için:

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

BigQuery'de Source özelliği:

"Source:Big Query"

Çağrı kotasını aşarsanız API, HTTP 429 yanıtı döndürür.

Management API ile metrikleri alma

İki API arasındaki temel fark şudur: Metrikleri al, tüm kuruluş ve ortam için ham metrikler döndürürken, Metrikleri boyutlara göre düzenleyin, metrikleri API ürünü, geliştirici ve uygulama gibi farklı varlık türlerine göre gruplandırmanıza olanak tanır.

Metrik al API'sinin istek URL'si şu şekildedir:

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

Metrikleri boyutlara göre organize etme API'sinde, /stats ifadesinden sonra istenen boyutu belirten URL'ye ek bir kaynak eklersiniz:

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

Örneğin, metrikleri API proxy'sine göre gruplandırmak için aşağıdaki URL'yi kullanarak Management API'yi çağırırsınız:

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

Döndürülecek metrikleri belirleme

Hem Metrikleri alma hem de Metrikleri boyutlara göre organize etme API'lerinde, alınacak metrics belirtmek için select sorgu parametresini ve isteğe bağlı bir toplama işlevini şu biçimde kullanın:

?select=metric

veya:

?select=aggFunction(metric)

Burada:

  • metric , döndürmek istediğiniz verileri belirtir. Örneğin, API isteklerinin, önbellek isabetlerinin veya politika hatalarının sayısı. select sorgu parametresiyle kullanılacak metrik adını belirten bir tablo için metrics bölümüne bakın.
  • aggFunction, metriğe göre çalıştırılan isteğe bağlı toplama işlevini belirtir. Örneğin, işleme gecikmesi metriğiyle aşağıdaki toplama işlevlerini kullanabilirsiniz:

    • avg: Ortalama işleme gecikmesini döndürür.
    • min: Minimum işleme gecikmesini döndürür.
    • max: Maksimum işleme gecikmesini döndürür.
    • sum: Tüm işleme gecikmelerinin toplamını döndürür.

    Tüm metrikler toplama işlevlerinin hepsini desteklemez. metrics ile ilgili dokümanlar, metrik adını ve metrik tarafından desteklenen işlevi (sum, avg, min, max) belirten bir tablo içerir.

Örneğin, saniye başına ortalama işlem sayısını, yani API proxy isteği sayısını döndürmek için:

?select=tps

Bu örneğin bir toplama işlevi gerektirmediğine dikkat edin. Sonraki örnekte, önbellek isabetlerinin toplamını döndürmek için bir toplama işlevi kullanılmaktadır:

?select=sum(cache_hit)

Tek bir API çağrısı için birden çok metrik döndürebilirsiniz. Politika hatalarının toplamı ve ortalama istek boyutuna ilişkin metrikleri almak için virgülle ayrılmış bir metrik listesi kullanarak select sorgu parametresini ayarlayın:

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

Dönemi belirtme

Metrikler API'si belirli bir süre için veri döndürür. Dönemi belirtmek için timeRange sorgu parametresini şu biçimde kullanın:

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

HH:MM öncesine ait %20 dikkat: timeRange parametresi, HH:MM öncesinde URL kodlamalı boşluk karakteri veya MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM gibi bir + karakteri gerektirir.

Örneğin:

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

00:00'a yaklaştığından saat 24:00'ü kullanmayın. Bunun yerine 23:59'u kullanın.

Sınırlayıcı kullanma

Bir API çağrısındaki birden çok boyutu ayırmak için ayırıcı olarak virgül (,) kullanın. Örneğin, API çağrısı

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

apis ve apps boyutları , ile ayrılır.

Örnek API çağrıları

Bu bölümde, Metrikleri al ve Metrikleri boyutlara göre düzenlenmiş API'lerinin kullanıldığı örnekler bulunmaktadır. Ek örnekler için Metrics API'si örnekleri bölümüne bakın.

Bir ay içinde API'lerinize yapılan çağrıların toplam sayısını döndürme

Bir ay boyunca kuruluşunuzdaki ve ortamınızdaki tüm API'lere yapılan çağrıların toplam sayısını görmek için GetMetric API'yi kullanın:

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

Örnek Yanıt:

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

İki gün için API proxy'si başına toplam mesaj sayısını döndürme

Bu örnekte, iki günlük bir süre boyunca tüm API proxy'leri tarafından alınan istek sayısına ait metrikleri döndürüyorsunuz. select sorgu parametresi, apiproxy boyutunda message_count metriği için sum toplama işlevini tanımlar. Rapor, 20.06.2018 başlangıcı ile 21.06.2018 sonu arasında alınan trafik için tüm API'ler için istek mesajı işleme hızını UTC saatine göre döndürür:

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

Örnek Yanıt:

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

Bu yanıt, 20.06.2018 başlangıcı ile 21.06.2018 sonu arasında test ortamında çalışan "hedef-yeniden yönlendirme" adlı bir API proxy'si tarafından 1.100 mesajın alındığını gösterir.

Diğer boyutların metriklerini almak için URI parametresi olarak farklı bir boyut belirtin. Örneğin, geliştirici uygulamalarıyla ilgili metrikleri almak için developer_app boyutunu belirtebilirsiniz. Aşağıdaki API çağrısı, belirtilen zaman aralığı için tüm uygulamalardan alınan toplam işleme hızını (alınan mesajlar) döndürür:

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

Örnek Yanıt:

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

Sonuçları göreli sıralamaya göre sıralama

Metrikler alırken çoğu zaman yalnızca toplam veri kümesinin bir alt kümesine ait sonuçları almak istersiniz. Genellikle "ilk 10"un sonuçlarını almanız gerekir. Örneğin, "en yavaş 10 API" veya "en etkin 10 uygulama". Bu işlemi, isteğin bir parçası olarak topk sorgu parametresini kullanarak yapabilirsiniz.

Örneğin, en iyi geliştiricilerinizin kim olduğunu, işleme hızıyla ölçülmüş veya en kötü performans gösteren (ör. "en yavaş") hedef API'ler gecikmeye göre yapılır.

topk ("ilk k" varlıkları anlamına gelir), belirli bir metrik için en yüksek değerle ilişkilendirilmiş varlıklar hakkında rapor oluşturmayı sağlar. Böylece, belirli bir koşulu örnekleyen varlıkların listesi için metrikleri filtreleyebilirsiniz. Örneğin, geçen hafta boyunca hataya en çok eğilimli URL'nin hangisi olduğunu bulmak için isteğe topk parametresi 1 değeriyle eklenir:

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

Bu isteğin sonucunda, en rahatsız edici hedef URL'nin http://api.company.com olduğunu gösteren bir dizi metrik elde edilir.

En yüksek işleme hızına sahip API'leri sıralamak için topk parametresini de kullanabilirsiniz. Aşağıdaki örnekte, geçen haftaki en yüksek işleme hızıyla tanımlanan en üst sıradaki API'deki metrikler alınır:

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

Örnek Yanıt

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

Sonuçlara filtre uygulama

Daha fazla ayrıntı için sonuçları filtreleyerek döndürülen verileri sınırlandırabilirsiniz. Filtreleri kullanırken boyutları filtre özelliği olarak kullanmanız gerekir.

Örneğin, isteğin HTTP fiili tarafından filtrelenen arka uç hizmetlerinden hata sayısını almanız gerektiğini varsayalım. Hedefiniz, arka uç hizmeti başına kaç tane POST ve PUT isteğinin hata oluşturduğunu bulmaktır. Bunun için request_verb filtresiyle birlikte target_url boyutunu kullanırsınız:

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

Örnek yanıt:

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

Sonuçları sayfalara ayırma

Üretim ortamlarında, Edge analytics API'ye yapılan bazı istekler çok büyük veri kümeleri döndürür. API, büyük veri kümelerinin, kullanıcı arayüzü tabanlı bir uygulama bağlamında görüntülenmesini kolaylaştırmak için sayfalara ayırmayı yerel olarak destekler.

Sonuçları sayfalara ayırmak için offset ve limit sorgu parametreleriyle birlikte sortby sıralama parametresini kullanarak öğelerin tutarlı bir şekilde sıralandığından emin olun.

Örneğin, aşağıdaki istek büyük bir veri kümesi döndürür, çünkü geçen hafta ürün ortamındaki tüm API'lerdeki tüm hataların metriklerini alır.

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

Kullanıcı arayüzü tabanlı uygulamanız sayfa başına makul bir şekilde 50 sonuç gösterebiliyorsa sınırı 50 olarak ayarlayabilirsiniz. 0 ilk öğe olarak sayıldığından aşağıdaki çağrı, 0-49 arasındaki öğeleri azalan sırada döndürür (varsayılan değer sort=DESC).

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

Sonuçların ikinci "sayfası" için göreli konum sorgu parametresini aşağıdaki gibi kullanın. Sınır ve ofsetin aynı olduğunu unutmayın. Bunun nedeni, 0'ın ilk öğe olarak sayılmasıdır. 50 sınırı ve 0 ofset değeri ile 0-49 arasındaki öğeler döndürülür. 50 ofset ile 50-99 arasındaki öğeler döndürülür.

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