ใช้ API เมตริก

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

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

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

ดูวิธีใช้ Analytics ใน UI การจัดการ API Edge ได้ที่ภาพรวมข้อมูลวิเคราะห์ API

เกี่ยวกับ API ของเมตริก

Edge มี API เมตริก 2 รายการ ได้แก่

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

    เช่น เมตริกของสัปดาห์ก่อนหน้า

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

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

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

    รับเมตริกที่จัดระเบียบตามมิติข้อมูล API รองรับฟีเจอร์เพิ่มเติมที่ API รับเมตริก ซึ่งไม่รองรับฟีเจอร์ต่อไปนี้

เกี่ยวกับโควต้า 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 รายการคือ ฟีเจอร์รับเมตริกจะแสดงเมตริกดิบของทั้งองค์กรและสภาพแวดล้อม ส่วนรับเมตริกที่จัดระเบียบตามมิติข้อมูลช่วยให้คุณจัดกลุ่มเมตริกตามประเภทเอนทิตีต่างๆ เช่น ผลิตภัณฑ์ API, นักพัฒนาซอฟต์แวร์ และแอปได้

URL คำขอสำหรับ API รับเมตริก คือ

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

สำหรับ 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

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

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

?select=metric

หรือ

?select=aggFunction(metric)

โดยที่

  • metric ระบุข้อมูลที่คุณต้องการแสดงผล เช่น จำนวนคำขอ API, Hit แคช หรือข้อผิดพลาดเกี่ยวกับนโยบาย ดูmetricsสำหรับตารางที่ระบุชื่อเมตริกที่จะใช้กับพารามิเตอร์การค้นหา select
  • aggFunction จะระบุฟังก์ชันการรวมที่ไม่บังคับซึ่งทํางานกับเมตริก ตัวอย่างเช่น คุณใช้ฟังก์ชันการรวมต่อไปนี้กับเมตริกเวลาในการตอบสนองการประมวลผลได้

    • avg: แสดงผลเวลาในการตอบสนองการประมวลผลโดยเฉลี่ย
    • min: แสดงผลเวลาในการตอบสนองขั้นต่ำในการประมวลผล
    • max: แสดงผลเวลาในการตอบสนองการประมวลผลสูงสุด
    • sum: ส่งคืนผลรวมของเวลาในการตอบสนองทั้งหมด

    เมตริกบางรายการอาจไม่รองรับฟังก์ชันการรวมบางรายการ เอกสารประกอบเกี่ยวกับmetricsมีตารางที่มีชื่อเมตริกและฟังก์ชัน (sum, avg, min, max) ที่เมตริกรองรับ

ตัวอย่างเช่น หากต้องการส่งคืนจำนวนธุรกรรมโดยเฉลี่ย (ซึ่งหมายถึงคำขอพร็อกซี API ต่อวินาที) ให้ทำดังนี้

?select=tps

สังเกตว่าตัวอย่างนี้ไม่ต้องใช้ฟังก์ชันการรวม ตัวอย่างถัดไปใช้ฟังก์ชันการรวมเพื่อแสดงผลรวมของ Hit ของแคช

?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

สังเกต %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

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

ส่งคืนจำนวนการเรียกทั้งหมดไปยัง API เป็นเวลา 1 เดือน

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

การตอบกลับนี้ระบุว่าข้อความ 1,100 รายการได้รับโดยพร็อกซี API ชื่อ "target-reredirect" ที่ทำงานในสภาพแวดล้อมการทดสอบตั้งแต่วันที่ 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 อันดับแรก" เช่น "API ที่ช้าที่สุด 10 อันดับแรก" "แอปที่มีการใช้งานมากที่สุด 10 อันดับแรก" ซึ่งทำได้โดยใช้พารามิเตอร์การค้นหา topk เป็นส่วนหนึ่งของคำขอ

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

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 ที่ทำให้เกิดข้อผิดพลาดต่อบริการแบ็กเอนด์ วิธีการคือใช้มิติข้อมูล 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

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