मेट्रिक एपीआई का इस्तेमाल करना

यहां Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
पर जाएं Apigee X दस्तावेज़.
info

Apigee Edge, एपीआई के ज़रिए फ़्लो होने वाले, कई तरह के ऑपरेशनल और कारोबार से जुड़े डेटा को रिकॉर्ड करता है. इस डेटा से मिलने वाली मेट्रिक, ऑपरेशनल मॉनिटरिंग और कारोबार की मॉनिटरिंग के लिए काम की होती हैं. उदाहरण के लिए, Edge API Analytics का इस्तेमाल करके, यह पता लगाया जा सकता है कि कौनसे एपीआई अच्छी या खराब परफ़ॉर्मेंस दे रहे हैं, कौनसे डेवलपर सबसे ज़्यादा वैल्यू वाला ट्रैफ़िक दे रहे हैं, और कौनसे ऐप्लिकेशन, आपके बैकएंड सेवाओं के लिए सबसे ज़्यादा समस्याएं पैदा कर रहे हैं.

इस मेट्रिक के डेटा को आसानी से ऐक्सेस करने के लिए, Edge एक RESTful API उपलब्ध कराता है. मेट्रिक एपीआई का इस्तेमाल तब किया जा सकता है, जब आपको Analytics के कुछ फ़ंक्शन को ऑटोमेट करना हो. जैसे, ऑटोमेशन क्लाइंट या स्क्रिप्ट का इस्तेमाल करके, समय-समय पर मेट्रिक वापस पाना. एपीआई का इस्तेमाल करके, कस्टम विजेट के तौर पर अपनी विज़ुअलाइज़ेशन भी बनाई जा सकती हैं. इन्हें पोर्टल या कस्टम ऐप्लिकेशन में एम्बेड किया जा सकता है.

एपीआई Edge मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) में Analytics का इस्तेमाल करने का तरीका जानने के लिए, एपीआई Analytics की खास जानकारी देखें.

मेट्रिक एपीआई के बारे में जानकारी

Edge, दो मेट्रिक एपीआई उपलब्ध कराता है:

  • Get metrics, किसी संगठन और एनवायरमेंट के लिए, एक तय समयावधि (जैसे, एक घंटा, एक दिन या एक हफ़्ता) की मेट्रिक दिखाता है.

    उदाहरण के लिए, आपको पिछले हफ़्ते का यह डेटा चाहिए:

    • नीति के उल्लंघन से जुड़ी गड़बड़ियों की संख्या
    • जवाब देने में लगने वाला औसत समय
    • कुल ट्रैफ़िक
  • Get metrics organized by dimensions किसी संगठन और एनवायरमेंट के लिए, एक तय समयावधि की मेट्रिक दिखाता है. हालांकि, इसमें मेट्रिक को grouped by dimension किया जाता है.

    उदाहरण के लिए, पिछले हफ़्ते का डेटा पाने के लिए, डाइमेंशन का इस्तेमाल करके, मेट्रिक को एपीआई प्रॉडक्ट, एपीआई प्रॉक्सी, और डेवलपर के ईमेल के हिसाब से ग्रुप किया जाता है. इससे आपको यह डेटा मिलता है:

    • हर एपीआई प्रॉडक्ट के लिए, नीति के उल्लंघन से जुड़ी गड़बड़ियों की संख्या
    • हर एपीआई प्रॉक्सी के लिए, जवाब देने में लगने वाला औसत समय
    • हर डेवलपर के ईमेल के लिए, कुल ट्रैफ़िक

    Get metrics organized by dimensions API, Get metrics API की तुलना में ज़्यादा सुविधाएं देता है. इनमें ये शामिल हैं:

मेट्रिक एपीआई के कोटा के बारे में जानकारी

Edge, इन कॉल पर ये कोटा लागू करता है. कोटा, कॉल को मैनेज करने वाले बैकएंड सिस्टम पर आधारित होता है:

  • Postgres: हर मिनट में 40 कॉल
  • BigQuery: हर मिनट में 12 कॉल

