首页/数据/NoSQL 速查/核心监控指标与采集入口
选型与架构50 条

核心监控指标与采集入口

每个库都有对应的指标入口:延迟分位、错误率、连接与排队、复制延迟、缓存命中与资源水位。监控要先定义告警阈值与处置动作,再谈采集;只堆积仪表盘而没有动作等于没监控。

NoSQL 速查数据更新于 2026-10-13

监控先要有动作

监控的目标不是把指标堆进仪表盘,而是让异常能被发现、有人处置。每个库都有稳定的入口:延迟分位看用户体验,连接与排队看容量,复制延迟看数据一致性风险,缓存命中与磁盘水位看资源趋势。采集之前先约定阈值与处置动作,采集之后定期复核阈值是否还贴合业务。

指标与入口

类别关注点采集入口示例
延迟p95/p99 与慢操作数量MongoDB opLatencies;ES _nodes/stats;CH system.query_log
容量与排队连接数、队列、拒绝数ES _cat/thread_pool;MongoDB connections;Redis INFO clients
复制延迟秒数与中断MongoDB rs.status();CH system.replication_queue
缓存与内存命中率、内存与碎片Redis INFO stats;WiredTiger 缓存指标
磁盘与合并水位、合并积压CH system.parts;ES _cat/segments
可用性探活与错误率HTTP 探针、驱动错误计数

采集示例

采集示例
# MongoDB:复制集成员状态与连接数
mongosh --eval "rs.status().members.map(m => [m.name, m.stateStr]); db.serverStatus().connections"

# Elasticsearch:健康状态与线程池拒绝
curl -s "localhost:9200/_cluster/health?pretty"
curl -s "localhost:9200/_cat/thread_pool?v&h=node_name,name,active,queue,rejected"

# ClickHouse:表的磁盘占用
clickhouse-client -q "SELECT table, formatReadableSize(sum(bytes_on_disk)) FROM system.parts WHERE active GROUP BY table"

采集怎么接进监控系统

常见做法是用对应的采集器把指标拉到 Prometheus 一类时序库,再由告警规则触发通知;也可以用应用层埋点直接上报。无论哪种方式,都要统一标签口径,让同一条指标能按实例、库、接口维度下钻,否则出问题时只能看总量。

典型使用场景

  • 容量评估:按连接数与队列长度判断是否需要扩节点
  • 故障复盘:用延迟分位与拒绝数还原问题时间线
  • 复制告警:复制延迟超阈值时先确认网络还是写入压力
  • 巡检报表:按周对比水位与增长趋势
  • 告警调优:按历史基线复核阈值,减少噪声与静默
告警要分级:p99 超阈值与节点离线走不同通道;阈值先按历史基线加缓冲,再随容量变化定期复核,避免长期噪声或长期静默。
只采集不定义动作等于没监控:告警规则要与值班手册里的处置步骤一一对应,否则收到通知的人只能凭感觉处理。

易错点

  • 只监控平均值会掩盖尾延迟,用户感知到的问题往往发生在 p99,平均值看着平稳不代表服务正常
  • 没有告警动作清单,值班收到报警后临时判断处置方式,恢复时间被拉长
  • 指标没有统一标签口径,出故障时无法按实例或库下钻,只能看到总量而定位不到具体节点
  • 监控账号权限不足导致采集静默失败,仪表盘长时间没有新数据却没人发现,需要给采集链路本身加探活
  • 复制延迟只看瞬时值不看趋势,短时抖动与持续落后要区分对待,否则容易漏掉真实的一致性风险

数据来源与参考

  • MongoDB Manual: Monitoring
  • Elasticsearch Guide: Monitoring
  • ClickHouse Docs: System tables
  • Redis Docs: INFO
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