NoSQL监控怎么做?实战经验分享

{"title":"NoSQL监控怎么做?实战经验分享","content":"

NoSQL监控怎么做?从实际场景说起

\n

公司最近上线了一个新功能,用户量一上来,Redis 就开始频繁超时。运维同事一头雾水,查日志看不出问题,最后还是通过监控工具发现是某个 key 的访问频率异常飙升,导致单节点负载过高。这事儿之后,大家才意识到:NoSQL 不能只管用,不管看。

\n\n

为什么 NoSQL 更需要监控

\n

关系型数据库有慢查询日志、执行计划,排查起来还有迹可循。NoSQL 比如 Redis、MongoDB、Cassandra 这类,结构松散,读写快,但一旦出问题,往往是雪崩式的。比如缓存击穿、大 key 阻塞、连接数打满,这些都可能让服务直接卡住。

\n\n

监控要盯哪些关键指标

\n

不同 NoSQL 产品侧重点不一样,但核心指标大体相通:

\n
    \n
  • 命中率:Redis 缓存命中率低于 90%,就得警惕了
  • \n
  • 响应延迟:P99 延迟突然升高,可能是大 key 或慢操作在作祟
  • \n
  • 连接数:连接暴涨可能是代码没释放连接,也可能是被攻击
  • \n
  • 内存使用:Redis 内存快满了会触发淘汰策略,影响业务逻辑
  • \n
  • 复制延迟:MongoDB 主从同步延迟高,故障切换时可能丢数据
  • \n
\n\n

用 Prometheus + Grafana 监控 Redis 示例

\n

这是目前最常用的组合。先在服务器上部署 redis_exporter,它能把 Redis 的 INFO 信息转成 Prometheus 能抓取的格式。

\n\n
# 启动 redis_exporter\n./redis_exporter -redis.addr redis://127.0.0.1:6379\n\n# 配置 Prometheus 抓取任务\n- job_name: 'redis'\n  static_configs:\n    - targets: ['localhost:9121']
\n\n

接着在 Grafana 导入一个现成的 Redis 监控面板,比如 ID 为 763 的模板,立刻就能看到内存、命中率、命令调用次数等图表。

\n\n

给 MongoDB 加监控也不难

\n

MongoDB 官方提供了 mongodb_exporter,配置方式和上面类似。重点关注 opcounters(每秒操作数)、cursor 数量、锁等待时间。如果发现 cursor 长期不释放,很可能是应用层没关游标。

\n\n
# 启动 mongodb_exporter\n./mongodb_exporter --mongodb.uri=mongodb://user:pass@127.0.0.1:27017
\n\n

别忘了设置告警

\n

光看图不行,得让系统主动喊你。比如设置:Redis 命中率连续 5 分钟低于 85% 就发钉钉通知;MongoDB 复制延迟超过 30 秒就邮件告警。Prometheus 的 Alertmanager 正好干这个活。

\n\n
groups:\n- name: mongodb_alert\n  rules:\n  - alert: MongoReplicationLag\n    expr: mongodb_mongod_replset_member_state == 1 and mongodb_mongod_replset_member_optime_date_diff > 30000\n    for: 2m\n    labels:\n      severity: warning\n    annotations:\n      summary: 'MongoDB 复制延迟过高'
\n\n

小团队也能低成本做监控

\n

如果你只是维护一个小项目,没必要搭一整套 Prometheus。可以用一些轻量工具,比如:

\n
    \n
  • Redis 自带 redis-cli --stat 实时查看状态
  • \n
  • 写个脚本定时跑 INFO 命令,把关键字段记到日志里
  • \n
  • 用云服务商提供的监控,比如阿里云 Redis 控制台自带监控页面
  • \n
\n\n

关键是养成“先看监控”的习惯,而不是等用户投诉了再动手。”,"seo_title":"NoSQL监控怎么做 - 数码资讯网络排错栏目","seo_description":"NoSQL监控怎么做?本文结合Redis、MongoDB实际案例,介绍如何通过Prometheus、Grafana等工具监控NoSQL数据库的关键指标与告警设置。","keywords":"NoSQL监控,Redis监控,MongoDB监控,数据库监控,网络排错"}