feat(rate-limits): use 3-minute trend buckets

Rate-limit analysis requests overview with bucket_minutes=3; RPS uses
count/180. Overview still defaults to 60-minute buckets.
This commit is contained in:
ryan
2026-07-19 20:30:20 +08:00
parent abe8fb8268
commit 20249d917c
5 changed files with 7 additions and 7 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ sidebar: false
- 站点流量限制语义调整为空或 `0` 继承全局默认、`-1` 关闭、大于 `0` 自定义;修改全局默认后需发布配置版本生效。
- Agent Docker 部署命令默认挂载命名卷 `openflare-agent-pages` 持久化 Pages 目录,重建容器时无需重新拉取静态站点包。
- 限流页新增「分析」视图:默认展示近 24 小时请求压力(RPS)与独立访客双轴趋势(1 分钟桶),支持域名过滤与 24 小时/3 天预设,并按窗口平均 RPS 排行域名与 IP;原全局默认配置迁入「配置」页签。
- 限流页新增「分析」视图:默认展示近 24 小时请求压力(RPS)与独立访客双轴趋势(3 分钟桶),支持域名过滤与 24 小时/3 天预设,并按窗口平均 RPS 排行域名与 IP;原全局默认配置迁入「配置」页签。
### 修复
@@ -14,7 +14,7 @@ import {
type RateLimitRangeHours,
} from '../../access-logs/components/access-log-utils';
const DEFAULT_BUCKET_SECONDS = 60;
const DEFAULT_BUCKET_SECONDS = 180;
const RPS_COLOR = '#38bdf8';
const VISITS_COLOR = '#a78bfa';
@@ -61,7 +61,7 @@ export function RatePressureChart({ data, hours }: RatePressureChartProps) {
const bucketSeconds =
(data?.bucket_minutes && data.bucket_minutes > 0
? data.bucket_minutes
: 1) * 60 || DEFAULT_BUCKET_SECONDS;
: 3) * 60 || DEFAULT_BUCKET_SECONDS;
const rangeLabel = useMemo(() => {
const end = data?.generated_at ? new Date(data.generated_at) : new Date();
+2 -2
View File
@@ -31,12 +31,12 @@ function RateLimitsPageContent() {
const [hosts, setHosts] = useState<string[]>([]);
const overviewQuery = useQuery({
queryKey: ['openflare', 'rate-limits', 'overview', hours, hosts, 1],
queryKey: ['openflare', 'rate-limits', 'overview', hours, hosts, 3],
queryFn: () =>
AccessLogService.getOverview({
hours,
hosts: hosts.length > 0 ? hosts : undefined,
bucket_minutes: 1,
bucket_minutes: 3,
}),
enabled: !!user?.is_admin && tab === 'analysis',
});
@@ -374,7 +374,7 @@ func normalizeAccessLogOverviewQuery(input AccessLogOverviewQuery) AccessLogOver
func normalizeAccessLogOverviewBucketMinutes(value int) int {
switch value {
case 1, 5, 60:
case 1, 3, 5, 60:
return value
default:
return defaultAccessLogOverviewBucketMinutes
@@ -22,7 +22,7 @@ import (
// @Param host query string false "请求 Host(单域名)"
// @Param hosts query []string false "请求 Host 列表(多域名精确匹配)"
// @Param hours query int false "统计时间范围(小时)"
// @Param bucket_minutes query int false "趋势桶分钟数(1、5 或 60,默认 60)"
// @Param bucket_minutes query int false "趋势桶分钟数(1、3、5 或 60,默认 60)"
// @Success 200 {object} response.Any{data=observability.AccessLogOverview} "访问日志概览"
// @Failure 400 {object} response.Any "参数错误"
// @Failure 401 {object} response.Any "未登录"