Skip to content

MongoDB Atlas 监控

监控功能

仪表盘

概述仪表盘

  • 显示集群的关键性能指标
  • 包括操作数、延迟、连接数、CPU 使用率等
  • 支持时间范围选择
  • 可添加到收藏夹

自定义仪表盘

  • 支持创建多个自定义仪表盘
  • 可添加不同类型的图表和指标
  • 支持拖拽调整布局
  • 可分享给其他团队成员

示例仪表盘

  • 性能监控仪表盘:显示操作数、延迟、连接数等
  • 资源使用仪表盘:显示 CPU、内存、磁盘使用率等
  • 查询性能仪表盘:显示慢查询、扫描文档数等

性能指标

集群级指标

  • 操作数:每秒读写操作数
  • 延迟:读写操作的平均延迟
  • 连接数:当前活跃连接数
  • 队列长度:等待处理的请求队列长度
  • 复制延迟:从节点与主节点的延迟

节点级指标

  • CPU 使用率:节点的 CPU 利用率
  • 内存使用率:节点的内存使用情况
  • 磁盘使用率:节点的磁盘使用情况
  • 磁盘 I/O:磁盘读写速率
  • 网络 I/O:网络收发速率

数据库级指标

  • 集合大小:每个集合的数据大小
  • 索引大小:每个集合的索引大小
  • 文档计数:每个集合的文档数量
  • 操作统计:每个集合的读写操作数

慢查询分析

慢查询日志

  • 记录执行时间超过阈值的查询
  • 默认阈值为 100 毫秒
  • 可自定义阈值
  • 支持按时间范围查询

查询分析

  • 显示查询执行时间、扫描文档数、返回文档数等
  • 支持查看查询计划
  • 支持索引建议
  • 可导出查询数据

慢查询示例

  • 查询执行时间:150 毫秒
  • 扫描文档数:10000
  • 返回文档数:10
  • 查询语句:db.users.find({ "age": { "$gt": 30 } })
  • 索引建议:创建索引 { "age": 1 }

告警配置

告警类型

系统告警

  • CPU 使用率过高
  • 内存使用率过高
  • 磁盘使用率过高
  • 连接数过多
  • 复制延迟过高

性能告警

  • 操作延迟过高
  • 操作数突增
  • 慢查询数过多
  • 队列长度过长

可用性告警

  • 节点状态变化
  • 副本集选举
  • 分片集群状态变化
  • 备份失败

告警规则

规则配置

  • 选择监控指标
  • 设置阈值和持续时间
  • 选择告警级别(信息、警告、严重)
  • 配置通知方式

示例告警规则

  • 指标:CPU 使用率
  • 条件:> 80%
  • 持续时间:5 分钟
  • 级别:警告
  • 通知:邮件和 Slack

告警抑制

  • 支持设置告警抑制规则
  • 避免重复告警
  • 可按时间或条件抑制
  • 支持手动确认和关闭告警

通知方式

邮件通知

  • 发送告警邮件到指定邮箱
  • 支持多个收件人
  • 可自定义邮件模板

Slack 通知

  • 发送告警到指定 Slack 频道
  • 支持格式化消息
  • 可添加交互按钮

PagerDuty 通知

  • 集成 PagerDuty 告警系统
  • 支持告警升级
  • 可跟踪告警处理状态

Webhook 通知

  • 发送 HTTP 请求到自定义端点
  • 支持 JSON 格式
  • 可集成到自定义监控系统

监控数据管理

数据保留

保留策略

  • 实时数据:保留 1 小时
  • 小时数据:保留 30 天
  • 天数据:保留 90 天
  • 周数据:保留 1 年

数据采样

  • 高频数据自动采样
  • 确保监控系统性能
  • 保持数据准确性

数据导出

  • 支持导出监控数据
  • 可导出为 CSV 或 JSON 格式
  • 支持指定时间范围
  • 可用于外部分析

API 访问

监控 API

  • 提供 REST API 访问监控数据
  • 支持查询各种指标
  • 可集成到第三方监控系统
  • 支持认证和授权

API 示例

bash
# 获取集群性能指标
curl -u "<username>:<apiKey>" \
  "https://cloud.mongodb.com/api/atlas/v1.0/groups/<groupId>/clusters/<clusterName>/processes/<hostname>:<port>/metrics?granularity=PT1M&period=PT1H&metrics=CPU,RAM,CONN"

