Korzystanie z interfejsów API wskaźników

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Apigee Edge rejestruje dane operacyjne i firmowe przesyłane przez interfejsy API. Dane uzyskane na podstawie tych danych są: jest przydatny w monitorowaniu operacyjnym i działalności biznesowej. Korzystając z Edge API Analytics, możesz: na przykład określać, które interfejsy API radzą sobie dobrze, a które słabo, a którzy deweloperzy udostępniają ruch o najwyższej wartości oraz które aplikacje powodują najwięcej problemów z usługami backendu.

Aby ułatwić dostęp do tych danych, Edge udostępnia interfejs API typu REST. Dostępne opcje używaj interfejsu Metrics API, gdy musisz zautomatyzować niektóre funkcje Analytics, np. pobieranie danych. okresowo za pomocą klienta lub skryptu automatyzacji. Możesz też użyć interfejsu API do tworzenia własnych wizualizacje w postaci widżetów niestandardowych, które można umieszczać w portalach lub aplikacjach niestandardowych.

Aby dowiedzieć się, jak korzystać z Analytics w interfejsie API Interfejs zarządzania krawędziami znajdziesz w artykule Omówienie interfejsu API Analytics.

Interfejsy API wskaźników

Edge udostępnia 2 interfejsy API wskaźników:

  • Uzyskiwanie danych zwraca wskaźniki dotyczące organizacji i środowiska w konkretnym okresie, np. w ciągu godziny, dnia lub tygodnia.

    Na przykład dla poprzedniego tygodnia, które chcesz uzyskać:

    • Liczba błędów związanych z naruszeniem zasad
    • Średni czas odpowiedzi
    • Łączny ruch
  • Porządkowanie danych według wymiarów zwraca wskaźniki z danego okresu dla organizacji i środowiska pogrupowane według wymiar.

    Na przykład w poprzednim tygodniu używasz wymiarów do grupowania danych według usługi API, oraz adres e-mail dewelopera, aby uzyskać:

    • Liczba błędów związanych z zasadami na usługę API
    • Średni czas odpowiedzi na serwer proxy interfejsu API
    • Łączny ruch na adres e-mail dewelopera

    Uporządkuj dane według wymiarów Interfejs API obsługuje dodatkowe funkcje, których nie obsługuje Pobierz wskaźniki API, w tym:

Informacje o limitach interfejsu Metrics API

Edge wymusza następujące limity w przypadku tych wywołań. Limit zależy od systemu backendu, który obsługuje połączenie:

  • Postgres: 40 wywołań na minutę
  • BigQuery 12 wywołań na minutę

Określ system backendu, który obsługuje wywołanie, sprawdzając obiekt odpowiedzi. Każdy obiekt odpowiedzi zawiera właściwość metaData, która zawiera listę usług, które obsługują wywołanie we właściwości Source. Na przykład dla Postgres:

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

W BigQuery właściwość Source to:

"Source:Big Query"

Jeśli przekroczysz limit wywołań, interfejs API zwróci odpowiedź HTTP 429.

Uzyskiwanie danych za pomocą interfejsu API zarządzania

Główna różnica między tymi dwoma interfejsami API jest taka, że uzyskiwanie danych zwraca nieprzetworzone wskaźniki dla całej organizacji i środowiska, a przy tym Porządkowanie danych według wymiarów pozwala grupować dane według różnych typów elementów, np. usługi interfejsu API, dewelopera i aplikacji.

Adres URL żądania do interfejsu API GetMetric:

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

Użyj opcji Porządkowanie danych według wymiarów API, po /stats dołącz do adresu URL dodatkowy zasób, który określa odpowiedni wymiar:

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

Aby na przykład pogrupować wskaźniki według serwera proxy interfejsu API, użyj tego adresu URL do wywołania do zarządzania interfejsem API:

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

Określanie wskaźników do zwrócenia

Zarówno dla tagu Uzyskaj dane i Porządkowanie danych według wymiarów Interfejsy API, które używają parametru zapytania select do określania danych oraz opcjonalną funkcję agregacji w formacie:

