在跨位置/时间范围等比较时间序列时,在那些使用 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 的端点。
在下一个示例中,我们将使用快捷方式 7d 和 7dControl 比较美国在不同日期范围的情况。这些分别表示过去七天和在此之前的七天——或者换句话说,本周与上周。
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))。我们还可以查看在运行此命令时,日期范围快捷方式 7d 和 7dControl 解析成了什么。
您还可以请求特定的时间戳。在接下来的示例中,我们将请求关于汤加 (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),这样结果就可以显示在这个页面上。format 和 aggInterval 不是数组,如 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 日以使其更加清晰,我们会得到以下图表:
请参考调查部分以深入了解 Radar 返回的数据,例如 NetFlows。