ใช้ API เมตริก

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

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

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

ดูวิธีใช้ Analytics ใน API UI การจัดการ 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

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

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

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

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

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

?select=metric

หรือ

?select=aggFunction(metric)

สถานที่:

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

การตอบกลับนี้ระบุว่าได้รับข้อความ 1100 รายการโดยพร็อกซี API รายการหนึ่งซึ่งมีชื่อว่า "เปลี่ยนเส้นทางเป้าหมาย" ทำงานในสภาพแวดล้อมการทดสอบตั้งแต่วันที่ 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 (หมายถึงเอนทิตี "อันดับสูงสุด" ) เปิดใช้การรายงานเกี่ยวกับเอนทิตีที่เชื่อมโยง ด้วยค่าสูงสุดสำหรับเมตริกที่ระบุ ซึ่งจะช่วยให้คุณสามารถกรองเมตริกสำหรับรายการ เป็นตัวอย่างของเงื่อนไขหนึ่งๆ เช่น ในการดูว่า 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 บางรายการส่งคืนข้อมูลขนาดใหญ่มาก เซ็ต เพื่อช่วยให้แสดงชุดข้อมูลขนาดใหญ่ในบริบทของแอปพลิเคชันแบบ 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 แสดงผลลัพธ์ได้ 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