外观
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: 分析慢查询的步骤:
- 在 Atlas 控制台的 "Performance Advisor" 查看慢查询
- 分析查询执行时间、扫描文档数、返回文档数等指标
- 查看查询计划,了解索引使用情况
- 根据建议创建或优化索引
- 优化查询语句,减少扫描文档数
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: 优化监控性能的方法:
- 减少自定义仪表盘的数量
- 减少图表中显示的指标数量
- 选择合适的数据粒度
- 避免同时查看多个长时间范围的数据
- 定期清理不需要的仪表盘和告警规则