जवाब के ऑब्जेक्ट की जांच करके, कॉल को मैनेज करने वाले बैकएंड सिस्टम का पता लगाएं. हर जवाब के ऑब्जेक्ट में एक metaData प्रॉपर्टी होती है. इसमें Source प्रॉपर्टी में, कॉल को मैनेज करने वाली सेवा की सूची होती है. उदाहरण के लिए, Postgres के लिए:

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

BigQuery के लिए, Source प्रॉपर्टी यह होती है:

"Source:Big Query"

अगर कॉल का कोटा पार हो जाता है, तो एपीआई, एचटीटीपी 429 रिस्पॉन्स दिखाता है.

मैनेजमेंट एपीआई की मदद से मेट्रिक पाना

इन दोनों एपीआई के बीच मुख्य अंतर यह है कि Get metrics पूरे संगठन और एनवायरमेंट के लिए रॉ मेट्रिक दिखाता है. वहीं, Get metrics organized by dimensions की मदद से, मेट्रिक को अलग-अलग एंटिटी टाइप के हिसाब से ग्रुप किया जा सकता है. जैसे, एपीआई प्रॉडक्ट, डेवलपर, और ऐप्लिकेशन.

Get metrics API के लिए अनुरोध का यूआरएल यह है:

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

Get metrics organized by dimensions API के लिए, यूआरएल में /stats के बाद एक और संसाधन शामिल करें. इससे, मनचाहे डाइमेंशन के बारे में पता चलता है:

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

उदाहरण के लिए, एपीआई प्रॉक्सी के हिसाब से ग्रुप की गई मेट्रिक पाने के लिए, मैनेजमेंट एपीआई को कॉल करने के लिए यह यूआरएल इस्तेमाल करें:

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

लौटाने के लिए मेट्रिक तय करना

Get metrics और Get metrics organized by dimensions, दोनों एपीआई के लिए, वापस पाने के लिए मेट्रिक तय करने के लिए, select क्वेरी पैरामीटर का इस्तेमाल किया जाता है. साथ ही, इसमें इस फ़ॉर्म में, एग्रीगेशन फ़ंक्शन भी शामिल किया जा सकता है:

?select=metric

या:

?select=aggFunction(metric)

कहां:

  • metric, वह डेटा तय करता है जिसे आपको वापस पाना है. उदाहरण के लिए, एपीआई अनुरोधों की संख्या, कैश हिट या नीति के उल्लंघन से जुड़ी गड़बड़ियों की संख्या. `select`select क्वेरी पैरामीटर के साथ इस्तेमाल किए जाने वाले मेट्रिक के नाम की जानकारी देने वाली टेबल के लिए, मेट्रिक देखें.
  • aggFunction मेट्रिक के लिए, एग्रीगेशन फ़ंक्शन तय करता है. यह फ़ंक्शन, मेट्रिक के लिए ज़रूरी नहीं है. उदाहरण के लिए, प्रोसेसिंग में लगने वाले समय की मेट्रिक के साथ, इन एग्रीगेशन फ़ंक्शन का इस्तेमाल किया जा सकता है:

    • avg: प्रोसेसिंग में लगने वाला औसत समय दिखाता है.
    • min: प्रोसेसिंग में लगने वाला कम से कम समय दिखाता है.
    • max: प्रोसेसिंग में लगने वाला ज़्यादा से ज़्यादा समय दिखाता है.
    • sum: प्रोसेसिंग में लगने वाले सभी समय का योग दिखाता है.

    सभी मेट्रिक के लिए, सभी एग्रीगेशन फ़ंक्शन काम नहीं करते. मेट्रिक के दस्तावेज़ में एक टेबल होती है. इसमें मेट्रिक का नाम और मेट्रिक के साथ काम करने वाला फ़ंक्शन (sum, avg, min, max) बताया जाता है.

