ใช้ API เมตริก

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

Apigee Edge บันทึกข้อมูลการดำเนินงานและข้อมูลทางธุรกิจที่หลากหลายซึ่งไหลผ่าน API เมตริกที่ได้จากข้อมูลนี้มี ประโยชน์สำหรับการตรวจสอบการดำเนินงานและการตรวจสอบทางธุรกิจ เมื่อใช้ Edge API Analytics คุณจะกำหนดได้ เช่น ว่า API ใดมีประสิทธิภาพดีหรือไม่ดี นักพัฒนาซอฟต์แวร์รายใดสร้างการเข้าชมที่มีมูลค่าสูงสุด และแอปใดก่อให้เกิดปัญหามากที่สุดสำหรับบริการแบ็กเอนด์

Edge มี RESTful API เพื่อช่วยให้เข้าถึงข้อมูลเมตริกนี้ได้ง่าย คุณสามารถ ใช้ Metrics API เมื่อต้องการทำให้ฟังก์ชัน Analytics บางอย่างทำงานโดยอัตโนมัติ เช่น การเรียกเมตริก เป็นระยะๆ โดยใช้ไคลเอ็นต์หรือสคริปต์อัตโนมัติ นอกจากนี้ คุณยังใช้ API เพื่อสร้าง การแสดงภาพของคุณเองในรูปแบบวิดเจ็ตที่กำหนดเองซึ่งฝังในพอร์ทัลหรือแอปที่กำหนดเองได้ด้วย

ดูวิธีใช้ Analytics ใน UI การจัดการ API Edge ได้ที่ ภาพรวมของ API Analytics

เกี่ยวกับ Metrics API

Edge มี Metrics API 2 รายการดังนี้

  • Get metrics จะแสดงเมตริกสำหรับองค์กรและสภาพแวดล้อม ในช่วงระยะเวลาหนึ่ง เช่น 1 ชั่วโมง 1 วัน หรือ 1 สัปดาห์

    ตัวอย่างเช่น คุณต้องการรับข้อมูลต่อไปนี้สำหรับสัปดาห์ที่ผ่านมา

    • จำนวนข้อผิดพลาดเกี่ยวกับนโยบาย
    • เวลาในการตอบกลับโดยเฉลี่ย
    • การเข้าชมทั้งหมด
  • Get metrics organized by dimensions จะแสดงเมตริกในช่วงระยะเวลาหนึ่งสำหรับองค์กรและสภาพแวดล้อม จัดกลุ่มตาม มิติข้อมูล

    ตัวอย่างเช่น คุณใช้มิติข้อมูลเพื่อจัดกลุ่มเมตริกตามผลิตภัณฑ์ API, พร็อกซี API, และอีเมลของนักพัฒนาซอฟต์แวร์สำหรับสัปดาห์ที่ผ่านมาเพื่อรับข้อมูลต่อไปนี้

    • จำนวนข้อผิดพลาดเกี่ยวกับนโยบายต่อผลิตภัณฑ์ API
    • เวลาในการตอบกลับโดยเฉลี่ยต่อพร็อกซี API
    • การเข้าชมทั้งหมดต่ออีเมลของนักพัฒนาซอฟต์แวร์

    Get metrics organized by dimensions API รองรับฟีเจอร์เพิ่มเติมที่ Get metrics API ไม่รองรับ ซึ่งรวมถึง

เกี่ยวกับโควต้า 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"

หากคุณใช้การเรียกเกินโควต้า API จะแสดงการตอบกลับ HTTP 429

การรับเมตริกด้วย Management API

ความแตกต่างหลักระหว่าง API ทั้ง 2 รายการคือ Get metrics จะแสดงเมตริกดิบสำหรับทั้งองค์กรและสภาพแวดล้อม ในขณะที่ Get metrics organized by dimensions ช่วยให้คุณจัดกลุ่มเมตริกตามเอนทิตีประเภทต่างๆ เช่น ผลิตภัณฑ์ API, นักพัฒนาซอฟต์แวร์ และแอป

URL คำขอสำหรับ Get metrics API คือ

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

สำหรับ Get metrics organized by dimensions API ให้ใส่ทรัพยากรเพิ่มเติมลงใน URL หลังจาก /stats ซึ่งระบุถึง มิติข้อมูล ที่ต้องการ:

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

