<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
Apigee Edge는 API 전반에 걸친 운영 및 비즈니스 데이터입니다. 이 데이터에서 파생된 측정항목은 운영 모니터링 및 비즈니스 모니터링에 유용합니다. Edge API 분석을 사용하면 실적이 우수한 API와 저조한 API, API를 제공하는 개발자 백엔드 서비스에 가장 많은 문제를 일으키는 앱을 파악할 수 있습니다.
이러한 측정항목 데이터에 쉽게 액세스할 수 있도록 Edge는 RESTful API를 노출합니다. 다음과 같은 작업을 할 수 있습니다. 측정항목 가져오기와 같은 특정 애널리틱스 기능을 자동화해야 하는 경우 Metrics API 사용 자동화 클라이언트 또는 스크립트를 주기적으로 사용하여 API를 사용하여 포털 또는 커스텀 앱에 삽입할 수 있는 커스텀 위젯 형식으로 자체 시각화를 빌드할 수도 있습니다.
API에서 애널리틱스를 사용하는 방법 알아보기 에지 관리 UI는 API 분석 개요를 참고하세요.
Metrics API 정보
Edge는 두 가지 측정항목 API를 제공합니다.
측정항목 가져오기 조직 및 환경의 측정항목을 반환 시간, 일, 주 등의 기간을 기준으로 설정할 수 있습니다
예를 들어 지난주에 대해 다음을 획득할 수 있습니다.
- 정책 오류 수
- 평균 응답 시간
- 총 트래픽
측정기준별로 구성된 측정항목 가져오기는 측정기준으로 그룹화되는 조직 및 환경에 대한 기간 동안의 측정항목을 반환합니다.
예를 들어, 지난주에 측정기준을 사용하여 API 제품, API 프록시, 개발자 이메일별로 측정항목을 그룹화하면 다음을 얻을 수 있습니다.
- API 제품당 정책 오류 수
- API 프록시당 평균 응답 시간
- 개발자 이메일당 총 트래픽
측정기준별로 구성된 측정항목 가져오기 API는 측정항목 가져오기 API에서 지원하지 않는 다음과 같은 추가 기능을 지원합니다.
Metrics API 할당량 정보
Edge는 이러한 호출에 다음 할당량을 적용합니다. 할당량은 호출을 처리하는 백엔드 시스템을 기반으로 합니다.
- Postgres: 분당 40회 호출
- BigQuery: 분당 12회 호출
응답 객체를 검사하여 호출을 처리하는 백엔드 시스템을 확인합니다.
모든 응답 객체에는 Source
속성의 호출을 처리하는 서비스가 나열된 metaData
속성이 포함되어 있습니다. 예를 들어 Postgres의 경우 다음과 같습니다.
{ ... "metaData": { "errors": [], "notices": [ "Source:Postgres", "Table used: xxxxxx.yyyyy", "query served by:111-222-333" ] } }
BigQuery의 경우 Source
속성은 다음과 같습니다.
"Source:Big Query"
호출 할당량을 초과하면 API는 HTTP 429 응답을 반환합니다.
관리 API로 측정항목 가져오기
두 API의 주요 차이점은 측정항목 가져오기는 전체 조직 및 환경의 원시 측정항목을 반환하는 반면, 측정기준별로 구성된 측정항목 가져오기는 API 제품, 개발자, 앱 등 다른 항목 유형별로 측정항목을 그룹화할 수 있습니다.
측정항목 가져오기 API에 대한 요청 URL은 다음과 같습니다.
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats
측정기준별로 구성된 측정항목 가져오기 API의 경우 원하는 측정기준을 지정하는 /stats
뒤에 추가 리소스를 URL에 포함합니다.
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/dimension
예를 들어 API 프록시별로 그룹화된 측정항목을 가져오려면 다음 URL을 사용하여 관리 API:
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/stats/apiproxy
반환할 측정항목 지정
측정항목 가져오기와 측정기준별로 구성된 측정항목 가져오기 API 모두 select
쿼리 매개변수를 사용하여 검색할 측정항목과 선택적인 집계 함수를 다음 형식으로 지정할 수 있습니다.
?select=metric
또는
?select=aggFunction(metric)
각 항목의 의미는 다음과 같습니다.
- metric은 반환할 데이터를 지정합니다. 예를 들어 API 요청, 캐시 적중 또는 정책 오류 수입니다.
select
쿼리 매개변수에 사용할 측정항목 이름을 지정하는 표는 측정항목을 참조하세요. aggFunction은 측정항목에 대해 실행되는 선택적 집계 함수를 지정합니다. 예를 들어 다음과 같은 집계 함수를 처리 지연 시간 측정항목과 함께 사용할 수 있습니다.
avg
: 평균 처리 지연 시간을 반환합니다.min
: 최소 처리 지연 시간을 반환합니다.max
: 최대 처리 지연 시간을 반환합니다.-
sum
: 모든 처리 지연 시간의 합계를 반환합니다.
일부 측정항목은 모든 집계 함수를 지원하지 않습니다. 측정항목 문서에는 측정항목 이름 및 측정항목에서 지원하는 함수(
sum
,avg
,min
,max
)를 지정하는 테이블이 포함되어 있습니다.
예를 들어 API 프록시 요청인 초당 평균 트랜잭션 수를 반환하려면 다음과 같이 하세요.
?select=tps
이 예시에는 집계 함수가 필요하지 않습니다. 다음 예시에서는 집계 함수를 사용하여 캐시 적중 합계를 반환합니다.
?select=sum(cache_hit)
단일 API 호출에 여러 측정항목을 반환할 수 있습니다. 정책 오류 합계 및 평균 요청 크기의 측정항목을 가져오려면 쉼표로 구분된 측정항목 목록을 사용하여 select
쿼리 매개변수를 설정합니다.
?select=sum(policy_error),avg(request_size)
기간 지정
측정항목 API는 지정된 기간 동안의 데이터를 반환합니다. timeRange
사용
검색어 매개변수를 사용하여 다음과 같은 형식으로 기간을 지정합니다.
?timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM
HH:MM
전에 %20
을 확인하세요. MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM
와 같이 timeRange
매개변수에는 URL 인코딩 공백 문자가 HH:MM
또는 +
문자 앞에 있어야 합니다.
예를 들면 다음과 같습니다.
?timeRange=03/01/2018%2000:00~03/30/2018%2023:59
24:00는 00:00으로 반올림되므로 사용하지 마세요. 대신 23:59를 사용하세요.
구분자 사용
API 호출에서 여러 측정기준을 구분하려면 쉼표 (,
)를 구분 기호로 사용합니다.
예를 들어 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
측정기준 apis
및 apps
는 ,
로 구분됩니다.
샘플 API 호출
이 섹션에는 측정항목 가져오기 및 측정기준별로 정리된 측정항목 가져오기 API에 액세스할 수 있습니다 추가 예는 Metrics API 예를 참고하세요.
API에 대한 한 달간의 총 호출 수를 반환합니다.
조직 및 환경의 모든 API에 대한 한 달간의 총 호출 수를 보려면 측정항목 가져오기 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
샘플 응답:
{ "environments": [ { "metrics": [ { "name": "sum(message_count)", "values": [ "7.44944088E8" ] } ], "name": "prod" } ], ... }
2일간의 API 프록시당 총 메시지 수를 반환합니다.
이 예시에서는 2일 동안 모든 API 프록시에서 수신한 요청 수의 측정항목을 반환합니다. select
쿼리 매개변수는 측정기준 apiproxy
의 측정항목 message_count
에 대한 집계 함수 sum
을 정의합니다. 이 보고서는 2018년 6월 20일부터 2018년 6월 21일 사이에 수신된 트래픽의 모든 API에 대한 요청 메시지 처리량을 반환합니다.
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
샘플 응답:
{ "environments" : [ { "dimensions" : [ { "metrics" : [ { "name" : "sum(message_count)", "values" : [ { "timestamp" : 1498003200000, "value" : "1100.0" } ] } ], "name" : "target-reroute" } ], "name" : "test" } ]... }
이 응답은 2018년 6월 20일부터 2018년 6월 21일 사이의 테스트 환경에서 실행 중인 'target-reroute'라는 1개의 API 프록시에서 1,100개의 메시지를 수신했음을 나타냅니다.
다른 측정기준에 대한 측정항목을 가져오려면 다른 측정기준을 URI 매개변수로 지정하세요. 예를 들어 developer_app
측정기준을 지정하여 개발자 앱의 측정항목을 검색할 수 있습니다. 다음 API 호출은 지정된 시간 간격 동안 모든 앱에서 발생한 총 처리량(수신된 메시지)을 반환합니다.
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
샘플 응답:
{ "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" } ]... }
상대적 순위로 결과 정렬
측정항목을 가져오는 대부분의 경우 전체 데이터 세트의 하위 집합 결과만 가져오려고 할 것입니다. 일반적으로 '상위 10개'(예: '가장 느린 API 상위 10개', '활성 앱 상위 10개')에 대한 결과를 가져와야 합니다. 이렇게 하려면 요청의 일부로 topk
쿼리 매개변수를 사용하면 됩니다.
예를 들어 처리량을 기준으로 측정한 최고의 개발자는 누구인지 또는 지연 시간별 최하 성능(예시: '가장 느린')의 대상 API는 무엇인지 알고 싶을 수 있습니다.
topk
('상위 k' 항목)를 사용하면 특정 측정항목의 가장 높은 값과 관련된 항목을 보고할 수 있습니다. 이렇게 하면 목록에 있는 측정항목을
개체와 관련이 있습니다. 예를 들어
topk
매개변수가 요청에 추가됩니다.
값을 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" } ]... }
이 요청의 결과는 가장 버그가 많은 대상 URL이 http://api.company.com
임을 나타내는 측정항목 집합입니다.
또한 topk
매개변수를 사용하여 처리량이 가장 높은 API를 정렬할 수도 있습니다. 다음 예시에서는 지난 1주간 가장 높은 처리량에 따라 정의된 최고 순위 API를 기준으로 측정항목을 검색합니다.
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
샘플 응답
{ "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" } ]... }
결과 필터링
더 세분화된 결과를 확인하려면 반환되는 데이터를 제한하도록 결과를 필터링할 수 있습니다. 필터를 사용하는 경우 측정기준을 필터 속성으로 사용해야 합니다.
예를 들어 백엔드 서비스에서 오류 수를 검색해야 한다고 가정해 보겠습니다.
요청의 HTTP 동사로 필터링됩니다. 목표는 POST 및 PUT 요청이 백엔드 서비스당 생성하는 오류 수를 확인하는 것입니다. 이렇게 하려면 측정기준 request_verb
와 함께 target_url
측정기준을 사용합니다.
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
샘플 응답:
{ "environments" : [ { "dimensions" : [ { "metrics" : [ { "name" : "sum(is_error)", "values" : [ { "timestamp" : 1519516800000, "value" : "1.0" } ] } ], "name" : "testCache" } ], "name" : "test" } ]... }
결과를 페이지로 나누기
프로덕션 환경에서 Edge 분석 API에 대한 일부 요청은 매우 큰 데이터를 반환합니다. 있습니다. API는 UI 기반 애플리케이션의 컨텍스트에서 대용량 데이터 세트를 쉽게 표시할 수 있도록 기본적으로 페이지로 나누기를 지원합니다.
결과를 페이지로 나누려면 항목의 일관된 정렬 순서를 보장하기 위해 sortby
정렬 매개변수와 함께 offset
및 limit
쿼리 매개변수를 사용합니다.
예를 들어 다음 요청은 지난 주에 제품 환경의 모든 API에 대한 모든 오류에 대한 측정항목을 검색하기 때문에 대규모 데이터 세트를 반환할 가능성이 높습니다.
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
UI 기반 애플리케이션이 페이지당 50개의 결과를 합당하게 표시할 수 있는 경우 한도를 50으로 설정할 수 있습니다. 0이 첫 번째 항목으로 집계되므로 다음 호출은 항목을 0에서 49번까지 내림차순으로 반환합니다(기본값은 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
결과의 두 번째 '페이지'의 경우 다음과 같이 오프셋 쿼리 매개변수를 사용합니다. 한도와 오프셋은 동일합니다. 이는 0이 첫 번째 항목으로 집계되기 때문입니다. 한도가 50이고 오프셋이 0인 경우 0~49의 항목이 반환됩니다. 오프셋이 50인 경우 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