उदाहरण के लिए, हर सेकंड में होने वाले लेन-देन की औसत संख्या (यानी, एपीआई प्रॉक्सी के अनुरोध) पाने के लिए:

?select=tps

ध्यान दें कि इस उदाहरण में, एग्रीगेशन फ़ंक्शन की ज़रूरत नहीं है. अगले उदाहरण में, कैश हिट का योग पाने के लिए, एग्रीगेशन फ़ंक्शन का इस्तेमाल किया गया है:

?select=sum(cache_hit)

एक एपीआई कॉल के लिए, कई मेट्रिक वापस पाई जा सकती हैं. नीति के उल्लंघन से जुड़ी गड़बड़ियों की संख्या और अनुरोध के औसत साइज़ की मेट्रिक पाने के लिए, select क्वेरी पैरामीटर सेट करें. इसके लिए, कॉमा से अलग की गई मेट्रिक की सूची का इस्तेमाल करें:

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

समयावधि तय करना

मेट्रिक एपीआई, तय समयावधि का डेटा दिखाता है. समयावधि तय करने के लिए, timeRange क्वेरी पैरामीटर का इस्तेमाल करें. इसका फ़ॉर्मैट यह है:

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

HH:MM से पहले %20 पर ध्यान दें. timeRange पैरामीटर के लिए, HH:MM से पहले यूआरएल-एनकोड किया गया स्पेस कैरेक्टर या + कैरेक्टर ज़रूरी है. जैसे: MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM.

उदाहरण के लिए:

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

समय के लिए 24:00 का इस्तेमाल न करें, क्योंकि यह 00:00 पर रैप हो जाता है. इसके बजाय, 23:59 का इस्तेमाल करें.

डेलिमिटर का इस्तेमाल करना

एपीआई कॉल में एक से ज़्यादा डाइमेंशन को अलग करने के लिए, कॉमा (,) को डेलिमिटर के तौर पर इस्तेमाल करें. उदाहरण के लिए, एपीआई कॉल में

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 डाइमेंशन को , से अलग किया गया है.

एपीआई कॉल के उदाहरण

इस सेक्शन में, Get metrics और Get metrics organized by dimensions API का इस्तेमाल करने के उदाहरण दिए गए हैं. ज़्यादा उदाहरणों के लिए, मेट्रिक एपीआई के उदाहरण देखें.

एक महीने के लिए, अपने एपीआई पर किए गए कॉल की कुल संख्या पाना

अपने संगठन और एनवायरमेंट में मौजूद सभी एपीआई पर एक महीने में किए गए कॉल की कुल संख्या देखने के लिए, Get metrics 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"
    }
  ],
...
}

दो दिनों के लिए, हर एपीआई प्रॉक्सी के लिए मैसेज की कुल संख्या पाना

इस उदाहरण में, दो दिनों की अवधि में सभी एपीआई प्रॉक्सी से मिले अनुरोधों की संख्या की मेट्रिक दिखाई जाती हैं. select क्वेरी पैरामीटर, apiproxy डाइमेंशन पर मेट्रिक message_count के लिए, एग्रीगेट फ़ंक्शन sum तय करता है. रिपोर्ट में, 20 जून, 2018 की शुरुआत से लेकर 21 जून, 2018 के आखिर तक, यूटीसी समय के हिसाब से मिले ट्रैफ़िक के लिए, सभी एपीआई के लिए अनुरोध मैसेज थ्रूपुट दिखाया जाता है:

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

इस जवाब से पता चलता है कि टेस्ट एनवायरमेंट में चल रही 'target-reroute' नाम की एक एपीआई प्रॉक्सी को, 20 जून, 2018 की शुरुआत से लेकर 21 जून, 2018 के आखिर तक, 1,100 मैसेज मिले.

