面试题答案
一键面试关键监控指标
- 节点状态
- 健康状态:判断节点是否正常运行,如是否处于
PRIMARY
、SECONDARY
或STARTUP
等状态。异常状态可能导致数据读写问题。 - 连接状态:确保各节点之间能够正常通信,网络连接中断会影响副本集的同步和选举。
- 健康状态:判断节点是否正常运行,如是否处于
- 复制状态
- 同步延迟:
SECONDARY
节点与PRIMARY
节点之间的数据同步延迟情况。延迟过高可能影响数据的一致性,在故障切换时导致数据丢失。 - 复制滞后时间:反映
SECONDARY
节点落后PRIMARY
节点的时间,通过查看操作日志应用的进度来衡量。
- 同步延迟:
- 性能指标
- 读写吞吐量:包括每秒的读操作次数(
reads/s
)和写操作次数(writes/s
)。过高的读写压力可能导致性能瓶颈,影响系统响应速度。 - 磁盘 I/O:磁盘的读写速度、I/O 等待时间等。MongoDB 对磁盘 I/O 依赖较大,I/O 性能不佳会拖慢整个系统。
- 内存使用:MongoDB 会将频繁访问的数据缓存在内存中,监控内存使用率,避免因内存不足导致频繁磁盘读写。
- 读写吞吐量:包括每秒的读操作次数(
- 操作日志
- 操作日志大小:操作日志记录了所有数据变更操作,过大或过小都可能有问题。过大可能占用过多磁盘空间,过小可能导致
SECONDARY
节点同步不及时。 - 操作日志使用情况:如操作日志的填充比例,接近 100% 时可能需要采取措施,如增加日志大小或清理旧日志。
- 操作日志大小:操作日志记录了所有数据变更操作,过大或过小都可能有问题。过大可能占用过多磁盘空间,过小可能导致
基础监控环境搭建
- 安装监控工具
- Prometheus:它是一个开源的系统监控和报警工具包。可以通过官方文档下载并安装适合系统环境的版本。
- Grafana:用于可视化监控数据。同样可从官方获取安装包,按照对应操作系统的安装指南进行安装。
- 配置 MongoDB 导出器
- 安装 MongoDB 导出器:可以从 GitHub 等开源仓库下载适合版本的 MongoDB 导出器(如
mongodb_exporter
)。 - 配置导出器:编辑导出器的配置文件,设置连接 MongoDB 副本集的相关参数,如副本集地址、认证信息(如果有)等。启动导出器后,它会定期收集 MongoDB 的监控指标并暴露在指定端口。
- 安装 MongoDB 导出器:可以从 GitHub 等开源仓库下载适合版本的 MongoDB 导出器(如
- 配置 Prometheus
- 编辑 Prometheus 的配置文件(通常为
prometheus.yml
),添加 MongoDB 导出器的抓取任务。例如:
- 编辑 Prometheus 的配置文件(通常为
scrape_configs:
- job_name:'mongodb'
static_configs:
- targets: ['mongodb_exporter_ip:port']
这里 mongodb_exporter_ip
是导出器所在服务器的 IP,port
是导出器暴露指标的端口。保存配置后重启 Prometheus,使其生效。
4. 配置 Grafana
- 添加数据源:登录 Grafana,在数据源设置中添加 Prometheus 数据源,填写 Prometheus 的访问地址。
- 导入仪表盘:Grafana 社区有许多现成的 MongoDB 监控仪表盘模板。可以搜索并导入合适的模板,该模板会根据从 Prometheus 获取的数据进行可视化展示,从而初步搭建起 MongoDB 副本集的基础监控环境。