?select=metric

lub

?select=aggFunction(metric)

Gdzie:

  • dane określają dane, które chcesz zwrócić. Przykład: liczbę żądań do interfejsu API, trafień w pamięci podręcznej lub błędów związanych z zasadami. Zobacz dane dla tabeli, która określa nazwę danych do użycia w parametrze zapytania select.
  • aggFunction określa opcjonalną funkcję agregacji uruchamianą w odniesieniu do wskaźnika. Możesz na przykład używać tych funkcji agregacji z wskaźnikiem czasu oczekiwania na przetwarzanie:

    • avg: zwraca średnie opóźnienie przetwarzania.
    • min: zwraca minimalne opóźnienie przetwarzania.
    • max: zwraca maksymalny czas oczekiwania na przetwarzanie.
    • sum: zwraca sumę wszystkich opóźnień przetwarzania.

    Nie wszystkie wskaźniki obsługują wszystkie funkcje agregacji. Dokumentacja dotycząca Parametr dane zawiera tabelę, która określa nazwę danych. i funkcję (sum, avg, min, max) obsługiwaną przez dane.

Aby na przykład zwrócić średnią liczbę transakcji, czyli żądań do serwera proxy interfejsu API, na sekundę:

?select=tps

Zwróć uwagę, że ten przykład nie wymaga funkcji agregacji. W następnym przykładzie użyto funkcję agregacji, która zwraca sumę trafień w pamięci podręcznej:

?select=sum(cache_hit)

W przypadku jednego wywołania interfejsu API możesz zwrócić wiele danych. Aby uzyskać dane dotyczące sumy błędów związanych z zasadami i średni rozmiar żądania, ustaw parametr zapytania select rozdzielany przecinkami lista danych:

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

Określanie przedziału czasu

Interfejs Metrics API zwraca dane przez określony okres. Użyj funkcji timeRange w celu określenia okresu w formacie:

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

Zwróć uwagę na %20 przed HH:MM. Parametr timeRange wymaga spacji zakodowanej w adresie URL przed HH:MM lub +, jak na adres: MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM.

Na przykład:

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

Nie używaj godziny 24:00, ponieważ zaczyna się od około 00:00. Użyj formatu 23:59.

Korzystanie z separatora

Aby rozdzielić kilka wymiarów w wywołaniu interfejsu API, użyj przecinka (,) jako separatora. Na przykład w wywołaniu interfejsu 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

wymiary apis i apps są rozdzielone znakiem ,.

Przykładowe wywołania interfejsu API

Ta sekcja zawiera przykłady użycia metod Pobierz dane i Porządkowanie danych według wymiarów API. Dodatkowe przykłady znajdziesz w przykładach interfejsu Metrics API.

Zwraca łączną liczbę wywołań interfejsów API w ciągu jednego miesiąca

Aby zobaczyć łączną liczbę wywołań wszystkich interfejsów API w organizacji i środowisku w ciągu jednego miesiąca, użyj metody Interfejs API Get Metrics:

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

Przykładowa odpowiedź:

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

Zwracanie łącznej liczby wiadomości dla każdego serwera proxy interfejsu API przez 2 dni

W tym przykładzie zwracasz wskaźniki liczby żądań otrzymanych przez wszystkie serwery proxy interfejsu API. w okresie 2 dni. Parametr zapytania select określa funkcję agregacji sum dla wskaźnika message_count w wymiarze apiproxy. Raport zwraca przepustowość wiadomości z żądaniem dla wszystkich interfejsów API dla ruchu otrzymanego między 20 czerwca 2018 r. a końcem 21 czerwca 2018 roku, w Czas 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

Przykładowa odpowiedź:

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

Ta odpowiedź wskazuje, że jeden serwer proxy interfejsu API odebrał 1100 komunikatów „target-reroute” działające w środowisku testowym między 20 czerwca 2018 r. a końcem 21.06.2018 r.

