核心监控指标:掌握搜索引擎的关键性能指标
大家好,我是老张。今天咱们聊聊搜索引擎监控里最核心的几个指标。说实话,我见过太多团队一上来就搞复杂的告警规则,结果连最基本的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分钟的窗口。
六、实战中的几个坑
最后,分享几个我踩过的坑:
- 指标太多反而看不清:刚开始我恨不得把所有指标都放上去,结果看板密密麻麻,啥也看不出来。后来精简到10个核心指标,反而更容易发现问题。
- 告警阈值别拍脑袋:我建议先跑两周数据,看看正常范围是多少,再设阈值。不然天天误报,大家就麻木了。
- 别忘了历史数据:Prometheus默认只保留15天数据。我建议至少保留3个月,方便做趋势分析和容量规划。
总结一下:QPS看流量,延迟看体验,错误率看健康,资源利用率看容量。把这四个指标盯好了,搜索引擎的命脉就握在你手里了。
下一章咱们聊聊怎么用这些指标做容量规划和扩容决策。到时候我会分享一个真实的扩容案例,保证让你少走弯路。