跳转到内容
搜索文档

进行比较

最后更新 查看 MarkdownAgent 设置

在跨位置/时间范围等比较时间序列时,在那些使用 min-max 对值进行归一化的端点中,您必须在同一个请求中进行比较。这是通过请求多个序列来实现的。所有的值都将使用相同的最小值和最大值进行归一化,并且可以安全地相互比较。

NetFlows 的值是使用 min0-max 进行归一化的,所以我们将用它作为示例。有关更多信息,请参考 Get NetFlow time series

比较位置

在以下示例中,我们将比较两个不同位置(美国和葡萄牙)之间的流量变化。该示例将使用过去七天的 alpha-2 代码

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=us_data&dateRange=7d&location=US&name=pt_data&dateRange=7d&location=PT&format=json" \
--header "Authorization: Bearer <API_TOKEN>"

在上面的示例中,我们请求了两个时间序列。第一个序列包含以下参数:

name=us_data&dateRange=7d&location=US

第二个序列包含以下参数:

name=pt_data&dateRange=7d&location=PT

所有这些参数都是数组,数组中的位置定义了该过滤器所属的序列。有关可用参数的更多信息,请参考 NetFlows 的端点

响应(为了简短在下方做了缩减)使用提供的 name 属性来包装时间戳和相应的值。如果我们将这些数据绘制成图表,就会很明显地看出 Cloudflare 从葡萄牙接收的流量远少于来自美国的流量。

{
  "success": true,
  "errors": [],
  "result": {
    "us_data": {
      "timestamps": [ "2022-10-26T17:00:00Z", "2022-11-02T15:00:00Z" ],
      "values": [ "0.871752", "1" ]
    },
    "pt_data": {
      "timestamps": [ "2022-10-26T17:00:00Z", "2022-11-02T15:00:00Z" ],
      "values": [ "0.020457", "0.012313" ]
    },
    "meta": {
      "dateRange": {
        "startTime": "2022-10-26T17:00:00Z",
        "endTime": "2022-11-02T17:00:00Z"
      },
      "aggInterval": "ONE_HOUR",
			// ...
    }
  }
}

在大多数端点都可以进行比较,不仅仅是使用 min-max 的端点。

比较日期范围

在下一个示例中,我们将使用快捷方式 7d7dControl 比较美国在不同日期范围的情况。这些分别表示过去七天和在此之前的七天——或者换句话说,本周与上周。

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=this_week&dateRange=7d&location=US&name=previous_week&dateRange=7dControl&location=US&format=json" \
--header "Authorization: Bearer <API_TOKEN>"

第一个序列有这些参数:

name=this_week&dateRange=7d&location=US

第二个序列包含以下参数:

name=previous_week&dateRange=7dControl&location=US

现在,在 result 属性中,您应该会得到类似这样的内容:

{
  "this_week": {
    "timestamps": [ "2022-10-27T13:00:00Z", "2022-10-27T14:00:00Z", "...", "2022-11-03T12:00:00Z" ],
    "values": [ "0.794321", "1", "...", "0.718433"]
  },
  "previous_week": {
    "timestamps": [ "2022-10-20T13:00:00Z", "2022-10-20T14:00:00Z", "...", "2022-10-27T12:00:00Z" ],
    "values": [ "0.774392", "0.835071", "...", "0.720181"]
  }
}

检查这些信息,我们可以得出最大值在 2022-10-27T14:00:00Z 达到(所有 Radar 时间戳都是协调世界时 (UTC))。我们还可以查看在运行此命令时,日期范围快捷方式 7d7dControl 解析成了什么。

使用特定的时间戳

您还可以请求特定的时间戳。在接下来的示例中,我们将请求关于汤加 (Tonga) 在 10 月对比 2022 年 1 月发生中断时的数据。

curl "https://api.cloudflare.com/client/v4/radar/netflows/timeseries?name=tonga&dateStart=2022-10-15T02%3A00%3A00Z&dateEnd=2022-10-15T05%3A00%3A00Z&location=TO&name=tonga_outage&dateStart=2022-01-15T02%3A00%3A00Z&dateEnd=2022-01-15T05%3A00%3A00Z&location=TO&format=json&aggInterval=1h" \
--header "Authorization: Bearer <API_TOKEN>"

第一个序列有这些参数(URL 编码):

name=tonga&dateStart=2022-10-15T02%3A00%3A00Z&dateEnd=2022-10-15T05%3A00%3A00Z%&location=TO

第二个序列有这些参数:

name=tonga_outage&dateStart=2022-01-15T02%3A00%3A00Z&&dateEnd=2022-01-15T05%3A00%3A00Z&location=TO

在上述示例中,我们请求了一小时的聚合间隔aggInterval=1h),这样结果就可以显示在这个页面上。formataggInterval 不是数组,如 API 参考中所述,且全局应用于请求中的所有序列。

result 属性应该返回如下响应:

{
	"tonga": {
		"timestamps": ["2022-10-15T02:00:00Z", "2022-10-15T03:00:00Z", "2022-10-15T04:00:00Z", "2022-10-15T05:00:00Z"],
		"values": ["1.0", "0.832473", "0.820083", "0.79408"]
	},
	"tonga_outage": {
		"timestamps": ["2022-01-15T02:00:00Z", "2022-01-15T03:00:00Z", "2022-01-15T04:00:00Z", "2022-01-15T05:00:00Z"],
		"values": ["0.354105", "0.357287", "0.181811", "0.044198"]
	}
}

这表明流量在中断期间几乎降到了零。如果我们将它绘制出来,并将结束日期设为 1 月 18 日以使其更加清晰,我们会得到以下图表:

汤加 2022 年 10 月与 1 月对比

后续步骤

请参考调查部分以深入了解 Radar 返回的数据,例如 NetFlows

这篇文档对您有帮助吗?