커스텀 분석을 사용하여 API 메시지 콘텐츠 분석

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

Edge API 애널리틱스는 모든 API 요청 및 응답에서 다양한 통계 정보를 수집하고 분석합니다. 이 정보는 자동으로 수집되며 Edge UI에 표시하거나 측정항목 API를 사용하여 표시할 수 있습니다. 이러한 통계에 대한 자세한 내용은 metrics측정기준을 참조하세요.

API 프록시, 앱, 제품 또는 개발자 전용 커스텀 분석 데이터를 수집할 수도 있습니다. 예를 들어 쿼리 매개변수, 요청 헤더, 요청과 응답 본문 또는 API에서 정의한 변수에서 데이터를 수집하려 할 수 있습니다.

이 주제에서는 StatisticsCollector 정책을 사용하여 API 요청/응답에서 커스텀 분석 데이터를 추출하고 해당 데이터를 Edge API 애널리틱스에 제공하는 방법을 보여줍니다. 그런 다음 Edge UI에서 또는 Edge API를 사용하여 보고서에서 애널리틱스 데이터를 보는 방법을 보여줍니다.

Google Book API 정보

이 주제에서는 API 프록시 요청에서 Google Books API로 커스텀 분석 데이터를 캡처하는 방법을 설명합니다. Google Books API를 사용하면 제목, 주제, 저자, 기타 특성별로 도서를 검색할 수 있습니다.

예를 들어 도서 제목별로 검색하려면 /volumes 엔드포인트에 요청을 수행합니다. 단일 쿼리 매개변수를 도서 제목이 포함된 Books API에 전달합니다.

curl https://www.googleapis.com/books/v1/volumes?q=davinci%20code

호출은 검색 기준과 일치하는 찾은 항목의 JSON 배열을 반환합니다. 다음은 응답의 첫 번째 배열 요소입니다(단순화를 위해 일부 콘텐츠는 생략되었습니다).