第三方集成

  • 支持与 Grafana 集成
  • 可将 Atlas 监控数据导入 Grafana
  • 支持自定义 Grafana 仪表盘
  • 支持告警配置

最佳实践

监控配置

关键指标监控

  • CPU 和内存使用率
  • 磁盘空间和 I/O
  • 连接数和操作数
  • 复制延迟
  • 慢查询数

告警阈值设置

  • 根据业务需求设置合理的阈值
  • 避免过于敏感导致频繁告警
  • 定期调整阈值,适应业务变化
  • 测试告警规则,确保能正确触发

仪表盘设计

  • 创建针对不同角色的仪表盘
  • 如:运维仪表盘、开发仪表盘、管理层仪表盘
  • 重点突出关键指标
  • 保持仪表盘简洁易用

性能优化

基于监控的优化

  • 分析慢查询日志,优化查询语句
  • 根据索引建议创建合适的索引
  • 调整集群配置,优化资源使用
  • 根据连接数调整连接池配置

容量规划

  • 监控资源使用趋势
  • 预测未来资源需求
  • 提前扩容,避免资源不足
  • 优化数据模型,减少资源消耗

故障预防

  • 监控异常指标,提前发现问题
  • 配置告警,及时响应故障
  • 定期分析监控数据,识别潜在问题
  • 制定预防性维护计划

团队协作

权限管理

  • 为团队成员分配适当的监控权限
  • 支持角色级别的权限控制
  • 可限制访问特定集群或资源

告警通知分发

  • 为不同团队配置不同的告警通知
  • 确保相关人员及时收到告警
  • 建立告警处理流程
  • 定期回顾告警处理情况

知识共享

  • 分享监控仪表盘和告警规则
  • 记录常见问题和解决方案
  • 定期举办监控培训
  • 建立监控知识库

常见问题(FAQ)

Q1: 如何访问 Atlas 监控数据?

A1: 可以通过以下方式访问:

  • Atlas 控制台:在 Atlas 控制台的 "Metrics" 标签页查看
  • API:使用 Atlas Monitoring API 查询
  • Grafana:通过 Grafana 集成导入数据
  • 导出:将数据导出为 CSV 或 JSON 格式

Q2: 如何设置合理的告警阈值?

A2: 设置告警阈值的建议:

  • 根据业务需求和 SLA 设置
  • 参考历史数据,了解正常范围
  • 从保守的阈值开始,逐步调整
  • 考虑不同时间段的业务流量变化

Q3: 如何分析慢查询?

A3: 分析慢查询的步骤:

  1. 在 Atlas 控制台的 "Performance Advisor" 查看慢查询
  2. 分析查询执行时间、扫描文档数、返回文档数等指标
  3. 查看查询计划,了解索引使用情况
  4. 根据建议创建或优化索引
  5. 优化查询语句,减少扫描文档数

Q4: 如何监控分片集群?

A4: 分片集群监控方法:

  • 集群级监控:查看整体性能和状态
  • 分片级监控:查看每个分片的资源使用情况
  • 节点级监控:查看单个节点的性能
  • 集合级监控:查看集合的操作统计

Q5: 如何集成 Atlas 监控与第三方工具?

A5: 集成方式:

  • Grafana:使用 Atlas 数据源插件
  • 告警系统:配置 webhook 或 PagerDuty 集成
  • 自定义监控:使用 Atlas Monitoring API
  • 日志系统:配置日志导出到外部系统

Q6: 如何管理监控数据的保留?

A6: 监控数据保留由 Atlas 自动管理,不同粒度的数据保留时间不同:

  • 实时数据:1 小时
  • 小时数据:30 天
  • 天数据:90 天
  • 周数据:1 年 无法自定义保留时间,但可以导出数据进行长期存储。

Q7: 如何监控 MongoDB Atlas 中的网络性能?

A7: 网络性能监控:

  • 查看节点级别的网络 I/O 指标
  • 监控连接数变化
  • 查看操作延迟,间接了解网络状况
  • 配置网络相关的告警规则

Q8: 如何优化 Atlas 监控的性能?

A8: 优化监控性能的方法:

  • 减少自定义仪表盘的数量
  • 减少图表中显示的指标数量
  • 选择合适的数据粒度
  • 避免同时查看多个长时间范围的数据
  • 定期清理不需要的仪表盘和告警规则