预计阅读时间:1分钟|最后更新时间: Invalid Date

# 全局动态指标

全局动态指标可以通过编写指标 SQL 来动态地汇总想要的数据,如当前网关缓存命中率的统计,或请求状态码的分布。

这里我们提供一个查看请求状态码分布的实际例子。

Screenshot

Screenshot

点击保存按钮之后,还需要等待一至两分钟才会有数据。

Screenshot

另外,我们也可以切换到柱状图或者饼状图。

Screenshot

如果你想根据客户的 IP 来计算城市分布,可以使用这个 SQL。

select client_city, count(*) as cnt from reqs group by client_city order by cnt desc limit 50

如果你想知道哪些资源请求较多,可以使用这个 SQL。

select uri, sum(total_size) as size from reqs group by uri order by size desc limit 10

你也可以使用 where 来筛选需要关注的请求。

select uri, sum(total_size) as size from reqs where uri like /\bopenresty-\d+(?:\.\d+)+(?:rc\d+)?\.tar\.gz$/ group by uri order by size desc limit 10

注意: limit N 对性能影响较大,这里 N 需要小于 15。

Metrics SQL 的语法细节可以参考这个文档 Metrics SQL

# 标准动态指标

我们还提供标准动态指标。如果没有动态指标,我们可以点击 Add standard metric aggregates at once 按钮,快速添加这些标准动态指标。

这里是标准动态指标的介绍:

# 状态码统计

可以查看请求返回状态码的分布。

select status, count(*) from reqs group by status;

Screenshot

# 上游和下游流量大小

可以查看入口和出口的流量大小。

select sum(upstream_byte_total) as upstream_bytes_total, sum(total_size) as downstream_bytes_total from reqs;

Screenshot

# 请求数和连接数

可以查看每分钟的请求数和不同状态的连接数。

select count(*) as qps, avg(writing_conns), avg(reading_conns), avg(waiting_conns), avg(active_conns) from http;

Screenshot

# 请求命中和未命中缓存的流量统计

select sum(total_size) as bytes_total, upstream_cache_status, count(*) from reqs where upstream_cache_status != '' group by upstream_cache_status;

Screenshot