MongoDB在CentOS上的监控与告警如何设置
导读:MongoDB在CentOS上的监控与告警实操指南 一 监控方案与组件 快速可用:使用 MongoDB 自带的命令行工具 mongostat、mongotop 与 db.serverStatus( 做即时排障与巡检。 长期可视化与告警:...
MongoDB在CentOS上的监控与告警实操指南
一 监控方案与组件
- 快速可用:使用 MongoDB 自带的命令行工具 mongostat、mongotop 与 db.serverStatus() 做即时排障与巡检。
- 长期可视化与告警:部署 Prometheus + MongoDB Exporter + Alertmanager + Grafana,实现指标采集、存储、告警路由与可视化。
- 企业级与托管:可选 Zabbix(模板监控)、MongoDB Ops Manager / Cloud Manager(官方)、或 Percona Monitoring and Management(PMM) 等。
- 系统层面:配合 node_exporter 采集主机 CPU、内存、磁盘 I/O,便于定位瓶颈。
二 快速上手 命令行与内置工具
- 连接与认证:确保 MongoDB 启用鉴权,使用 –authenticationDatabase admin 指定认证库。
- 实时性能:
- mongostat:观察插入/查询/更新/删除速率、连接数、网络与页错误等。
示例:mongostat --host 127.0.0.1 --port 27017 -u admin -p yourpass --authenticationDatabase admin - mongotop:按库/集合查看读写耗时,定位热点。
示例:mongotop --host 127.0.0.1 --port 27017 -u admin -p yourpass --authenticationDatabase admin
- mongostat:观察插入/查询/更新/删除速率、连接数、网络与页错误等。
- 深入状态:
- mongo shell 执行:db.serverStatus(),查看内存、连接、索引、操作计数等详细指标。
- 慢查询分析:开启 Profiler 记录慢操作,用于定位性能问题。
三 长期监控与告警 Prometheus方案
- 组件与端口规划:
- MongoDB Exporter(推荐 Percona 版):默认监听 9216;或社区版常见 9001/9114。
- Prometheus:默认 9090。
- Alertmanager:默认 9093。
- Grafana:默认 3000。
- 部署 MongoDB Exporter(示例为 Percona 版,便于采集更丰富指标):
- Docker 方式:
docker run -d -p 9216:9216 --name mongodb_exporter --restart unless-stopped
-e MONGODB_URI=“mongodb://username:password@localhost:27017”
percona/mongodb_exporter:latest - 二进制方式:下载解压后运行 ./mongodb_exporter --web.listen-address=:9216(按实际版本与参数调整)。
- Docker 方式:
- 配置 Prometheus 抓取:编辑 prometheus.yml
scrape_configs:- job_name: ‘mongodb’
static_configs:- targets: [‘localhost:9216’]
- job_name: ‘node’
static_configs:- targets: [‘localhost:9100’] # node_exporter
- job_name: ‘mongodb’
- 配置 Alertmanager:创建 alertmanager.yml(以企业微信为例)
global:
resolve_timeout: 2m
wechat_api_url: ‘https://qyapi.weixin.qq.com/cgi-bin/’
route:
group_by: [‘alertname_wechat’]
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: ‘wechat’
receivers:- name: ‘wechat’
wechat_configs:- send_resolved: true
to_party: ‘1’
agent_id: ‘1000002’
corp_id: ‘w*’
api_secret: ‘W*’
- send_resolved: true
- name: ‘wechat’
- 在 Prometheus 启用告警路由与规则:
alerting:
alertmanagers:
- static_configs:
- targets: [‘localhost:9093’]
rule_files:- “rules.yml”
- Grafana 可视化:
- 添加数据源:URL 填入 http://:9090。
- 导入 MongoDB 仪表盘(如 Percona 官方仪表盘,导入对应 ID),快速获得指标面板。
四 关键告警规则示例
- 实例宕机:
- expr: up{ job=“mongodb”} == 0
- for: 1m
- labels: severity=critical
- annotations: summary=“MongoDB instance down”
- 连接数过高:
- expr: mongodb_connections{ state=“current”} > 10000
- for: 5m
- labels: severity=warning
- annotations: summary=“MongoDB connections high”
- 复制延迟(适用于副本集):
- expr: mongodb_replset_member_optime_lag_seconds{ state=“PRIMARY”} > 10
- for: 2m
- labels: severity=warning
- annotations: summary=“MongoDB replication lag high”
- 主机宕机(node_exporter):
- expr: up{ job=“node”} == 0
- for: 1m
- labels: severity=critical
- annotations: summary=“Host down”
- 磁盘可用空间低:
- expr: (1 - node_filesystem_free{ fstype=~“ext[34]|xfs”} /node_filesystem_size{ fstype=~“ext[34]|xfs”} ) * 100 > 85
- for: 5m
- labels: severity=warning
- annotations: summary=“Disk usage high on {
{
$labels.mountpoint }
}
”
说明:指标名以所用 MongoDB Exporter 的暴露指标为准(不同发行版可能略有差异)。
五 运维与安全要点
- 最小权限监控账号:为 Exporter 创建仅具 clusterMonitor 与(可选)readAnyDatabase 的只读账号,避免使用 root。
- 网络与防火墙:仅开放 9216/9100/9090/9093/3000 等必要端口,限制来源网段。
- 高可用:生产环境建议 Prometheus 与 Alertmanager 做 多实例 与 反亲和 部署,避免单点。
- 日志与审计:保留 mongod.log(常见路径 /var/log/mongodb/mongod.log),必要时开启审计日志以追溯敏感操作。
- 基线调优:结合业务峰值设置合理的 scrape_interval(如 15s)与 for 持续时间,减少抖动与告警疲劳。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在CentOS上的监控与告警如何设置
本文地址: https://pptw.com/jishu/760806.html