Aby uzyskać dane dotyczące innych wymiarów, jako parametr URI wybierz inny wymiar. Dla: możesz na przykład określić wymiar developer_app, o którym będą pobierane dane aplikacji programistycznych. Poniższe wywołanie interfejsu API zwraca łączną przepustowość (otrzymane wiadomości) ze wszystkich aplikacji w określonym przedziale czasu:

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

Przykładowa odpowiedź:

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

Sortowanie wyników według rankingu względnego

Często przy uzyskiwaniu danych chcesz uzyskać wyniki tylko dla podzbioru łącznego zbioru i skalowalnych danych. Zwykle potrzebne są wyniki z listy „10 najlepszych”, np. „10 najwolniejszych” API”, czyli „10 najbardziej aktywnych aplikacji”. Możesz to zrobić, korzystając z parametru zapytania topk do wniosku.

Być może chcesz się na przykład dowiedzieć, kim są Twoi najlepsi deweloperzy na podstawie przepustowości, lub jakie słowa kluczowe są najmniej skuteczne (np. docelowych interfejsów API, biorąc pod uwagę czas oczekiwania.

topk (czyli „pierwsze k” elementów) umożliwia generowanie raportów o powiązanych elementach. o najwyższej wartości danego wskaźnika. Dzięki temu możesz filtrować dane według listy: które ilustrują określony warunek. Aby na przykład sprawdzić, który docelowy URL był najbardziej podatne na błędy w ciągu ostatniego tygodnia, do żądania jest dołączany parametr topk, z wartością 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"
        }
      ]...
}

Wynikiem tego żądania jest zbiór wskaźników wskazujących, że najbardziej błędny docelowy adres URL to http://api.company.com

Możesz też użyć parametru topk, aby posortować interfejsy API o największej wartości i przepustowości. Ten przykład pobiera dane z interfejsu API o najwyższym rankingu, zdefiniowane przez w ciągu ostatniego tygodnia:

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

Przykładowa odpowiedź

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

Filtrowanie wyników

Aby uzyskać większą szczegółowość, możesz filtrować wyniki, aby ograniczyć ilość zwracanych danych. W przypadku użycia funkcji musisz użyć wymiarów jako właściwości filtra.

Załóżmy na przykład, że musisz pobrać liczbę błędów z usług backendu odfiltrowane według czasownika HTTP z żądania. Chcesz się dowiedzieć, ile żądań POST i PUT generują błędy na usługę backendu. Używa się do tego wymiaru target_url wraz z filtrem 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

Przykładowa odpowiedź:

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

Podział wyników na strony

W środowiskach produkcyjnych niektóre żądania do interfejsu Edge Analytics API zwracają bardzo duże dane. zestawów. Aby ułatwić wyświetlanie dużych zbiorów danych w kontekście aplikacji opartej na interfejsie użytkownika, Interfejs API natywnie obsługuje dzielenie na strony.

Aby podzielić wyniki na strony, używaj parametrów zapytania offset i limit. wraz z parametrem sortowania sortby, aby zapewnić spójność kolejności elementy(ów).

Na przykład poniższe żądanie prawdopodobnie zwróci duży zbiór danych, ponieważ pobiera wskaźniki dotyczące wszystkich błędów dotyczących wszystkich interfejsów API w środowisku usługi za ostatni tydzień.

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

Jeśli Twoja aplikacja korzystająca z interfejsu użytkownika może w rozsądny sposób wyświetlić 50 wyników na stronie, możesz ustawić limit. do 50. Wartość 0 jest liczona jako pierwszy element, więc kolejne wywołanie zwraca elementy 0–49 w kolejności malejącej w kolejności (domyślnie 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

W przypadku drugiej „strony” wyników, użyj parametru zapytania przesunięcia w następujący sposób. Pamiętaj, że parametr są takie same. Wynika to z tego, że wartość 0 jest liczona jako pierwszy element. Z limitem wynoszącym 50 i przesunięcie 0, zwracane są elementy 0–49. Jeśli ustawisz przesunięcie o 50, zwracane są elementy 50–99.

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