{
 "kind": "books#volumes",
 "totalItems": 1799,
 "items": [
  {
   "kind": "books#volume",
   "id": "ohZ1wcYifLsC",
   "etag": "4rzIsMdBMYM",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/ohZ1wcYifLsC",
   "volumeInfo": {
    "title": "The Da Vinci Code",
    "subtitle": "Featuring Robert Langdon",
    "authors": [
     "Dan Brown"
    ],
    "publisher": "Anchor",
    "publishedDate": "2003-03-18",
    "description": "MORE THAN 80 MILLION COPIES SOLD ....",
    "industryIdentifiers": [
     {
      "type": "ISBN_10",
      "identifier": "0385504217"
     },
     {
      "type": "ISBN_13",
      "identifier": "9780385504218"
     }
    ],
    "readingModes": {
     "text": true,
     "image": true
    },
    "pageCount": 400,
    "printType": "BOOK",
    "categories": [
     "Fiction"
    ],
    "averageRating": 4.0,
    "ratingsCount": 710,
    "maturityRating": "NOT_MATURE",
    "allowAnonLogging": true,
    "contentVersion": "0.18.13.0.preview.3",
    "panelizationSummary": {
     "containsEpubBubbles": false,
     "containsImageBubbles": false
    },
...
   "accessInfo": {
    "country": "US",
    "viewability": "PARTIAL",
    "embeddable": true,
    "publicDomain": false,
    "textToSpeechPermission": "ALLOWED_FOR_ACCESSIBILITY",
    "epub": {
     "isAvailable": true,
     "acsTokenLink": "link"
    },
    "pdf": {
     "isAvailable": true,
     "acsTokenLink": "link"
    },
...
   }
  }

여러 응답 영역이 강조표시되어 있습니다.

  • 검색결과 수
  • 평균 도서 평점
  • 평점 수
  • 도서의 PDF 버전 가용성

다음 섹션에서는 이러한 응답 영역 및 검색 기준을 포함하는 쿼리 매개변수 q에 대한 통계를 수집하는 방법을 설명합니다.

Google Book API용 API 프록시 만들기

Google Book API의 통계를 수집하려면 먼저 이를 호출하는 Edge API 프록시를 만들어야 합니다. 그런 다음 해당 API 프록시를 호출하여 Google Book API에 요청합니다.

API 프록시 생성을 위한 2단계: API 프록시 만들기 가이드에서는 https://mocktarget.apigee.net API를 호출하는 프록시 생성 방법을 설명합니다. 이 가이드에서 설명하는 프록시에는 이를 호출하기 위한 API 키가 필요하지 않습니다.

동일한 절차를 사용하여 Google Book API의 /volumes 엔드포인트에 대한 API 프록시를 만듭니다. 절차의 5단계에서 API 프록시를 만들 때 Google Books API를 참조하도록 다음 속성을 설정합니다.

  • 프록시 이름: 'mybooksearch'
  • 프록시 기본 경로: '/mybooksearch'
  • 기존 API: "https://www.googleapis.com/books/v1/volumes"

프록시를 만들고 배포한 후에는 다음 형식의 curl 명령어를 사용하여 프록시를 호출할 수 있습니다.

curl http://org_name-env_name.apigee.net/mybooksearch?q=davinci%20code

여기서 org_nameenv_name은 프록시를 배포한 조직 및 환경을 지정합니다. 예:

curl http://myorg-test.apigee.net/mybooksearch?q=davinci%20code

커스텀 분석 데이터 수집

API 요청에서 분석 데이터를 수집하는 작업은 두 단계로 진행됩니다.

  1. 관심 있는 데이터를 추출하여 변수에 씁니다.

    Edge API 애널리틱스로 전달되는 모든 데이터는 변수에 저장된 값에서 가져옵니다. 일부 데이터는 API 프록시로 전달된 쿼리 매개변수 값과 같은 사전 정의된 Edge 흐름 변수에 자동으로 저장됩니다. 사전 정의된 흐름 변수에 대한 자세한 내용은 흐름 변수 개요를 참조하세요.

    변수 추출 정책을 사용하여 요청 또는 응답에서 커스텀 콘텐츠를 추출하고 변수에 해당 데이터를 작성합니다.

  2. 변수에서 Edge API 애널리틱스에 데이터를 씁니다.

    통계 수집기 정책을 사용하여 변수의 데이터를 Edge API 애널리틱스에 씁니다. 사전 정의된 Edge 흐름 변수 또는 변수 추출 정책에서 생성된 변수에서 데이터를 가져올 수 있습니다.

통계 데이터를 수집한 후에는 에지 관리 UI 또는 API를 사용하여 통계를 검색하고 필터링할 수 있습니다. 예를 들어 각 도서 제목의 평균 평점을 보여주는 커스텀 보고서를 생성할 수 있습니다. 여기서 도서 제목은 API에 전달된 쿼리 매개변수의 값에 해당합니다.

변수 추출 정책을 사용하여 분석 데이터 추출

분석 데이터를 추출하여 해당 변수(Edge에서 사전 정의된 흐름 변수 또는 사용자가 정의한 맞춤 변수)에 저장해야 API 애널리틱스에 데이터를 전달할 수 있습니다. 변수에 데이터를 작성하려면 변수 추출 정책을 사용합니다.

추출 변수 정책은 JSONPath 또는 XPath 표현식을 사용하여 메시지 페이로드를 파싱할 수 있습니다. Google Book API의 JSON 검색결과에서 정보를 추출하려면 JSONPath 표현식을 사용합니다. 예를 들어 JSON 결과 배열의 첫 번째 항목에서 averageRating 값을 추출하려면 JSONPath 표현식은 다음과 같습니다.

$.items[0].volumeInfo.averageRating

JSONPath 평가가 완료되면 변수 추출 정책은 추출된 값을 변수에 씁니다.

이 예시에서는 변수 추출 정책을 사용하여 4개의 변수를 만듭니다.

  • responsejson.totalitems
  • responsejson.ratingscount
  • responsejson.avgrating
  • responsejson.pdf

이러한 변수의 경우 responsejson프리픽스 변수이고 totalitems, ratingscount, avgrating, pdf이름 변수입니다.

다음 변수 추출 정책은 JSON 응답에서 데이터를 추출하고 커스텀 변수에 쓰는 방법을 보여줍니다. 각 <Variable> 요소는 커스텀 변수 이름과 연결된 JSONPath 표현식을 지정하는 name 속성을 사용합니다. <VariablePrefix> 요소는 변수 프리픽스를 지정합니다.

Edge UI의 API 프록시에 이 정책을 추가합니다. XML에 API 프록시를 빌드하는 경우 /apiproxy/policies 아래에서 ExtractVars.xml이라는 파일에 정책을 추가합니다.

<ExtractVariables name="ExtractVars">
    <Source>response</Source>
    <JSONPayload>
        <Variable name="totalitems">
            <JSONPath>$.totalItems</JSONPath>
        </Variable>
        <Variable name="ratingscount">
            <JSONPath>$.items[0].volumeInfo.ratingsCount</JSONPath>
        </Variable>
        <Variable name="avgrating">
            <JSONPath>$.items[0].volumeInfo.averageRating</JSONPath>
        </Variable>
        <Variable name="pdf">
            <JSONPath>$.items[0].accessInfo.pdf.isAvailable</JSONPath>
        </Variable>
    </JSONPayload>
    <VariablePrefix>responsejson</VariablePrefix>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ExtractVariables>

통계 수집기 정책을 사용하여 애널리틱스 서비스에 데이터를 씁니다.

통계 수집기 정책을 사용하여 변수의 데이터를 Edge API 애널리틱스에 씁니다. 통계 수집기 정책의 형식은 다음과 같습니다.

<StatisticsCollector>
<DisplayName>Statistics Collector-1</DisplayName>
    <Statistics>
        <Statistic name="statName" ref="varName" type="dataType">defVal</Statistic>
       …
    </Statistics>
</StatisticsCollector>

각 항목의 의미는 다음과 같습니다.

  • statName은 맞춤 보고서의 통계 데이터를 참조하는 데 사용하는 이름을 지정합니다.
  • varName은 수집할 분석 데이터가 포함된 변수의 이름을 지정합니다. 이 변수는 Edge에 기본 제공되거나 변수 추출 정책으로 생성된 맞춤 변수일 수 있습니다.
  • dataType는 기록된 데이터의 데이터 유형을 문자열, 정수, 부동 소수점 수, long, double 또는 부울로 지정합니다.

    문자열 유형의 데이터의 경우 맞춤 보고서에서 통계 데이터를 측정기준으로 참조합니다. 숫자 데이터 유형 (정수/부동 소수점 수/긴/배수)의 경우 맞춤 보고서에서 통계 데이터를 측정기준 또는 측정항목으로 참조합니다.

  • defValue는 필요에 따라 맞춤 변수의 기본값을 제공합니다. 이는 변수를 해결할 수 없거나 변수가 정의되지 않은 경우 API 애널리틱스로 전송됩니다.

아래 예시에서는 통계 수집기 정책을 사용하여 변수 추출 정책에서 만든 변수의 데이터를 수집합니다. 각 API 호출에 전달된 쿼리 매개변수 값도 수집합니다. 사전 정의된 흐름 변수를 사용하여 쿼리 매개변수를 참조합니다.

request.queryparam.queryParamName

'q'라는 쿼리 매개변수의 경우 다음과 같이 참조합니다.

request.queryparam.q

이 정책을 Edge UI의 API 프록시에 추가합니다. 또는 XML로 API 프록시를 빌드하는 경우 /apiproxy/policies에 다음 콘텐츠가 포함된 AnalyzeBookResults.xml,라는 파일을 추가합니다.

<StatisticsCollector name="AnalyzeBookResults">
 <Statistics>
        <Statistic name="totalitems" ref="responsejson.totalitems" type="integer">0</Statistic>
        <Statistic name="ratingscount" ref="responsejson.ratingscount" type="integer">0</Statistic>
        <Statistic name="avgrating" ref="responsejson.avgrating" type="float">0.0</Statistic>
        <Statistic name="pdf" ref="responsejson.pdf" type="boolean">true</Statistic>
        <Statistic name="booktitle" ref="request.queryparam.q" type="string">none</Statistic>
 </Statistics>
</StatisticsCollector>

ProxyEndpoint 응답 흐름에 정책 연결

정책이 올바르게 작동하려면 적절한 위치의 API 프록시 흐름에 정책을 연결해야 합니다. 이 사용 사례에서 정책은 Google Book API에서 응답이 수신된 후, 응답을 요청하는 클라이언트로 전송되기 전에 실행되어야 합니다. 따라서 정책을 ProxyEndpoint 응답 PreFlow에 연결합니다.

다음 ProxyEndpoint 구성 예시에서는 먼저 ExtractVars라는 정책을 실행하여 응답 메시지를 파싱합니다. 그런 다음 AnalyzeBookResults라는 정책에서 해당 값을 API 애널리틱스로 전달합니다.

<ProxyEndpoint name="default">
    ><PreFlow name="PreFlow">
        <Request/>
        <Response>
            <Step>
                <Name>Extract-Vars</Name>
            </Step>
            <Step>
                <Name>AnalyzeBookResults</Name>
            </Step>
        </Response>
    </PreFlow>
 <HTTPProxyConnection>
  <!-- Base path used to route inbound requests to this API proxy -->
  <BasePath>/mybooksearch</BasePath>
  <!-- The named virtual host that defines the base URL for requests to this proxy -->
  <VirtualHost>default</VirtualHost>
 </HTTPProxyConnection>
 <RouteRule name="default">
 <!-- Connects the proxy to the target defined under /targets -->
  <TargetEndpoint>default</TargetEndpoint>
 </RouteRule>
</ProxyEndpoint>

API 프록시 배포

변경한 후에는 구성한 API 프록시를 배포해야 합니다.

분석 데이터 입력

API 프록시를 배포한 후 프록시를 호출하여 API 애널리틱스에 데이터를 채웁니다. 이렇게 하려면 다음 명령어를 실행하면 됩니다. 명령어마다 서로 다른 도서 제목이 사용됩니다.

모비딕:

curl https://org_name-env_name.apigee.net/mybooksearch?q=mobey%20dick

다빈치 코드:

curl https://org_name-env_name.apigee.net/mybooksearch?q=davinci%20code 

나를 찾아줘:

curl https://org_name-env_name.apigee.net/mybooksearch?q=gone%20girl  

왕좌의 게임:

curl https://org_name-env_name.apigee.net/mybooksearch?q=game%20of%20thrones   

애널리틱스 데이터 보기

Edge는 커스텀 애널리틱스 데이터를 볼 수 있는 두 가지 방법을 제공합니다.

  • Edge UI는 그래픽 차트로 데이터를 볼 수 있는 맞춤 보고서를 지원합니다.
  • 측정항목 API를 사용하면 Edge API에 REST를 호출하여 분석 데이터를 검색할 수 있습니다. API를 사용하면 포털 또는 커스텀 앱에 삽입할 수 있는 커스텀 위젯 형식으로 자체 시각화를 빌드할 수 있습니다.

Edge UI를 사용하여 통계 보고서 생성

맞춤 보고서를 통해 특정 API 통계를 자세히 살펴보고 확인하려는 정확한 데이터를 확인할 수 있습니다. Edge에서 기본 제공되는 metrics측정기준을 사용하여 커스텀 보고서를 만들 수 있습니다. 또한 StatisticsCollector 정책을 사용하여 추출한 분석 데이터를 사용할 수 있습니다.

Statistics Collector 정책을 만들 때 수집된 데이터의 데이터 유형을 지정합니다. 문자열 데이터 유형의 경우, 커스텀 보고서에서 통계 데이터를 측정기준으로 참조합니다. 숫자 데이터 유형(integer/float/long/double)의 경우 커스텀 보고서의 통계 날짜를 측정기준 또는 측정항목으로 참조하세요. 자세한 내용은 커스텀 보고서 관리를 참조하세요.

Edge UI를 사용하여 커스텀 보고서 생성하기:

  1. 맞춤 보고서 페이지에 액세스합니다.

    에지

    Edge UI를 사용하여 맞춤 보고서 페이지에 액세스하는 방법은 다음과 같습니다.

    1. apigee.com/edge에 로그인합니다.
    2. 왼쪽 탐색 메뉴에서 분석 > 커스텀 보고서 > 보고서를 선택합니다.

    Classic Edge (Private Cloud)

    기본 Edge UI를 사용하여 맞춤 보고서 페이지에 액세스하는 방법은 다음과 같습니다.

    1. http://ms-ip:9000에 로그인합니다. 여기서 ms-ip는 관리 서버 노드의 IP 주소 또는 DNS 이름입니다.
    2. 상단 탐색 메뉴에서 애널리틱스 > 보고서를 선택합니다.

  2. 분석 보고서 페이지에서 + 분석 보고서를 클릭합니다.
  3. 보고서 이름을 지정합니다(예시: mybookreport).
  4. 기본 측정항목(예시: 트래픽)과 집계 함수(예시: Sum)를 선택합니다.

    또는 StatisticsCollector 정책을 사용하여 만든 숫자 데이터 통계 중 하나를 선택합니다. 예를 들어 ratingscount집계 함수합계를 선택합니다.

  5. 기본 제공 측정기준(예: API 프록시) 또는 StatisticsCollector 정책을 사용하여 만든 문자열 또는 숫자 통계를 선택합니다.

    예를 들어 booktitle을 선택합니다. 이제 보고서에 booktitle별로 ratingscount 합계가 표시됩니다.

    커스텀 도서 보고서
  6. 저장을 선택합니다. 보고서가 모든 커스텀 보고서의 목록에 나타납니다.
  7. 보고서를 실행하려면 보고서 이름을 선택합니다. 기본적으로 보고서에는 지난 1시간 동안의 데이터가 표시됩니다.

  8. 기간을 설정하려면 오른쪽 상단에서 날짜 표시를 선택하여 날짜 선택기 팝업을 엽니다.
  9. 지난 7일을 선택합니다. 보고서가 업데이트되어 도서 제목별 평점 합계가 표시됩니다.

    도서 보고서 차트

Edge API를 사용하여 통계 가져오기

Edge 측정항목 API를 사용하여 커스텀 분석 데이터의 통계를 측정합니다. 다음 요청 예시에서 각 항목은 다음과 같습니다.

  • /stats 이후에 URL에 대한 리소스가 원하는 측정기준을 지정합니다. 이 예시에서는 측정기준 booktitle의 데이터를 가져옵니다.
  • select 쿼리 매개변수는 검색할 metrics을 지정합니다. 이 요청은 ratingscount의 합계를 기준으로 분석을 반환합니다.
  • timeRange 매개변수는 반환된 데이터의 시간 간격을 지정합니다. 시간 범위 형식은 다음과 같습니다.

    MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM

전체 API 호출은 다음과 같습니다.

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/org_name/environments/env_name/stats/booktitle?select=sum(ratingscount)&timeRange=04/21/2019&2014:00:00~04/22/2019&2014:00:00" /
-u email:password

다음과 같은 형식의 응답이 표시됩니다.

{
  "environments": [
    {
      "dimensions": [
        {
          "metrics": [
            {
              "name": "sum(ratingscount)",
              "values": [
                "5352.0"
              ]
            }
          ],
          "name": "gone girl"
        },
        {
          "metrics": [
            {
              "name": "sum(ratingscount)",
              "values": [
                "4260.0"
              ]
            }
          ],
          "name": "davinci code"
        },
        {
          "metrics": [
            {
              "name": "sum(ratingscount)",
              "values": [
                "1836.0"
              ]
            }
          ],
          "name": "game of thrones"
        },
        {
          "metrics": [
            {
              "name": "sum(ratingscount)",
              "values": [
                "1812.0"
              ]
            }
          ],
          "name": "mobey dick"
        }
      ],
      "name": "prod"
    }
  ],
  "metaData": {
    "errors": [],
    "notices": [
      "query served by:9b372dd0-ed30-4502-8753-73a6b09cc028",
      "Table used: uap-prod-gcp-us-west1.edge.edge_api_raxgroup021_fact",
      "Source:Big Query"
    ]
  }
}

Edge Metrics API에는 많은 옵션이 있습니다. 예를 들어 결과를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 다음 예시에서는 오름차순을 사용합니다.

curl -X GET "https://api.enterprise.apigee.com/v1/organizations/org_name/environments/env_name/stats/booktitle?select=sum(ratingscount)&timeRange=04/21/2019&2014:00:00~04/22/2019&2014:00:00&sort=ASC" /
-u email:password

원하는 측정기준 값을 지정하여 결과를 필터링할 수도 있습니다. 다음 예시에서 보고서는 'Gone Girl' 및 'The Da Vinci Code'의 결과로 필터링됩니다.

$ curl -X GET "https://api.enterprise.apigee.com/v1/organizations/org_name/environments/env_name/stats/booktitle?select=sum(ratingscount)&timeRange=04/21/2019&2014:00:00~04/22/2019&2014:00:00&filter=(booktitle%20in%20'gone%20girl'%2C%20'davinci%20code')" /
-u email:password

Solution Builder를 사용하여 커스텀 분석 변수 만들기

솔루션 빌더를 사용하면 사용하기 쉬운 관리 UI 대화상자를 통해 커스텀 분석 변수를 만들 수 있습니다.

이전 섹션인 커스텀 분석 데이터 수집을 읽어 보세요. 여기에서는 Edge API 애널리틱스에 커스텀 변수를 제공하기 위해 변수 추출 및 통계 수집기 정책이 함께 작동하는 방식을 설명합니다. 보시다시피 UI는 이와 동일한 패턴을 따르지만 전적으로 UI를 통해 항목을 구성할 수 있는 편리한 방법을 제공합니다. 원하는 경우 정책을 수동으로 편집하거나 연결하는 대신 UI를 사용하여 Google Books API 예시를 사용해 보세요.

솔루션 빌더 대화상자를 사용하면 UI에서 직접 분석 변수를 구성할 수 있습니다. 이 도구는 정책을 생성하고 자동으로 API 프록시에 연결합니다. 정책은 요청 또는 응답에서 관심 있는 변수를 추출하고 추출된 변수를 Edge API 애널리틱스에 전달합니다.

솔루션 빌더는 새로운 추출 변수와 통계 수집기 정책을 만들고 고유한 이름을 지정합니다. 솔루션 빌더는 지정된 프록시 버전에서 정책이 생성되면 정책으로 돌아가서 변경할 수 없게 합니다. 변경하려면 생성된 정책을 정책 편집기에서 직접 수정합니다.

  1. Edge UI에서 프록시의 개요 페이지로 이동합니다.
  2. 개발을 클릭합니다.
  3. 개발 페이지의 도구 메뉴에서 커스텀 애널리틱스 수집을 선택합니다. 솔루션 빌더 대화상자가 나타납니다.
  4. 솔루션 빌더 대화상자에서 추출 변수와 통계 수집기 등 두 가지 정책을 먼저 구성합니다. 그런 다음 이러한 정책을 연결할 위치를 구성합니다.
  5. 추출할 데이터를 지정합니다.
    • 위치 유형: 수집할 데이터 유형과 데이터를 수집할 위치를 선택합니다. 요청 또는 응답 측에서 데이터를 선택할 수 있습니다. 예를 들어 요청: 쿼리 매개변수 또는 응답: XML 본문입니다.
    • 위치 소스: 수집할 데이터를 식별합니다. 예를 들면 응답 본문에 있는 쿼리 매개변수 이름이나 XML 데이터의 XPath입니다.
  6. 통계 수집기 정책에서 추출된 데이터를 식별하는 데 사용할 변수 이름(및 유형)을 지정합니다. 이 주제의 이름 지정 제한사항을 참조하세요.

    사용할 이름이 커스텀 보고서 작성 도구 UI의 측정기준이나 측정항목의 드롭다운 메뉴에 표시됩니다.
  7. API 프록시 흐름에서 생성된 정책인 추출 변수와 통계 수집기를 연결할 위치를 선택합니다. 자세한 내용은 'ProxyEndpoint 응답 흐름에 정책 연결'을 참조하세요. 정책이 올바르게 작동하려면 적절한 위치의 API 프록시 흐름에 정책을 연결해야 합니다. 트래핑할 변수가 범위(채워짐)에 있는 흐름의 단계에서 정책을 연결해야 합니다.
  8. +수집기를 클릭하여 커스텀 변수를 추가합니다.
  9. 완료되면 솔루션 빌드를 클릭합니다.

  10. 프록시를 저장하고 배포합니다.

이제 위에서 설명한 대로 데이터에 대한 커스텀 보고서를 생성할 수 있습니다.