使用 Health Manager 管理分片集群的运行状况
本文档介绍如何使用Health Manager来监控和管理分片集群的健康问题。
概述
健康管理器在 指定的时间对健康管理器方面运行健康检查强度等级。Health Manager检查按指定的时间间隔运行。可以将运行状况管理器配置为自动将出现故障的mongos从集群中移出。 进度监视器确保Health Manager检查不会卡住或无响应。
Health Manager方面
下表显示了可用的 Health Manager 方面:
Facet | Health Manager检查的内容 |
---|---|
configServer |
与配置服务器连接相关的集群运行状况问题。 |
dns |
与 DNS 可用性和功能相关的集群健康问题。 |
ldap |
与 LDAP 可用性和功能相关的集群运行状况问题。 |
Health Manager的强度级别
下表显示了可用的 Health Manager 强度级别:
强度等级 | 描述 |
---|---|
critical |
此方面的运行状况管理器已启用,并且能够在发生错误时将出现故障的mongos从集群中移出。Health Manager会等待指定的时间, activeFaultDurationSecs 然后自动停止mongos并将其移出集群。 |
non-critical |
此方面的运行状况管理器已启用并记录错误,但如果遇到错误, mongos仍保留在集群中。 |
off |
此方面的运行状况管理器已禁用。mongos不会在这方面执行任何健康检查,这是默认强度级别。 |
故障持续时间
当检测到故障并且Health Manager强度级别设置为 时critical
,Health Manager会等待 指定的时间, activeFaultDurationSecs
然后自动停止 mongos并将其移出集群。
进度监视器
进度监视器运行测试以确保Health Manager检查不会卡住或无响应。进度监视器按照 指定的时间间隔运行这些测试interval
。如果运行状况检查开始但未在指定的超时时间内完成deadline
,进度监视器将停止 mongos并将其从集群中删除。
progressMonitor
领域
Field | 描述 | 单位 |
---|---|---|
interval |
确保健康管理器不会卡住或反应迟钝的频率。 | 毫秒 |
deadline |
如果Health Manager检查没有取得进展,则mongos自动失败之前超时。 | 秒数 |
例子
以下示例显示了如何配置Health Manager 。有关Health Manager参数的信息,请参阅Health Manager 参数。
强度
例如,要将dns
Health Manager方面设置为 critical
强度级别,请在启动时发出以下命令:
mongos --setParameter 'healthMonitoringIntensities={ values:[ { type:"dns", intensity: "critical"} ] }'
或者如果setParameter
在 mongosh
连接到正在运行的会话 mongos
:
db.adminCommand(
{
setParameter: 1,
healthMonitoringIntensities: { values: [ { type: "dns", intensity: "critical" } ] } } )
}
)
用 设置的参数setParameter
在重新启动后不会保留。详细信息请参见设置参数页面。
要使此设置持久,请使用 以下示例中的选项healthMonitoringIntensities
在mongos 配置文件中进行设置:setParameter
setParameter:
healthMonitoringIntensities: "{ values:[ { type:\"dns\", intensity: \"critical\"} ] }"
healthMonitoringIntensities
接受一系列文档, values
. 每个文档都有values
两个字段:
type
,健康管理器方面intensity
, 强度等级
healthMonitoringIntensities
详情请参阅。
间隔
例如,要将ldap
Health Manager方面设置为每 30 秒运行一次运行状况检查,请在启动时发出以下命令:
mongos --setParameter 'healthMonitoringIntervals={ values:[ { type:"ldap", interval: "30000"} ] }'
或者,如果在连接到运行中的 mongos 的 mongosh 会话中使用 setParameter 命令:
db.adminCommand(
{
setParameter: 1,
healthMonitoringIntervals: { values: [ { type: "ldap", interval: "30000" } ] } } )
}
)
用 设置的参数setParameter
在重新启动后不会保留。详细信息请参见设置参数页面。
要使此设置持久,请使用 以下示例中的选项healthMonitoringIntervals
在mongos 配置文件中进行设置:setParameter
setParameter:
healthMonitoringIntervals: "{ values: [{type: \"ldap\", interval: 200}] }"
healthMonitoringIntervals
接受一系列文档, values
. 每个文档都有values
两个字段:
type
,健康管理器方面interval
,运行的时间间隔,以毫秒为单位
healthMonitoringIntervals
详情请参阅。
故障持续时间
例如,要将从失败到崩溃的持续时间设置为五分钟,请在启动时发出以下命令:
mongos --setParameter activeFaultDurationSecs=300
或者如果setParameter
在 mongosh
连接到正在运行的会话 mongos
:
db.adminCommand(
{
setParameter: 1,
activeFaultDurationSecs: 300
}
)
用 设置的参数setParameter
在重新启动后不会保留。详细信息请参见设置参数页面。
要使此设置持久,请使用 以下示例中的选项activeFaultDurationSecs
在mongos 配置文件中进行设置:setParameter
setParameter:
activeFaultDurationSecs: 300
activeFaultDurationSecs
详情请参阅。
进度监视器
进度监视器运行测试以确保Health Manager检查不会卡住或无响应。进度监视器按照 指定的时间间隔运行这些测试interval
。如果运行状况检查开始但未在指定的超时时间内完成deadline
,进度监视器将停止 mongos并将其从集群中删除。
要将 分别设置interval
为 1000 毫秒和deadline
300 秒,请在启动时发出以下命令:
mongos --setParameter 'progressMonitor={"interval": 1000, "deadline": 300}'
或者如果setParameter
在 mongosh
连接到正在运行的会话 mongos
:
db.adminCommand(
{
setParameter: 1,
progressMonitor: { interval: 1000, deadline: 300 } )
}
)
用 设置的参数setParameter
在重新启动后不会保留。详细信息请参见设置参数页面。
要使此设置持久,请使用 以下示例中的选项progressMonitor
在mongos 配置文件中进行设置:setParameter
setParameter:
progressMonitor: "{ interval: 1000, deadline: 300 }"
progressMonitor
详情请参阅。
参见