Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Edge Analytics; zengin bir etkileşimli kontrol paneli, özel rapor oluşturucu ve ilgili özellikler sunar. Ancak bu özellikler etkileşimli olarak tasarlanmıştır: API veya kullanıcı arayüzü isteği gönderirsiniz ve analiz sunucusu yanıt verene kadar istek engellenir.
Ancak analiz isteklerinin tamamlanması çok uzun sürerse zaman aşımına uğrayabilir. Bir sorgu isteğinin büyük miktarda veri (örneğin, yüzlerce GB) işlemesi gerekiyorsa zaman aşımı nedeniyle başarısız olabilir.
Eşzamansız sorgu işleme, çok büyük veri kümeleri için sorgu oluşturmanıza ve sonuçları daha sonra almanıza olanak tanır. Etkileşimli sorgularınızın zaman aşımına uğradığını fark ettiğinizde çevrimdışı sorgu kullanmayı düşünebilirsiniz. Asenkron sorgu işlemenin iyi bir alternatif olabileceği bazı durumlar şunlardır:
- Geniş zaman aralıklarını kapsayan raporları analiz etme ve oluşturma
- Verileri çeşitli gruplandırma boyutları ve sorguya karmaşıklık katan diğer kısıtlamalarla analiz etme
- Bazı kullanıcılar veya kuruluşlar için veri hacimlerinin önemli ölçüde arttığını fark ettiğinizde sorguları yönetme
Bu belgede, API kullanılarak nasıl eşzamansız sorgu başlatılacağı açıklanmaktadır. Özel rapor çalıştırma başlıklı makalede açıklandığı gibi kullanıcı arayüzünü de kullanabilirsiniz.
Reports API ile kullanıcı arayüzünü karşılaştırma
Özel rapor oluşturma ve yönetme başlıklı makalede, özel rapor oluşturmak ve çalıştırmak için Edge kullanıcı arayüzünün nasıl kullanılacağı açıklanmaktadır. Bu raporları eşzamanlı veya eşzamansız olarak çalıştırabilirsiniz.
Kullanıcı arayüzü ile özel rapor oluşturmaya yönelik kavramların çoğu, API kullanımı için de geçerlidir. Yani API ile özel raporlar oluştururken Edge'de yerleşik metrikleri, boyutları ve filtreleri ve StatisticsCollector politikası kullanılarak oluşturulan tüm özel metrikleri belirtirsiniz.
Kullanıcı arayüzünde ve API'de oluşturulan raporlar arasındaki temel farklar şunlardır: API ile oluşturulan raporlar, kullanıcı arayüzünde gösterilen görsel bir rapor yerine CSV veya JSON (yeni satırla sınırlanmış) dosyalarına yazılır.
Apigee Hybrid'deki sınırlar
Apigee hybrid, sonuç veri kümesi için 30 MB boyut sınırı uygular.
Eşzamansız analiz sorgusu oluşturma
Üç adımda eşzamansız analiz sorguları oluşturursunuz:
1. Adım: Sorguyu gönderin.
/queries API'sine bir POST isteği göndermeniz gerekir. Bu API, Edge'e isteğinizi arka planda işlemesini söyler. Sorgu gönderimi başarılı olursa API, 201 durumunu ve sonraki adımlarda sorguya başvurmak için kullanacağınız bir kimliği döndürür.
Örneğin:
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries -d @json-query-file -u orgAdminEmail:password
İsteğin gövdesi, sorgunun JSON açıklamasıdır. JSON gövdesinde, raporu tanımlayan metrikleri, boyutları ve filtreleri belirtin.
Aşağıda örnek bir json-query-file dosyası gösterilmektedir:
{
"metrics": [
{
"name": "message_count",
"function": "sum",
"alias": "sum_txn"
}
],
"dimensions": ["apiproxy"],
"timeRange": "last24hours",
"limit": 14400,
"filter":"(message_count ge 0)"
}
İstek gövdesi söz diziminin tam açıklaması için aşağıdaki İstek gövdesi hakkında bölümüne bakın.
Örnek yanıt:
Yanıtın sorgu kimliğini 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd içerdiğini unutmayın. HTTP durumu 201'e ek olarak, enqueued öğesinin state olması isteğin başarılı olduğunu gösterir.
HTTP/1.1 201 Created
{
"self":"/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
"created":"2018-05-10T07:11:10Z",
"state":"enqueued",
"error":"false",
}
2. adım: Sorgu durumunu alma
Sorgunun durumunu istemek için GET çağrısı yapın. POST çağrısından döndürülen sorgu kimliğini sağlarsınız. Örneğin:
curl -X GET -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd -u email:password
Örnek yanıtlar:
Sorgu hâlâ devam ediyorsa state yerine running ifadesinin yer aldığı aşağıdaki gibi bir yanıt alırsınız:
{
"self": "/organizations/myorg/environments/myenv/queries/1577884c-4f48-4735-9728-5da4b05876ab",
"state": "running",
"created": "2018-02-23T14:07:27Z",
"updated": "2018-02-23T14:07:54Z"
}
Sorgu başarıyla tamamlandıktan sonra state değerinin completed olarak ayarlandığı aşağıdaki gibi bir yanıt görürsünüz:
{
"self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
"state": "completed",
"result": {
"self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result",
"expires": "2017-05-22T14:56:31Z"
},
"resultRows": 1,
"resultFileSize": "922KB",
"executionTime": "11 sec",
"created": "2018-05-10T07:11:10Z",
"updated": "2018-05-10T07:13:22Z"
}
3. Adım: Sorgu sonuçlarını alma
Sorgu durumu completed olduktan sonra sonuçları almak için get results API'sini kullanabilirsiniz. Bu durumda sorgu kimliği yine 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd olur.
curl -X GET -H "Content-Type:application/json" -O -J https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result -u email:password
İndirilen dosyayı almak için kullandığınız aracı, indirilen dosyayı sisteminize kaydedecek şekilde yapılandırmanız gerekir. Örneğin:
cURL kullanıyorsanız yukarıda gösterildiği gibi
-O -Jseçeneklerini kullanabilirsiniz.Postman kullanıyorsanız Kaydet ve İndir düğmesini seçmeniz gerekir. Bu durumda,
responseadlı bir ZIP dosyası indirilir.Chrome tarayıcı kullanıyorsanız indirme işlemi otomatik olarak kabul edilir.
İstek başarılı olursa ve sıfır olmayan bir sonuç kümesi varsa sonuç, istemciye sıkıştırılmış JSON (yeni satırla sınırlanmış) dosyası olarak indirilir. İndirilen dosyanın adı şu şekilde olur:
OfflineQueryResult-<query-id>.zip
Örneğin:
OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
Zip dosyası, JSON sonuçlarının .gz arşiv dosyasını içerir. JSON dosyasına erişmek için indirilen dosyayı açın, ardından gzip komutunu kullanarak JSON dosyasını çıkarın:
unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gzİstek gövdesi hakkında
Bu bölümde, bir sorgu için JSON istek gövdesinde kullanabileceğiniz parametrelerin her biri açıklanmaktadır. Sorgunuzda kullanabileceğiniz metrikler ve boyutlar hakkında ayrıntılı bilgi için Analytics referansı başlıklı makaleyi inceleyin.
{ "metrics":[ { "name":"metric_name", "function":"aggregation_function", "alias":"metric_dispaly_name_in_results", "operator":"post_processing_operator", "value":"post_processing_operand" }, ... ], "dimensions":[ "dimension_name", ... ], "timeRange":"time_range", "limit":results_limit, "filter":"filter", "groupByTimeUnit": "grouping", "outputFormat": "format", "csvDelimiter": "delimiter" }
| Mülk | Açıklama | Zorunlu mu? |
|---|---|---|
metrics
|
Metrik dizisi. Bir sorgu için her metriğin dahil olduğu bir veya daha fazla metrik belirtebilirsiniz. Yalnızca metrik adı gereklidir:
"metrics":[
{
"name":"response_processing_latency",
"function":"avg",
"alias":"average_response_time_in_seconds",
"operator":"/",
"value":"1000"
}
]Daha fazla bilgi için Analytics metrikleri, boyutları ve filtreleri referansı başlıklı makaleyi inceleyin. |
Hayır |
dimensions
|
Metrikleri gruplandırmak için kullanılacak boyut dizisi. Daha fazla bilgi için desteklenen boyutların listesine bakın. Birden fazla boyut belirtebilirsiniz. | Hayır |
timeRange
|
Sorgu için zaman aralığı.
Zaman aralığını belirtmek için aşağıdaki önceden tanımlanmış dizeleri kullanabilirsiniz:
Alternatif olarak, "timeRange": {
"start": "2018-07-29T00:13:00Z",
"end": "2018-08-01T00:18:00Z"
} |
Evet |
limit
|
Sonuçta döndürülebilecek maksimum satır sayısı. | Hayır |
filter
|
Verileri filtrelemek için kullanılabilecek Boole ifadesi. Filtre ifadeleri, AND/OR terimleri kullanılarak birleştirilebilir ve belirsizliği önlemek için tamamen parantez içine alınmalıdır. Filtrelenebilecek alanlar hakkında daha fazla bilgi için Analytics metrikleri, boyutları ve filtreleri referansı başlıklı makaleyi inceleyin. Filtre ifadeleri oluşturmak için kullandığınız jetonlar hakkında daha fazla bilgi edinmek için Filtre ifadesi söz dizimi başlıklı makaleyi inceleyin. | Hayır |
groupByTimeUnit
|
Sonuç kümesini gruplandırmak için kullanılan zaman birimi. Geçerli değerler şunlardır: second, minute, hour, day, week veya month.
Bir sorgu |
Hayır |
outputFormat
|
Çıkış biçimi. Geçerli değerler: csv veya json. Varsayılan olarak, yeni satırla sınırlandırılmış JSON'a karşılık gelen json
değeri kullanılır.
Not: |
Hayır |
csvDelimiter
|
outputFormat, csv olarak ayarlanmışsa CSV dosyasında kullanılan ayırıcı. Varsayılan olarak , (virgül) karakterine ayarlanır. Desteklenen ayırıcı karakterler arasında virgül (,), dikey çizgi (|) ve sekme (\t) bulunur.
|
Hayır |
Filtre ifadesi söz dizimi
Bu referans bölümünde, istek gövdesinde filtre ifadeleri oluşturmak için kullanabileceğiniz jetonlar açıklanmaktadır. Örneğin, aşağıdaki ifadede "ge" jetonu (büyüktür veya eşittir) kullanılmaktadır:
"filter":"(message_count ge 0)"
| Jeton | Açıklama | Örnekler |
|---|---|---|
in
|
Listeye dahil et | (apiproxy in 'ethorapi','weather-api') (apiproxy in 'ethorapi') (apiproxy in 'Search','ViewItem') (response_status_code in 400,401,500,501) Not: Dizeler tırnak içinde olmalıdır. |
notin
|
Listeden hariç tut | (response_status_code notin 400,401,500,501) |
eq
|
Şuna eşit: (==)
|
(response_status_code eq 504) (apiproxy eq 'non-prod') |
ne
|
(!=) değerine eşit değil
|
(response_status_code ne 500) (apiproxy ne 'non-prod') |
gt
|
Şundan büyük: (>)
|
(response_status_code gt 500) |
lt
|
Şundan az: (<)
|
(response_status_code lt 500) |
ge
|
Büyük veya eşit (>=)
|
(target_response_code ge 400) |
le
|
Küçüktür veya eşittir (<=)
|
(target_response_code le 300) |
like
|
Dize kalıbı, sağlanan kalıpla eşleşiyorsa doğru değerini döndürür.
Sağdaki örnek aşağıdaki şekilde eşleşir: - "buy" kelimesini içeren herhangi bir değer - "item" ile biten herhangi bir değer - "Prod" ile başlayan herhangi bir değer - 4 ile başlayan herhangi bir değer (response_status_code sayısal bir değerdir)
|
(apiproxy like '%buy%') (apiproxy like '%item') (apiproxy like 'Prod%') |
not like
|
Dize kalıbı, sağlanan kalıpla eşleşiyorsa yanlış değerini döndürür. | (apiproxy not like '%buy%') (apiproxy not like '%item') (apiproxy not like 'Prod%') |
and
|
Birden fazla filtre ifadesi eklemek için "ve" mantığını kullanmanıza olanak tanır. Filtre, tüm koşulları karşılayan verileri içerir. | (target_response_code gt 399) and (response_status_code ge 400) |
or
|
Farklı olası filtre ifadelerini değerlendirmek için "veya" mantığını kullanmanıza olanak tanır. Filtre, koşullardan en az birini karşılayan verileri içerir. | (response_size ge 1000) or (response_status_code eq 500) |
Kısıtlamalar ve varsayılanlar
Aşağıda, eşzamansız sorgu işleme özelliğiyle ilgili kısıtlamaların ve varsayılanların listesi verilmiştir.
| Kısıtlama | Varsayılan | Açıklama |
|---|---|---|
| Sorgu çağrısı sınırı | Açıklamayı göster | Asenkron bir rapor başlatmak için /queries yönetim API'sine saatte en fazla yedi çağrı yapabilirsiniz. Çağrı kotasını aşarsanız API, HTTP 429 yanıtı döndürür. |
| Etkin sorgu sınırı | 10 | Bir kuruluş/ortam için en fazla 10 etkin sorgunuz olabilir. |
| Sorgu yürütme süresi eşiği | 6 saat | 6 saatten uzun süren sorgular sonlandırılır. |
| Sorgu Zaman Aralığı | Açıklamayı göster | Bir sorgu için izin verilen maksimum zaman aralığı 365 gündür. |
| Boyut ve metrik sınırı | 25 | Sorgu yükünde belirleyebileceğiniz maksimum boyut ve metrik sayısı. |
Sorgu sonuçları hakkında
Aşağıda JSON biçiminde bir örnek sonuç verilmiştir. Çıkış, yeni satır sınırlayıcısıyla ayrılmış JSON satırlarından oluşur:
{"message_count":"10209","apiproxy":"guest-auth-v3","hour":"2018-08-07 19:26:00 UTC"}
{"message_count":"2462","apiproxy":"carts-v2","hour":"2018-08-06 13:16:00 UTC"}
…
Sonuçları, depodaki verilerin süresi dolana kadar URL'den getirebilirsiniz. Kısıtlamalar ve varsayılanlar bölümüne bakın.
Örnekler
1. örnek: Mesaj sayılarının toplamı
Son 60 dakika içindeki ileti sayılarının toplamı için sorgu.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @last60minutes.json -u orgAdminEmail:password
last60minutes.json dosyasından istek metni
{
"metrics":[
{
"name":"message_count",
"function":"sum"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":"last60minutes"
}
2. örnek: Özel tarih aralığı
Özel bir zaman aralığı kullanarak sorgu oluşturun.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1 /organizations/myorg/environments/test/queries" -d @last60minutes.json -u orgAdminEmail:password
last60minutes.json dosyasından alınan istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
},
{
"name":"total_response_time",
"function":"avg",
"alias":"average_response_time"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-11-01T11:00:00Z",
"end":"2018-11-30T11:00:00Z"
}
}
3. örnek: Dakikadaki işlem sayısı
Dakika başına işlem sayısı (tpm) metriğiyle ilgili sorgu.
Sorgu
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @tpm.json -u orgAdminEmail:password
tpm.json dosyasından alınan istek gövdesi
{
"metrics":[
{
"name":"tpm"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-07-01T11:00:00Z",
"end":"2018-07-30T11:00:00Z"
}
}
Örnek sonuç
Sonuç dosyasından alıntı:
{"tpm":149995.0,"apiproxy":"proxy_1","minute":"2018-07-06 12:16:00 UTC"}
{"tpm":149998.0,"apiproxy":"proxy_1","minute":"2018-07-09 15:12:00 UTC"}
{"tpm":3.0,"apiproxy":"proxy_2","minute":"2018-07-11 16:18:00 UTC"}
{"tpm":148916.0,"apiproxy":"proxy_1","minute":"2018-07-15 17:14:00 UTC"}
{"tpm":150002.0,"apiproxy":"proxy_1","minute":"2018-07-18 18:11:00 UTC"}
...4. örnek: Filtre ifadesi kullanma
Boole operatörü kullanan bir filtre ifadesi içeren sorgu.
Sorgu
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @filterCombo.json -u orgAdminEmail:password
filterCombo.json dosyasından alınan istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
},
{
"name":"total_response_time",
"function":"avg",
"alias":"average_response_time"
}
],
"filter":"(apiproxy ne \u0027proxy_1\u0027) and (apiproxy ne \u0027proxy_2\u0027)",
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":{
"start":"2018-11-01T11:00:00Z",
"end":"2018-11-30T11:00:00Z"
}
}
5. örnek: Metrik parametresinde ifade geçirme
Metrik parametresinin bir parçası olarak iletilen bir ifadeyle sorgu. Yalnızca basit, tek operatörlü ifadeler kullanabilirsiniz.
Sorgu
curl -X POST -H "Content-Type:application/json" https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" -d @metricsExpression.json -u orgAdminEmail:password
metricsExpression.json dosyasından alınan istek gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum",
"operator":"/",
"value":"7"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":10,
"timeRange":"last60minutes"
}
Eşzamansız para kazanma raporu sorgusu oluşturma
Bu bölümde açıklanan adımları uygulayarak belirli bir ölçüt grubuna ait, belirli bir zaman aralığındaki tüm başarılı para kazanma işlemlerini yakalayabilirsiniz.
Eşzamansız Analytics sorgularında olduğu gibi, eşzamansız para kazanma raporu sorgularını üç adımda yaparsınız: (1) sorguyu gönderin, (2) sorgu durumunu alın ve (3) sorgu sonuçlarını alın.
1. adım olan sorgu gönderme işlemi aşağıda açıklanmıştır.
2. ve 3. adımlar, eşzamansız analiz sorgularıyla tamamen aynıdır. Daha fazla bilgi için Asenkron analiz sorgusu oluşturma başlıklı makaleyi inceleyin.
Eşzamansız para kazanma raporu için sorgu göndermek üzere /mint/organizations/org_id/async-reports adresine bir POST isteği gönderin.
İsteğe bağlı olarak, environment sorgu parametresini ileterek ortamı belirtebilirsiniz. Belirtilmezse sorgu parametresi varsayılan olarak prod olur. Örneğin:
/mint/organizations/org_id/async-reports?environment=prod
İstek gövdesinde aşağıdaki arama ölçütlerini belirtin.
| Ad | Açıklama | Varsayılan | Zorunlu mu? |
appCriteria |
Rapora dahil edilecek belirli bir uygulamanın kimliği ve kuruluşu. Bu özellik belirtilmezse tüm uygulamalar rapora dahil edilir. | Yok | Hayır |
billingMonth |
Raporun faturalandırma ayı (ör. TEMMUZ). | Yok | Evet |
billingYear |
Raporun faturalandırma yılı (ör. 2015). | Yok | Evet |
currencyOption |
Raporun para birimi. Geçerli değerler şunlardır:
EUR, GBP veya USD'yi seçerseniz raporda, işlemin yapıldığı tarihteki döviz kuruna göre bu tek para biriminin kullanıldığı tüm işlemler gösterilir. |
Yok | Hayır |
devCriteria
|
Rapora dahil edilecek belirli bir geliştiricinin geliştirici kimliği veya e-posta adresi ve kuruluş adı. Bu özellik belirtilmezse tüm geliştiriciler rapora dahil edilir. Örneğin: "devCriteria":[{
"id":"RtHAeZ6LtkSbEH56",
"orgId":"my_org"}
] |
Yok | Hayır |
fromDate
|
Raporun başlangıç tarihi (UTC). | Yok | Evet |
monetizationPakageIds |
Rapora dahil edilecek bir veya daha fazla API paketinin kimliği. Bu özellik belirtilmezse tüm API paketleri rapora dahil edilir. | Yok | Hayır |
productIds
|
Rapora dahil edilecek bir veya daha fazla API ürününün kimliği. Bu özellik belirtilmezse tüm API ürünleri rapora dahil edilir. | Yok | Hayır |
ratePlanLevels |
Rapora dahil edilecek ücret planı türü. Geçerli değerler şunlardır:
Bu özellik belirtilmezse hem geliştiriciye özel hem de standart ücret planları rapora dahil edilir. |
Yok | Hayır |
toDate
|
Raporun UTC bitiş tarihi. | Yok | Evet |
Örneğin, aşağıdaki istek, belirtilen API ürünü ve geliştirici kimliği için Haziran 2017 ayına ait eşzamansız bir para kazanma raporu oluşturur. Rapor fromDate ve toDate tarihleri ve saatleri UTC/GMT'dir ve saatleri içerebilir.
curl -H "Content-Type:application/json" -X POST -d \
'{
"fromDate":"2017-06-01 00:00:00",
"toDate":"2017-06-30 00:00:00",
"productIds": [
"a_product"
],
"devCriteria": [{
"id": "AbstTzpnZZMEDwjc",
"orgId": "myorg"
}]
}' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/async-reports?environment=prod" \
-u orgAdminEmail:password