Dynamic Metrics

Global dynamic metrics can dynamically aggregate the data you want by writing Metrics SQL.

More Metrics SQL details can be found in this documentation. Metrics SQL

Global Dynamic Metrics

Global dynamic metrics integrate global data, such as statistics on current gateway cache hit rates, upstream and downstream traffic sizes, distribution of request status codes, etc.

Unlike the application dynamic metrics, the global dynamic metrics provide a filter item for gateway services that allows you to view data for each gateway service.

Screenshot

We can create a dynamic metric manually by clicking the “New Metric” button, or we can directly enable some metrics in the standard dynamic metrics.

Screenshot

Adding a dynamic metric allows us to write our own Metric SQL to dynamically aggregate the desired data.

More Metrics SQL details can be found in this documentation. Metrics SQL

Screenshot

For new and newly enabled dynamic metrics, it takes one to two minutes for the data to become available.

Global Standard Dynamic Metrics

Global standard dynamic metrics aggregates many commonly used dynamic metrics statistics, greatly reducing the cost of manual creation for everyone.

The following is a detailed description of each of the global standard dynamic metrics.

Request Count per Second

Statistics QPS(Queries Per Second), the number of request per second of the servers.

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

Screenshot

Request Count per Minute

Statistics on the number of request per minute of the servers.

select count(*) as qpm from http;

Screenshot

Status Code Distribution

Count the number of HTTP response status codes. Such as the count of 200, 301, 404, 500, etc.

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

Screenshot

Total Concurrent Connections

Statistics of connections, including writing connections, reading connections, waiting connections and active connections.

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

Screenshot

Downstream Total Bytes

Statistics total bytes of downstream.

select sum(total_size) as downstream_bytes_total
from reqs;

Screenshot

Upstream Total Bytes

Statistics total bytes of upstream.

select sum(upstream_byte_total) as upstream_bytes_total
from reqs;

Screenshot

HTTP Proxy Cache Hits & Misses

Statistics HTTP proxy cache hits & misses, such as the count of hit, miss, bypass, updating, revalidated, stale, expired, etc.

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 Hosts by Traffic Data Size

Statistics of the top 10 hosts by traffic data size.

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

Screenshot

Top 10 Hosts by Request Counts

Statistics of the top 10 hosts by request counts.

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

Screenshot

Top 10 Client IPs by Traffic Data Size

Statistics of the top 10 request client IPs by traffic data size.

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

Screenshot

Top 10 Client IPs by Request Counts

Statistics of the top 10 client IPs by request counts.

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

Screenshot

Response Compressed

Statistics on the number of responses compressed, we can see the number of compressed and the number of uncompressed.

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

Screenshot

HTTP Versions

HTTP versions distribution statistics, such as the number of HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3, etc.

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

Screenshot

SSL Encrypted Connections

Statistics on the distribution of SSL encrypted connections.

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

Screenshot

Keepalive Connections

Statistics on the distribution of keepalive connections.

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

Screenshot

Application Dynamic Metrics

Application dynamic metrics are similar to global dynamic metrics, but will only count requests that currently belong to the application.

Application dynamic metrics, like global dynamic metrics, can also be used to manually write metrics SQL to dynamically aggregate the desired data, or to directly enable some metrics in the standard dynamic metrics.

More Metrics SQL details can be found in this documentation. Metrics SQL

Screenshot

Screenshot

Application Standard Dynamic Metrics

Application standard dynamic metrics aggregates many commonly used dynamic metrics statistics, greatly reducing the cost of manual creation for everyone.

Application standard dynamic metrics are similar to global dynamic metrics, but will only count requests that currently belong to the application.

The following is a detailed description of each of the standard dynamic metrics.

Request Count per Second

Statistics QPS(Queries Per Second), the number of request per second of the servers.

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

Screenshot

Request Count per Minute

Statistics on the number of request per minute of the servers.

select count(*) as qpm from http;

Screenshot

Status Code Distribution

Count the number of HTTP response status codes. Such as the count of 200, 301, 404, 500, etc.

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

Screenshot

Total Concurrent Connections

Statistics of connections, including writing connections, reading connections, waiting connections and active connections.

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

Screenshot

Top 10 URIs by Traffic Data Size

Statistics of the top 10 request URIs by traffic data size.

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

Screenshot

Top 10 URIs by Request Counts

Statistics of the top 10 URIs by request counts.

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

Screenshot

Top 10 URIs by Average Latency

Statistics of the top 10 URIs in terms of average latency.

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

Screenshot

HTTP Proxy Cache Hits & Misses

Statistics HTTP proxy cache hits & misses, such as the count of hit, miss, bypass, updating, revalidated, stale, expired, etc.

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

Screenshot

Response Compressed

Statistics on the number of responses compressed, we can see the number of compressed and the number of uncompressed.

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

Screenshot

HTTP Versions

HTTP versions distribution statistics, such as the number of HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3, etc.

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

Screenshot

SSL Encrypted Connections

Statistics on the distribution of SSL encrypted connections.

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

Screenshot

Keepalive Connections

Statistics on the distribution of keepalive connections.

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

Screenshot

Top 10 Client Cities by Traffic Data Size

Statistics of the top 10 client cities by traffic data size.

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

Screenshot

Top 10 Client IPs by Traffic Data Size

Statistics of the top 10 client IPs by traffic data size.

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

Screenshot

Top 10 Client IPs by Request Counts

Statistics of the top 10 client IPs by request counts.

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

Screenshot

Top 10 Client IPs by Average Latency

Statistics of the top 10 client IPs in terms of average latency.

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

Screenshot

Traffic Map of Request Count

Display global request traffic as a map.

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

Traffic Map of Request Total Size

Display global request total size as a map.

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

Traffic Map of Response Total Size

Display global response total size as a map.

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 Upstream Addresses by Average Latency

Statistics of the top 10 upstream addresses in terms of average latency.

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

Screenshot