ตัวอย่างเช่น หากต้องการรับเมตริกที่จัดกลุ่มตามพร็อกซี API ให้ใช้ URL ต่อไปนี้เพื่อเรียก Management API:

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

การระบุเมตริกที่จะแสดงผล

สำหรับทั้ง Get metrics และ Get metrics organized by dimensions API คุณใช้พาร4/}} พารามิเตอร์การค้นหาเพื่อระบุ เมตริก ที่จะดึงข้อมูล และฟังก์ชันการรวมที่ไม่บังคับในรูปแบบต่อไปนี้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)

การระบุระยะเวลา

Metrics API จะแสดงผลข้อมูลในช่วงระยะเวลาที่ระบุ ใช้พารามิเตอร์การค้นหา timeRange เพื่อระบุช่วงเวลาในรูปแบบต่อไปนี้

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

โปรดสังเกต %20 ก่อน HH:MM พารามิเตอร์ 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

อย่าใช้เวลา 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

ส่วนนี้มีตัวอย่างการใช้ Get metrics และ Get metrics organized by dimensions API ดูตัวอย่างเพิ่มเติมได้ที่ตัวอย่าง Metrics API

แสดงผลจำนวนการเรียกทั้งหมดที่ส่งไปยัง API ของคุณใน 1 เดือน

หากต้องการดูจำนวนการเรียกทั้งหมดที่ส่งไปยัง API ทั้งหมดในองค์กรและสภาพแวดล้อมของคุณใน 1 เดือน ให้ใช้ 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"
    }
  ],
...
}

แสดงผลจำนวนข้อความทั้งหมดต่อพร็อกซี API เป็นเวลา 2 วัน

ในตัวอย่างนี้ คุณจะแสดงผลเมตริกสำหรับจำนวนคำขอที่พร็อกซี API ทั้งหมดได้รับ ในช่วงระยะเวลา 2 วัน พารามิเตอร์การค้นหา select จะกำหนดฟังก์ชันการรวม sum สำหรับเมตริก message_count ในมิติข้อมูล apiproxy รายงานจะแสดงปริมาณงานของข้อความคำขอ สำหรับ API ทั้งหมดสำหรับการเข้าชมที่ได้รับระหว่างต้นวันที่ 20/6/2018 ถึงสิ้นวันที่ 21/6/2018 ตามเวลา 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"
  } ]...
}

การตอบกลับนี้ระบุว่าพร็อกซี API รายการหนึ่งชื่อ 'target-reroute' ซึ่งทำงานในสภาพแวดล้อมการทดสอบได้รับข้อความ 1,100 รายการระหว่างต้นวันที่ 20/6/2018 ถึงสิ้นวันที่ 21/6/2018

หากต้องการรับเมตริกสำหรับมิติข้อมูลอื่นๆ ให้ระบุมิติข้อมูลอื่นเป็นพารามิเตอร์ 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 อันดับแรก" เช่น "10 API ที่ช้าที่สุด" "10 แอปที่มีการใช้งานมากที่สุด" คุณสามารถทำได้โดยใช้พารามิเตอร์การค้นหา 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 Verb ของคำขอ เป้าหมายของคุณคือการค้นหาจำนวนคำขอ POST และ PUT ที่สร้างข้อผิดพลาดต่อบริการแบ็กเอนด์ หากต้องการทำเช่นนั้น ให้ใช้มิติข้อมูล target_url ร่วมกับตัวกรอง request_verb ดังนี้

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 จะแสดงผลชุดข้อมูลขนาดใหญ่มาก API รองรับการแบ่งหน้าโดยเนทีฟเพื่อให้แสดงชุดข้อมูลขนาดใหญ่ในบริบทของแอปพลิเคชันที่ใช้ UI ได้ง่าย

หากต้องการแบ่งหน้าผลการค้นหา ให้ใช้พารามิเตอร์การค้นหา 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 ของคุณแสดงผลได้ 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

หากต้องการแสดงผลลัพธ์ "หน้า" ที่ 2 ให้ใช้พารามิเตอร์การค้นหา offset ดังนี้ โปรดทราบว่า ขีดจำกัดและออฟเซ็ตจะเหมือนกัน เนื่องจาก 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