核心监控指标:掌握搜索引擎的关键性能指标

大家好,我是老张。今天咱们聊聊搜索引擎监控里最核心的几个指标。说实话,我见过太多团队一上来就搞复杂的告警规则,结果连最基本的QPS都没看明白。嗯,咱们先把地基打牢。

一、QPS:搜索引擎的“心跳”

QPS,全称是Queries Per Second,每秒查询数。说白了,就是你的搜索引擎一秒钟能接多少活。

为什么QPS这么重要?

你想想看,QPS直接反映了系统的吞吐能力。如果QPS突然掉了一半,要么是用户少了,要么是系统出问题了。我在项目中遇到过好几次,QPS曲线突然断崖式下跌,结果发现是上游的负载均衡器挂了。

QPS监控要点:

  • 峰值QPS:一天中最高能扛多少请求
  • 平均QPS:日常的负载水平
  • QPS波动率:看看流量是不是忽高忽低

我的习惯:我会把QPS的监控粒度做到1秒级别。别小看这个,很多问题就藏在这1秒的波动里。我曾经靠这个发现了一个定时任务导致的毛刺。

二、延迟:用户体验的“温度计”

延迟,就是用户发一个请求到你返回结果,花了多长时间。这个指标直接决定了用户会不会骂娘。

我一般把延迟分成三个维度来看:

维度 含义 我的经验值
P50延迟 一半请求比这个快,一半比这个慢 一般控制在50ms以内
P99延迟 99%的请求都比这个快 建议不超过200ms
P999延迟 最慢的那0.1%的请求 超过1s就要报警了

为什么会这样?因为平均延迟会骗人。你想想看,100个请求里99个都是10ms,就一个花了10秒,平均下来还是100ms左右,看起来还行。但那个用户已经骂娘了。

避坑指南:我曾经只盯着平均延迟看,结果线上P99延迟飙到了3秒都没发现。后来我学乖了,P99和P999才是真正需要关注的指标。

三、错误率:系统的“警报器”

错误率,就是所有请求中出错的占比。这个指标我建议按HTTP状态码来细分:

  • 4xx错误:一般是用户的问题,比如参数不对
  • 5xx错误:这是咱们自己的锅,比如服务挂了
  • 超时错误:请求等太久,客户端放弃了

我个人习惯把错误率分成两个级别:

  • 软错误:错误率在0.1%以下,可能是偶发问题
  • 硬错误:错误率超过1%,必须立即处理

重要提醒:错误率不能只看总量。我记得有一次,整体错误率只有0.5%,但某个核心接口的错误率已经飙到了30%。所以一定要按接口维度拆分来看。

四、资源利用率:系统的“体检报告”

资源利用率包括CPU、内存、磁盘IO、网络带宽等。这些指标告诉你,你的机器还扛不扛得住。

我重点关注这几个:

资源 健康区间 危险区间
CPU使用率 40%-70% >90%
内存使用率 50%-80% >90%
磁盘IO等待 <10% >30%
网络带宽 <60% >80%

我的经验:CPU使用率不是越高越好。你想想看,如果CPU一直跑在95%以上,说明你的机器快扛不住了,稍微来点流量波动就可能挂掉。我一般建议留30%左右的余量。

五、用Prometheus和Grafana搭建监控看板

好了,指标说完了,咱们动手搭个看板。Prometheus负责采集数据,Grafana负责展示。

第一步:配置Prometheus采集指标

# prometheus.yml
scrape_configs:
  - job_name: 'search_engine'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
    metrics_path: '/metrics'
    # 采集QPS、延迟、错误率
    params:
      collect[]: ['qps', 'latency', 'error_rate']

第二步:在Grafana中创建看板

我个人习惯把看板分成四个区域:

  • 左上:QPS曲线,看整体流量
  • 右上:延迟分布,看P50、P99、P999
  • 左下:错误率,按状态码分颜色
  • 右下:资源利用率,CPU和内存放一起

第三步:写几个关键的PromQL查询

# QPS查询
rate(search_engine_requests_total[1m])

# P99延迟查询
histogram_quantile(0.99, 
  rate(search_engine_request_duration_seconds_bucket[5m]))

# 错误率查询
sum(rate(search_engine_errors_total[5m])) / 
sum(rate(search_engine_requests_total[5m])) * 100

注意:PromQL里的时间窗口别设太短。我曾经设了10秒的窗口,结果曲线抖得像心电图,根本看不出趋势。建议至少用1分钟或5分钟的窗口。

六、实战中的几个坑

最后,分享几个我踩过的坑:

  1. 指标太多反而看不清:刚开始我恨不得把所有指标都放上去,结果看板密密麻麻,啥也看不出来。后来精简到10个核心指标,反而更容易发现问题。
  2. 告警阈值别拍脑袋:我建议先跑两周数据,看看正常范围是多少,再设阈值。不然天天误报,大家就麻木了。
  3. 别忘了历史数据:Prometheus默认只保留15天数据。我建议至少保留3个月,方便做趋势分析和容量规划。

总结一下:QPS看流量,延迟看体验,错误率看健康,资源利用率看容量。把这四个指标盯好了,搜索引擎的命脉就握在你手里了。

下一章咱们聊聊怎么用这些指标做容量规划和扩容决策。到时候我会分享一个真实的扩容案例,保证让你少走弯路。