系统的 QPS(Queries Per Second)可视化

1. 使用 Prometheus + Grafana(主流方案)

步骤:

  1. 采集数据(Prometheus)

    • 在应用中集成 Prometheus Client(如 prometheus-client for Python/Java/Go)。

    • 暴露 /metrics 端点,Prometheus 定期拉取数据。

    • 示例(Python Flask):

      python
       
      复制
       
      下载
      from prometheus_client import Counter, start_http_server
      REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP Requests')
      
      @app.route("/")
      def home():
          REQUEST_COUNT.inc()  # 每次请求 +1
          return "Hello World!"
  2. 存储 & 查询(Prometheus)

    • Prometheus 存储时间序列数据,支持 PromQL 查询:

      promql
       
      复制
       
      下载
      rate(http_requests_total[1m])  # 计算 QPS(1 分钟内的平均请求率)
  3. 可视化(Grafana)

    • 配置 Prometheus 数据源,创建 Dashboard:

      • QPS 曲线图:rate(http_requests_total[1m])

      • 峰值标记:设置告警阈值(如 QPS > 10,000 触发告警)。

      • 按接口/服务分组:sum(rate(http_requests_total{path="/api"}[1m])) by (path)

    Grafana QPS Dashboard


2. 使用 ELK Stack(Elasticsearch + Logstash + Kibana)

适用于日志分析场景:

  1. 采集日志(如 Nginx/API 访问日志):

    plaintext
     
    复制
     
    下载
    127.0.0.1 - GET /api/users 200 12ms
  2. Logstash 解析日志:

    conf
     
    复制
     
    下载
    filter {
      grok { match => { "message" => "%{IP:client} %{WORD:method} %{URIPATH:path} %{NUMBER:status} %{NUMBER:latency}ms" }
    }
  3. Kibana 可视化:

    • 创建 Time Series 图表,按 path 聚合 QPS。

    • 使用 Dashboard 展示实时 QPS 趋势。


3. 使用 Datadog / New Relic(SaaS 方案)

适用于云服务或企业级监控:

  • 自动采集:集成 APM(Application Performance Monitoring)探针。

  • 开箱即用的 QPS 仪表盘:

    • 按服务、接口、错误率分组。

    • 结合 Latency、Error Rate 分析性能瓶颈。

Datadog QPS Dashboard


4. 自定义方案(Python + Matplotlib / Plotly)

适合临时分析或小规模系统:

python
 
复制
 
下载
import time
import matplotlib.pyplot as plt

qps_history = []
timestamps = []

while True:
    current_qps = get_qps_from_logs()  # 从日志或数据库计算 QPS
    qps_history.append(current_qps)
    timestamps.append(time.time())
    
    plt.plot(timestamps, qps_history)
    plt.xlabel("Time")
    plt.ylabel("QPS")
    plt.pause(1)  # 每秒刷新
  • 可保存为动态 HTML(Plotly)或实时刷新(Matplotlib)。


5. 实时监控大屏(Apache Kafka + Flink + Superset)

适用于高并发实时系统:

  1. Kafka:接收请求日志流。

  2. Flink:实时计算 QPS(窗口统计)。

  3. Superset:展示实时 QPS 热力图、地理分布等。


最佳实践建议

  1. 分层监控:

    • 全局 QPS(负载均衡层,如 Nginx)。

    • 服务级 QPS(微服务 API)。

    • 数据库/缓存 QPS(如 Redis INFO STATS)。

  2. 结合其他指标:

    • Latency(P90/P99):高 QPS 是否导致延迟上升?

    • Error Rate:QPS 激增时错误是否增多?

  3. 告警机制:

    • 当 QPS 超过阈值时,触发企业微信/钉钉/Slack 通知。


最终推荐方案

场景推荐工具
中小型系统 Prometheus + Grafana
日志分析为主 ELK Stack
企业级云服务 Datadog / New Relic
实时大数据 Kafka + Flink + Superset

选择适合你团队技术栈的方案,确保 QPS 可视化能帮助快速定位问题!

posted @ 2025-06-04 17:56  GaoYanbing  阅读(15)  评论(0)    收藏  举报