使用 API 查看指标数据

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

您可以使用下面介绍的 API 获取 API Monitoring 指标。指标是 API 监控根据 API 监控日志中包含的原始数据汇总的数据值。

以下部分介绍了如何使用 API 管理指标。

如需详细了解 Metrics API,请参阅 Metrics API

如需了解这些示例中使用的 c网址 选项,请参阅使用 c网址

Metrics API

用于向 Metrics API 发出 GET 请求的基本网址如下:

https://apimonitoring.enterprise.apigee.com/metrics/resource

其中 resource 对应于特定指标。下表列出了指标资源:

资源 说明
/traffic 获取流量指标。指定代理名称、间隔时间、时间范围、目标、状态代码等过滤条件。
/latency 获取请求的延迟时间指标

到 Edge 和后端目标。指定代理名称、间隔时间、目标、状态代码等过滤条件。

/targets 获取特定组织和环境的所有目标网域。
/alerthistory 获取特定组织和时间范围的提醒历史记录指标。
/alertinstance/instanceid 获取特定提醒实例 ID 的提醒历史记录指标。
/alertsummary 获取组织和时间范围内的提醒总数。
/faultcodenames 获取所有 faultcode 名称。
/faultcodes 获取故障代码。
/faultcodecategories 获取故障代码类别。
/faultcodesubcategories 获取故障代码子类别。
/faultcodedetails 获取所有故障代码及详细信息。

获取故障信息

/fault* 资源都会返回与 Edge 上可能存在的故障相关的元数据。例如,如需查看所有可能故障类别的列表,请执行以下操作:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/faultcodecategories" \
-H "accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $ACCESS_TOKEN 设置为您的 OAuth 2.0 访问令牌。

响应如下所示:

{
  "faultCodeCategories":[
    "","API Protocol","Developer/App","Extension Policy","Gateway",
    "Mediation Policy","Mint","Security Policy","Sense","Traffic Mgmt Policy"
  ]
}

然后,您可以确定 API Protocol 类别的故障代码列表:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/faultcodes?faultCodeCategory=API Protocol" \
-H "accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"

如需了解其他选项,请参阅 Metrics API

捕获流量和延迟时间指标

Metrics API 提供了一些过滤条件,您可以将这些过滤条件应用于该 API,以便为计算指标指定自定义时间范围、代理、区域、环境和其他过滤条件。例如,如需查看过去一小时内所有环境每 10 分钟的每秒事务数 (tps) 指标,请执行以下操作:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/traffic?from=-1h&to=now&select=tps&interval=10m&groupBy=env&org=myorg" \
-H "accept: application/json"  \
-H "Authorization: Bearer $ACCESS_TOKEN" 

按照获取 OAuth 2.0 访问令牌中的说明,将 $ACCESS_TOKEN 设置为您的 OAuth 2.0 访问令牌。

此调用会以如下形式返回结果:

{
  "results":[
    {
      "series":[
        {
          "name":"proxy",
        "tags":
             {
                "env":"prod",
                "intervalSeconds":"60",
                "org":"myorg",
                "region":"myregion"
              },
            "columns":["time","tps"],
            "values":[
              ["2018-08-15T13:10:00Z",5.03],
              ["2018-08-15T13:20:00Z",5.01],
              ["2018-08-15T13:30:00Z",5.81],
              ["2018-08-15T13:40:00Z",5.95],
              
            ]
          },
       
       }
    }]
}

请注意 columns 属性如何指定 values 的格式。values 属性包含每 10 分钟计算一次的过去 10 分钟间隔内的 tps。

interval 查询参数用于定义指标保存到结果中的频率,以及结果中值的抽样窗口。在上面的示例中,系统会根据过去 10 分钟的数据计算该指标,并每 10 分钟将结果写入到结果中。

使用 fromto 查询参数指定采用 ISO 格式的时间范围。fromto 指定的时长上限为 24 小时。

日期格式可以是:

  • yyyy-mm-ddThh:mm:ssZ
  • yyyy-mm-ddThh:mm:ss+00:00

例如:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/traffic?from=2018-08-13T14%3A04%3A00Z&to=2018-08-13T14%3A10%3A00Z&select=tps&interval=1m&groupBy=env&org=myorg&proxy=PublicAPI" \
-H "accept: application/json"  \
-H "Authorization: Bearer $ACCESS_TOKEN"

或者,使用 fromto 查询参数指定相对时间范围,例如过去 1 小时:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/traffic?from=-1h&to=now&select=tps&interval=1m&groupBy=env&org=myorg&proxy=PublicAPI" \
-H "accept: application/json"  \
-H "Authorization: Bearer $ACCESS_TOKEN"

另一种方法是使用 proxy 查询参数显示单个代理的每秒事务数 (tps):

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/traffic?from=-1h&to=now&select=tps&interval=1m&groupBy=env&org=myorg&proxy=PublicAPI" \
-H "accept: application/json"  \
-H "Authorization: Bearer $ACCESS_TOKEN"

对于延迟时间指标,请指定与流量指标相同的许多条件。不过,对于 /latency 资源:

  • 您必须将 percentile 查询参数指定为 50909599。例如,如果您指定 90,API 会返回第 90 百分位的总响应延迟时间值。
  • windowsize 固定为 1 分钟。

例如,如需查看 1 分钟时间段内第 90 个百分位的总延迟时间指标,请执行以下操作:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/latency?percentile=90&select=totalLatency&from=-1h&to=now&interval=5m&windowsize=1m&groupBy=org,env,region&org=myorg" \
-H "accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"

如需了解其他选项,请参阅 Metrics API

捕获提醒的指标

Metrics API 可返回所有提醒、特定提醒或提醒摘要的指标。例如,如需获取某个组织过去一小时内的提醒历史记录,请使用以下语句:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/alerthistory?org=myorg&from=-1h&to=now" \
-H "accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $ACCESS_TOKEN 设置为您的 OAuth 2.0 访问令牌。

此 API 调用会以如下形式返回响应:

[
  {
"id":"983c4c7a-c301-4697-95cc-9a7c53e05fac",
"organization":"myorg",
"environment":"prod",
"name":"Public Api 5xx error rate",
"type":"Alert",
"source":"https://www.apigee.net/sonar",
"raw_payload":"
{
    \"reportUUID\":\"\",
    \"reportEnabled\":false,
    \"organization\":\"myorg\",
    \"name\":\"Public Api 5xx error rate\",
    \"self\":\"/alerts/95cc9ef4-345f-11e8-9fd3-12774584e062\",
    \"description\":\"\",
    \"conditions\":[
    {
        \"comparator\":\"\u003e\",
        \"metric\":\"rate\",
        \"durationSeconds\":3600,
        \"name\":\"\",
        \"description\":\"\",
        \"threshold\":0.01,
        \"dimensions\":
        {
            \"proxy\":\"myAPI\",
            \"org\":\"myorg\",
            \"env\":\"prod\",
            \"region\":\"myRegion\",
            \"statusCode\":\"5xx\"
            }
        }],
        \"uuid\":\"95cc9ef4-345f-11e8-9fd3-12774584e062\",
    \"playbook\":\"This is a test alert.\"
    }",
"time":"2018-08-14T12:45:28Z"
 },
 
]

然后,您可以使用返回的数组中的 id 来获取特定提醒的相关信息:

curl -X GET \
"https://apimonitoring.enterprise.apigee.com/metrics/alertinstance/983c4c7a-c301-4697-95cc-9a7c53e05fac" \
-H "accept: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN"

如需了解其他选项,请参阅 Metrics API