Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
Edge Analytics, zengin bir etkileşimli kontrol paneli, özel rapor oluşturucu ve ilgili özellikler grubu sunar. Ancak bu özelliklerin etkileşimli olması amaçlanmıştır: Bir API veya kullanıcı arayüzü isteği gönderirsiniz ve istek, analiz sunucusu yanıt verene kadar engellenir.
Ancak analiz isteklerinin tamamlanması çok uzun sürerse zaman aşımı olabilir. Bir sorgu isteği büyük miktarda veri (örneğin, yüzlerce GB) işlemek zorundaysa zaman aşımı nedeniyle başarısız olabilir.
Eşzamansız sorgu işleme, çok büyük veri kümelerini sorgulamanı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:
- Uzun zaman aralıkları kapsayan raporları analiz etme ve oluşturma
- Verileri, sorguya karmaşıklık katan çeşitli gruplandırma boyutları ve diğer kısıtlamalarla analiz etme.
- Bazı kullanıcılar veya kuruluşlar için veri hacimlerinin önemli ölçüde arttığını tespit ettiğinizde sorguları yönetme
Bu belgede, API'yi kullanarak asenkron sorguların nasıl başlatılacağı açıklanmaktadır. Özel rapor çalıştırma bölümünde açıklandığı gibi kullanıcı arayüzünü de kullanabilirsiniz.
Reports API'yi kullanıcı arayüzüyle karşılaştırma
Özel raporlar 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ı senkronize veya asenkron olarak çalıştırabilirsiniz.
Kullanıcı arayüzüyle özel rapor oluşturmayla ilgili kavramların çoğu API kullanımı için de geçerlidir. Yani API ile özel raporlar oluştururken Edge'e yerleşik metrikleri, boyutları ve filtreleri ve StatisticsCollector politikasını kullanarak oluşturduğunuz özel metrikleri belirtirsiniz.
Kullanıcı arayüzünde ve API'de oluşturulan raporlar arasındaki en önemli fark, API ile oluşturulan raporların kullanıcı arayüzünde görüntülenen görsel bir rapor yerine CSV veya JSON (yeni satırla ayrılmış) dosyalarına yazılmasıdı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
Eşzamansız analiz sorgularını üç adımda oluşturursunuz:
1. Adım: Sorguyu gönderme
/queries API'sine bir POST isteği göndermeniz gerekir. Bu API, Edge'e isteğinizi arka planda işlemesini söyler. Sorgunun gönderimi başarılı olursa API, 201 durumunu ve sonraki adımlarda sorguya başvurmak için kullanacağınız bir kimlik 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 bir json-query-file
dosyası örneği verilmiştir:
{
"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 dizimine dair tam açıklama için aşağıdaki İstek gövdesi hakkında bölümüne bakın.
Örnek yanıt:
Sorgu kimliğinin 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
yanıta dahil edildiğini unutmayın. HTTP 201 durum koduna ek olarak, enqueued
of enqueued
, isteğin başarılı olduğu anlamına gelir.state
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 bir 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 devam ediyorsa state
yerine running
ifadesinin yer aldığı şu 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österilen
-O -J
seçeneklerini kullanabilirsiniz.Postman kullanıyorsanız Kaydet ve İndir düğmesini seçmeniz gerekir. Bu durumda,
response
adlı bir ZIP dosyası indirilir.Chrome tarayıcıyı 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 ayrılmış) 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 dosyanın sıkıştırmasını 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 içeriği 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 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ıracak boyut dizisi. Daha fazla bilgi için desteklenen boyutların listesine bakın. Birden fazla boyut belirtebilirsiniz. | Hayır |
timeRange
|
Sorgunun 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 VE/VEYA terimleri kullanılarak birleştirilebilir ve belirsizliği önlemek için tamamen parantez içine alınmalıdır. Filtre uygulanabilen 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 için Filtre ifadesi söz dizimi bölümüne bakın. | 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 şunlardır: csv veya json . Varsayılan olarak json değerini alır.
Yeni satırla ayrılmış JSON'a karşılık gelir.
Not: |
Hayır |
csvDelimiter
|
outputFormat csv olarak ayarlanmışsa CSV dosyasında kullanılan ayırıcı. Varsayılan olarak , (virgülü) karakteri kullanılı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ük veya eşittir) kullanılmıştır:
"filter":"(message_count ge 0)"
Jeton | Açıklama | Örnekler |
---|---|---|
in
|
Listeye ekle | (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çine alınmalıdır. |
notin
|
Listeden hariç tutma | (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
|
<) 'ten az
|
(response_status_code lt 500) |
ge
|
Büyük veya eşittir (>=)
|
(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şirse doğru değerini döndürür.
Sağdaki örnekte aşağıdaki eşleşmeler yapılmıştır: - "satın al" kelimesini içeren tüm değerler - "öğe" ile biten tüm değerler - "Prod" ile başlayan tüm değerler - 4 ile başlayan herhangi bir değer (response_status_code sayısaldır)
|
(apiproxy like '%buy%') (apiproxy like '%item') (apiproxy like 'Prod%') |
not like
|
Dize kalıbı sağlanan kalıpla eşleşirse 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, asenkron sorgu işleme özelliğinin kısıtlamaları ve varsayılan değerlerinin listesi verilmiştir.
Kısıtlama | Varsayılan | Açıklama |
---|---|---|
Sorgu çağrısı sınırı | Açıklamayı inceleyin | Asenkron 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 bir 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ı inceleyin | Bir sorgu için izin verilen maksimum zaman aralığı 365 gündür. |
Boyut ve metrik sınırı | 25 | Sorgu yükü içinde belirtebileceğ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 ayırıcı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"}
…
Depodaki verilerin süresi dolana kadar sonuçları URL'den alabilirsiniz. Kısıtlamalar ve varsayılan değerler başlıklı makaleyi inceleyin.
Örnekler
1. örnek: Mesaj sayılarının toplamı
Son 60 dakika içindeki ileti sayılarının toplamını sorgulayın.
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 gövdesi
{
"metrics":[
{
"name":"message_count",
"function":"sum"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":"last60minutes"
}
2. örnek: Özel zaman aralığı
Özel bir zaman aralığı kullanarak sorgu oluşturma
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"
},
{
"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: Dakika başına 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 istek metni
{
"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çlar 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 istek metni
{
"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: Metrikler parametresinde ifadeyi geçirme
Metrikler parametresinin bir parçası olarak iletilen bir ifadeyle sorgu. Yalnızca tek operatör içeren basit 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 istek metni
{
"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 grubu için belirli bir zaman aralığındaki tüm başarılı para kazanma işlemlerini yakalayabilirsiniz.
Eşzamansız analiz 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.
Sorguyu gönderme işlemi olan 1. adım aşağıda açıklanmıştır.
2. ve 3. adımlar, asenkron 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
İsteğin 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 başvurular 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 şunları içerir:
EUR, GBP veya USD'yi seçerseniz raporda, işlem tarihinde geçerli olan döviz kuruna göre tek bir para birimi kullanan 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 rapora tüm geliştiriciler dahil edilir. Örneğin: "devCriteria":[{ "id":"RtHAeZ6LtkSbEH56", "orgId":"my_org"} ] |
Yok | Hayır |
fromDate
|
Raporun UTC'de başlangıç tarihi. | 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 rapora hem geliştiriciye özel hem de standart ücret planları dahil edilir. |
Yok | Hayır |
toDate
|
Raporun UTC saat diliminde 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 bir eşzamansız para kazanma raporu oluşturur. fromDate
ve toDate
raporlarının tarih ve saatleri UTC/GMT'ye göredir ve saat 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