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