Grafana大盘加载变快的核心是减少数据量和计算量:控制每图数据点≤5000,用rate/irate、严格时间范围、预聚合、正则过滤、recording rules、分层面板及前后端协同优化。
让 Grafana 大盘查询加载变快,核心不是调高服务器配置,而是减少每次请求要处理的数据量和计算量。响应慢往往卡在“查什么”和“怎么查”,而不是“画不画得出来”。
Graph NG 渲染再快,也等不及几万点数据拖着网线过来。关键控制每张图实际加载的数据点数 ≤ 5000:
pod_name、instance)必须提前聚合,例如写成 sum(rate(http_requests_total[1m])) by (service, status_code)
job=~"api|auth",别用 job=~".*" 再靠前端筛仪表盘里反复出现的复杂表达式,比如 100 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100,每次刷新都重算,CPU 白烧。把它搬到 Prometheus 的 recording rules 里:
node_cpu_utilization:avg_rate5m = 100 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100
node_cpu_utilization:avg_rate5m,毫秒级返回一张大盘不必全堆“高精度+宽时间+多维度”。拆成三层,各自承担明确角色:
irate(metric[30s]),刷新间隔设为 1–2 秒sum(rate(...[1m])) by (service)
光优化查询不够,配套设置要跟上:
--storage.tsdb.min-block-duration=2h --storage.tsdb.max-block-duration=2h,减少跨块查询开销env="prod")命中率极高<meta name="viewport"> 正确设置,避免强制缩放导致重绘卡顿