动态指标

动态指标可以通过编写 Metric SQL 来动态地汇总想要的数据。

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

全局动态指标

全局动态指标记录的是全局的动态指标数据,如当前网关缓存命中率的统计,上游和下游流量大小,请求状态码的分布等。

和应用动态指标不同的是,全局动态指标提供了一个网关服务的筛选项,可以查看每个网关服务的数据。

Screenshot

我们可以点击新增按钮手动创建一个动态指标,也可以直接启用标准动态指标中的一些指标。

Screenshot

新增一个动态指标,我们可以自己编写 Metric SQL 来动态地汇总想要的数据。

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

Screenshot

新增和刚启用的动态指标,需等待一至两分钟才会有数据。

全局标准动态指标

全局标准动态指标汇集了很多常用的动态指标统计,极大的减少大家手动创建的成本。

以下是全局标准动态指标的详细介绍。

每秒请求数

每秒请求数 QPS(Queries Per Second),统计服务器每秒查询的数量。

select count(*) /60.0 as qps from http;

Screenshot

每分钟请求数

统计服务器每分钟查询的数量。

select count(*) as qpm from http;

Screenshot

状态码分布

统计 HTTP 状态码的分布情况。如 200, 301, 404, 500 等。

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

Screenshot

连接数

统计连接数,包括 writing,reading,reading 和 active 连接的数量。

select sum(writing_conns), sum(reading_conns), sum(waiting_conns), sum(active_conns)
from http;

Screenshot

Downstream 总流量

统计 downstream 总流量大小。

select sum(total_size) as downstream_bytes_total
from reqs;

Screenshot

Upstream 总流量

统计 upstream 总流量大小。

select sum(upstream_byte_total) as upstream_bytes_total
from reqs;

Screenshot

HTTP 代理缓存命中率和丢失率

统计 HTTP 代理缓存的命中率和丢失率等情况,例如 hit, miss, bypass, updating, revalidated, stale, expired 等。

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

Screenshot

流量 Top 10 的域名

统计流量排名前 10 的域名。

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

Screenshot

访问量 Top 10 的域名

统计访问量排名前 10 的域名。

select host, count(*) as count
from reqs
group by host
order by count desc
limit 10;

Screenshot

流量 Top 10 的客户端 IP

统计流量排名前 10 的客户端 IP。

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

Screenshot

请求量 Top 10 客户端 IP

统计请求量排名前 10 的客户端 IP。

select client_ip, count(*)  as count
from reqs
group by client_ip
order by count desc
limit 10;

Screenshot

响应压缩情况

统计响应压缩情况,我们可以看到压缩和未压缩的数据。

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

Screenshot

HTTP 版本

HTTP 版本分布情况,如 HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 等的数据。

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

Screenshot

SSL 加密连接

统计 SSL 加密连接的分布情况。

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

Screenshot

Keepalive 连接

统计 keepalive 的连接情况。

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

Screenshot

应用动态指标

应用动态指标和全局动态指标类似,但是只会统计属于当前应用下的请求。

应用动态指标和全局动态指标一样,也可以手动编写指标 SQL 来动态地汇总想要的数据,或者是直接启用标准动态指标中的一些指标。

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

Screenshot

Screenshot

应用标准动态指标

应用标准动态指标汇集了很多常用的动态指标统计,极大的减少大家手动创建的成本。

应用标准动态指标和全局动态指标相似,但只计算当前属于应用的请求。

以下是每一个标准动态指标的详细介绍。

每秒请求数

每秒请求数 QPS(Queries Per Second),统计服务器每秒查询的数量。

select count(*) /60.0 as qps from http;

Screenshot

每分钟请求数

统计服务器每分钟查询的数量。

select count(*) as qpm from http;

Screenshot

状态码分布

统计 HTTP 状态码的分布情况。如 200, 301, 404, 500 等。

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

Screenshot

连接数

统计连接数,包括 writing,reading,reading 和 active 连接的数量。

select sum(writing_conns), sum(reading_conns), sum(waiting_conns), sum(active_conns)
from http;

Screenshot

流量 Top 10 的 URI

统计流量排名前 10 的 URI。

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

Screenshot

访问量 Top 10 的 URI

统计访问量排名前 10 的 URI。

select uri, count(*) as count
from reqs
group by uri
order by count desc
limit 10;

Screenshot

平均延时 Top 10 的 URI

统计平均延时排名前 10 的 URI。

select uri, avg(latency_ms) as latency
from reqs
group by uri
order by latency desc
limit 10;

Screenshot

HTTP 代理缓存命中率和丢失率

统计 HTTP 代理缓存的命中率和丢失率,例如 hit, miss, bypass, updating, revalidated, stale, expired 等情况。

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

Screenshot

响应压缩情况

统计响应压缩情况,我们可以看到压缩和未压缩的数据。

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

Screenshot

HTTP 版本

HTTP 版本分布情况,如 HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 等的数据。

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

Screenshot

SSL 加密连接

统计 SSL 加密连接的分布情况。

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

Screenshot

Keepalive 连接

统计 keepalive 的连接情况。

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

Screenshot

流量 Top 10 的客户端城市

统计流量排名前 10 的客户端城市。

select client_city, count(*) as count
from reqs
group by client_city
order by count desc
limit 10;

Screenshot

流量 Top 10 的客户端 IP

统计流量排名前 10 的客户端 IP。

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

Screenshot

请求量 Top 10 的客户端 IP

统计请求量排名前 10 的客户端 IP。

select client_ip, count(*) as count
from reqs
group by client_ip
order by count desc
limit 10;

Screenshot

平均延时 Top 10 的客户端 IP

统计平均延时排名前 10 的客户端 IP。

select client_ip, avg(latency_ms) as latency
from reqs
group by client_ip
order by latency desc
limit 10;

Screenshot

请求数流量地图

以地图的形式展示全球请求数。

select count(*), client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude
from reqs
group by client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude;

Screenshot

请求大小流量地图

以地图的形式展示全球的请求流量。

select sum(total_size), client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude
from reqs
group by client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude;

Screenshot

响应总大小流量地图

以地图的形式展示全球的响应流量。

select sum(resp_size), client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude
from reqs
group by client_city, client_latitude, client_longtitude, server_city, server_latitude, server_longtitude;

Screenshot

平均延时 Top 10 的上游地址

统计平均延时排名前 10 的上游地址。

select upstream_addr, avg(upstream_total_time_ms) as latency
from reqs
group by upstream_addr
order by latency desc
limit 10;

Screenshot