दूसरे डाइमेंशन की मेट्रिक पाने के लिए, यूआरआई पैरामीटर के तौर पर कोई दूसरा डाइमेंशन तय करें. उदाहरण के लिए, डेवलपर ऐप्लिकेशन की मेट्रिक वापस पाने के लिए, developer_app डाइमेंशन तय किया जा सकता है. एपीआई का यह कॉल, तय समयावधि के लिए किसी भी ऐप्लिकेशन से मिले कुल थ्रूपुट (मैसेज) दिखाता है:

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" के नतीजे चाहिए होते हैं. जैसे, "सबसे धीमे 10 एपीआई", "सबसे ज़्यादा ऐक्टिव 10 ऐप्लिकेशन". अनुरोध के हिस्से के तौर पर, topk क्वेरी पैरामीटर का इस्तेमाल करके ऐसा किया जा सकता है.

उदाहरण के लिए, आपको यह जानने में दिलचस्पी हो सकती है कि थ्रूपुट के हिसाब से आपके टॉप डेवलपर कौन हैं, इसके अलावा, आपको यह भी जानना हो सकता है कि सबसे खराब परफ़ॉर्म करने वाले (यानी, 'सबसे धीमे') टारगेट एपीआई, लेटेन्सी के हिसाब से कौनसे हैं.

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

इस अनुरोध के नतीजे के तौर पर, मेट्रिक का एक सेट मिलता है. इससे पता चलता है कि सबसे ज़्यादा गड़बड़ियों वाला टारगेट यूआरएल, http://api.company.com है.

सबसे ज़्यादा थ्रूपुट वाले एपीआई को क्रम से लगाने के लिए भी, topk पैरामीटर का इस्तेमाल किया जा सकता है. यहां दिए गए उदाहरण में, पिछले हफ़्ते सबसे ज़्यादा थ्रूपुट के हिसाब से, टॉप रैंक वाले एपीआई की मेट्रिक वापस पाई जाती हैं:

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

नतीजे फ़िल्टर करना

ज़्यादा जानकारी पाने के लिए, नतीजों को फ़िल्टर करके, वापस लाए गए डेटा को सीमित किया जा सकता है. फ़िल्टर का इस्तेमाल करते समय, डाइमेंशन को फ़िल्टर प्रॉपर्टी के तौर पर इस्तेमाल करना ज़रूरी है.

उदाहरण के लिए, मान लें कि आपको अनुरोध के एचटीटीपी वर्ब के हिसाब से फ़िल्टर किए गए, बैकएंड सेवाओं से मिली गड़बड़ियों की संख्या वापस पानी है. आपका लक्ष्य यह पता लगाना है कि हर बैकएंड सेवा के लिए, 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 Analytics API के कुछ अनुरोधों से, डेटा के बहुत बड़े सेट मिलते हैं. यूज़र इंटरफ़ेस (यूआई) पर आधारित ऐप्लिकेशन के कॉन्टेक्स्ट में, डेटा के बड़े सेट को आसानी से दिखाने के लिए, एपीआई में पेज पर बांटने की सुविधा होती है.

नतीजों को पेज पर बांटने के लिए, offset और limit क्वेरी पैरामीटर का इस्तेमाल करें. साथ ही, आइटम को एक ही क्रम में दिखाने के लिए, sortby क्रम से लगाने वाले पैरामीटर का इस्तेमाल करें.

उदाहरण के लिए, इस अनुरोध से डेटा का बड़ा सेट मिलने की संभावना है, क्योंकि इसमें पिछले हफ़्ते के लिए, प्रॉडक्ट एनवायरमेंट में मौजूद सभी एपीआई पर हुई सभी गड़बड़ियों की मेट्रिक वापस पाई जाती हैं.

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

अगर यूज़र इंटरफ़ेस (यूआई) पर आधारित आपका ऐप्लिकेशन, हर पेज पर 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

नतीजों के दूसरे 'पेज' के लिए, ऑफ़सेट क्वेरी पैरामीटर का इस्तेमाल करें. जैसे: ध्यान दें कि the सीमा और ऑफ़सेट एक जैसे हैं. ऐसा इसलिए है, क्योंकि 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