মেট্রিক API ব্যবহার করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

Apigee Edge বিভিন্ন ধরনের অপারেশনাল ও ব্যবসায়িক ডেটা রেকর্ড করে যা API জুড়ে প্রবাহিত হয়। এই ডেটা থেকে পাওয়া মেট্রিকগুলি অপারেশনাল মনিটরিং ও বিজনেস মনিটরিংয়ের জন্য সহায়ক। Edge API Analytics ব্যবহার করে, আপনি, যেমন, নির্ধারণ করতে পারবেন কোন API ভাল বা খারাপ পারফর্ম করছে, কোন ডেভেলপার সবচেয়ে বেশি মূল্যবান ট্রাফিক ডেলিভার করছে এবং কোন অ্যাপ আপনার ব্যাকএন্ড পরিষেবায় সবচেয়ে বেশি সমস্যা সৃষ্টি করছে।

এই মেট্রিক্স ডেটা সহজে অ্যাক্সেস করতে, Edge একটি RESTful API প্রকাশ করে। আপনি নির্দিষ্ট Analytics ফাংশন অটোমেট করার প্রয়োজন হলে, যেমন অটোমেশন ক্লায়েন্ট বা স্ক্রিপ্ট ব্যবহার করে পর্যায়ক্রমে মেট্রিক্স রিট্রিভ করার সময় মেট্রিক্স API ব্যবহার করতে পারেন। এছাড়াও, আপনি কাস্টম উইজেট হিসেবে নিজের ভিজ্যুয়ালাইজেশন তৈরি করতে API ব্যবহার করতে পারেন যা আপনি পোর্টাল বা কাস্টম অ্যাপে এম্বেড করতে পারবেন।

API-তে কীভাবে Analytics ব্যবহার করতে হয় তা জানতে Edge ম্যানেজমেন্ট UI-এর API Analytics ওভারভিউ দেখুন।

মেট্রিক API সম্পর্কে

Edge দুটি মেট্রিক্স API প্রদান করে:

  • মেট্রিক পান সংস্থা ও এনভায়রনমেন্টের মেট্রিক রিটার্ন করে, যেমন এক ঘণ্টা, এক দিন বা এক সপ্তাহ।

    যেমন, আগের সপ্তাহের জন্য আপনি এগুলি পেতে চান:

    • নীতি সংক্রান্ত সমস্যার সংখ্যা
    • উত্তর দিতে গড়ে যত সময় লাগে
    • মোট ট্রাফিক
  • ডাইমেনশন অনুযায়ী সাজানো মেট্রিক পান কোনও সংস্থা ও এনভায়রনমেন্টের জন্য একটি নির্দিষ্ট সময়সীমার মধ্যে মেট্রিক রিটার্ন করে এর মাধ্যমে গ্রুপ করা হয় ডাইমেনশন।

    যেমন, আগের সপ্তাহে আপনি API প্রোডাক্ট, API প্রক্সি এবং ডেভেলপার ইমেল অনুযায়ী মেট্রিক গ্রুপ করতে ডাইমেনশন ব্যবহার করেছেন, যাতে এগুলি পাওয়া যায়:

    • প্রতি API প্রোডাক্ট নীতি সংক্রান্ত সমস্যার সংখ্যা
    • প্রতি API প্রক্সির জন্য উত্তর দেওয়ার গড় সময়
    • ডেভেলপার ইমেল আইডি পিছু মোট ট্রাফিক

    ডাইমেনশন অনুযায়ী সাজানো মেট্রিক পান API-তে মেট্রিক পান API-তে কাজ করে না এমন অতিরিক্ত ফিচার কাজ করে, যার মধ্যে এগুলি অন্তর্ভুক্ত:

মেট্রিক্স API কোটা সম্পর্কে

Edge এইসব কলের উপর নিম্নলিখিত কোটা প্রয়োগ করে। কোটা ব্যাকএন্ড সিস্টেমের উপর ভিত্তি করে নির্ধারিত হয় যা কল ম্যানেজ করে:

  • Postgres: প্রতি মিনিটে ৪০টি কল
  • BigQuery: প্রতি মিনিটে ১২টি কল

রেসপন্স অবজেক্ট পরীক্ষা করে কল ম্যানেজ করা ব্যাকএন্ড সিস্টেম নির্ধারণ করুন। প্রতিটি উত্তর অবজেক্টে metaData প্রপার্টি থাকে যা Source প্রপার্টিতে কল হ্যান্ডেল করা পরিষেবা তালিকাভুক্ত করে । যেমন, Postgres-এর জন্য:

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

BigQuery-এর জন্য, Source প্রপার্টি হল:

"Source:Big Query"

আপনি কল কোটা অতিক্রম করলে, API একটি HTTP 429 উত্তর রিটার্ন করে।

Management 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 প্রক্সি অনুযায়ী গ্রুপ করা মেট্রিক পেতে, ম্যানেজমেন্ট API কল করার জন্য আপনাকে নিচের URL ব্যবহার করতে হবে:

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

ফেরত দেওয়ার জন্য মেট্রিক নির্দিষ্ট করা

মেট্রিক পান এবং ডাইমেনশন অনুযায়ী সাজানো মেট্রিক পান দুটি API-এর ক্ষেত্রেই, আপনি select কোয়েরি প্যারামিটার ব্যবহার করে, যে মেট্রিক রিট্রিভ করতে চান সেটি নির্দিষ্ট করেন এবং একটি ঐচ্ছিক অ্যাগ্রিগেশন ফাংশন ব্যবহার করেন, যা এই ফর্ম্যাটে থাকে:

?select=metric

অথবা:

?select=aggFunction(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-এর বিজ্ঞপ্তি দেখুন। timeRange প্যারামিটারের আগে URL-এনকোডেড স্পেস ক্যারেক্টার HH:MM অথবা + ক্যারেক্টার থাকতে হবে, যেমন: MM/DD/YYYY+HH:MM~MM/DD/YYYY+HH:MM।

যেমন:

?timeRange=03/01/2018%2000:00~03/30/2018%2023: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"
    }
  ],
...
}

দু'দিনের জন্য API প্রক্সি পিছু মোট মেসেজের সংখ্যা ফেরত দাও

এই উদাহরণে, আপনি দুই দিনের মধ্যে সমস্ত API প্রক্সি দ্বারা প্রাপ্ত অনুরোধের সংখ্যা সম্পর্কিত মেট্রিক রিটার্ন করেন। select কোয়েরি প্যারামিটার, apiproxy ডাইমেনশনের উপর message_count মেট্রিকে sum এগ্রিগেট ফাংশন নির্ধারণ করে। ২০/৬/২০১৮ তারিখের শুরু থেকে ২১/৬/২০১৮ তারিখের শেষ পর্যন্ত প্রাপ্ত ট্রাফিকের জন্য সব API-এর ক্ষেত্রে রিপোর্ট অনুরোধ মেসেজ থ্রুপুট রিটার্ন করে। এটি UTC সময় অনুযায়ী দেখানো হয়:

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' নামের একটি API প্রক্সি ১১০০টি মেসেজ পেয়েছে।

অন্যান্য ডাইমেনশনের জন্য মেট্রিক পেতে, 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"
        }
  ]...
}

তুলনামূলক র‍্যাংকিং অনুযায়ী ফলাফল সাজানো

অনেক সময় মেট্রিক পাওয়ার সময়, আপনি ডেটার মোট সেটের সাবসেটের ফলাফল পেতে চান। সাধারণত, আপনাকে "সেরা ১০"-এর ফলাফল পেতে হবে, যেমন, "সেরা ১০টি সবচেয়ে ধীর API", "সেরা ১০টি সবচেয়ে অ্যাক্টিভ অ্যাপ"। অনুরোধের অংশ হিসেবে topk কোয়েরি প্যারামিটার ব্যবহার করে আপনি এটি করতে পারবেন।

যেমন, থ্রুপুট পরিমাপ করে আপনার সেরা ডেভেলপার কারা তা জানতে আপনি আগ্রহী হতে পারেন, অথবা আপনার সবচেয়ে খারাপ পারফর্ম করা ডেভেলপার (অর্থাৎ, 'সবচেয়ে ধীরগতির') টার্গেট API লেটেন্সি অনুযায়ী সাজানো হয়।

topk (যার অর্থ হল 'সেরা k' এন্টিটি) কোনও নির্দিষ্ট মেট্রিকের জন্য সবচেয়ে বেশি ভ্যালু সহ এন্টিটি সম্পর্কিত রিপোর্টিং চালু করে। এটি আপনাকে এমন এন্টিটির একটি তালিকার জন্য মেট্রিক ফিল্টার করতে দেয় যা একটি নির্দিষ্ট শর্তের উদাহরণ। যেমন, গত সপ্তাহে কোন টার্গেট URL সবচেয়ে বেশি সমস্যাযুক্ত ছিল তা খুঁজে পেতে, 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-কে সাজাতে পারবেন। নিচের উদাহরণটি সবচেয়ে বেশি থ্রুপুট দ্বারা সংজ্ঞায়িত, গত সপ্তাহের সেরা র‌্যাঙ্ক করা 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 Analytics API-তে করা কিছু অনুরোধের উত্তরে খুব বড় ডেটা সেট পাওয়া যায়। UI-ভিত্তিক অ্যাপ্লিকেশনের প্রসঙ্গে বড় ডেটা সেট সহজে দেখানোর জন্য, API-তে নেটিভভাবে পৃষ্ঠাঙ্কন কাজ করে।

ফলাফল পেজিনেট করতে, offset এবং limit কোয়েরি প্যারামিটার ব্যবহার করুন, এর সাথে sortby সাজানোর প্যারামিটার ব্যবহার করে আইটেমগুলির ধারাবাহিক ক্রম নিশ্চিত করুন।

যেমন, নিম্নলিখিত অনুরোধটি সম্ভবত একটি বড় ডেটা সেট রিটার্ন করবে, কারণ এটি গত সপ্তাহের জন্য প্রোডাক্ট এনভায়রনমেন্টের সমস্ত 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-ভিত্তিক অ্যাপ্লিকেশন যদি যুক্তিসঙ্গতভাবে প্রতি পৃষ্ঠায় ৫০টি ফলাফল দেখাতে পারে, তাহলে আপনি সীমা ৫০ হিসেবে সেট করতে পারেন। যেহেতু ০-কে প্রথম আইটেম হিসেবে ধরা হয়, তাই নিম্নলিখিত কলটি বড় থেকে ছোট ক্রমে আইটেম ০-৪৯ রিটার্ন করে (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

ফলাফলের দ্বিতীয় 'পৃষ্ঠা'র জন্য, নিম্নলিখিত অফসেট কোয়েরি প্যারামিটার ব্যবহার করুন। মনে রাখবেন যে সীমা এবং অফসেট একই। কারণ, ০-কে প্রথম আইটেম হিসেবে ধরা হয়। ৫০টি আইটেমের সীমা এবং ০ অফসেট সহ, ০-৪৯ আইটেম ফেরত দেওয়া হয়। ৫০ অফসেট সহ, ৫০-৯৯ আইটেম ফেরত দেওয়া হয়।

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