如何使用Datadog Agent监控MongoDB Replica Set成员状态并实现变更告警
前置准备:配置Datadog MongoDB集成
- 首先确保你已经在所有MongoDB副本集节点上安装了Datadog Agent,版本不低于7.30.0,更低版本对副本集状态采集的兼容性较差。
- 给Datadog Agent创建MongoDB专用监控用户,权限至少包含
clusterMonitor和readAnyDatabase角色,在Mongo shell中执行以下命令创建:
use admin db.createUser({ user: "datadog-monitor", pwd: "自定义安全密码", roles: [ { role: "clusterMonitor", db: "admin" }, { role: "readAnyDatabase", db: "admin" } ] })
配置副本集状态采集规则
- 找到Datadog Agent的MongoDB集成配置文件,默认路径为
/etc/datadog-agent/conf.d/mongo.d/conf.yaml,在配置中增加以下字段开启副本集状态采集:
init_config: instances: - hosts: - localhost:27017 username: datadog-monitor password: 你设置的监控用户密码 database: admin # 开启副本集状态采集核心开关 replset_check: true # 给指标打副本集标签方便分组管理 tags: - mongodb_replset: 你的副本集自定义名称
- 保存配置后重启Datadog Agent,执行
sudo systemctl restart datadog-agent,然后运行datadog-agent check mongo命令验证采集是否正常,正常输出中会出现mongodb.replset.member.state指标,该指标对应状态映射如下:- 0:Startup(节点启动中)
- 1:Primary(主节点)
- 2:Secondary(从节点)
- 3:Recovering(节点恢复中)
- 5:Startup2(节点初始化同步中)
- 6:Unknown(节点状态未知)
- 7:Arbiter(仲裁节点)
- 8:Down(节点不可达)
- 9:Rollback(节点回滚中)
- 10:Removed(节点已被移出副本集)
配置状态变更告警
- 进入Datadog控制台的Monitors页面,新建Metric类型告警
- 监控指标选择
mongodb.replset.member.state,聚合维度按host、mongodb_replset分组 - 告警触发条件设置为:当指标值在1分钟内发生变化时触发告警,你也可以按需设置更精细的规则,比如检测到Primary节点状态从1变为非1时触发紧急告警
- 告警通知内容建议增加
{{host.name}}、{{mongodb_replset}}、{{state_value}}变量,方便直接定位发生变更的节点、所属副本集和最新状态
内容的提问来源于stack exchange,提问作者Rabi
相关产品推荐
相关产品推荐

