Send Queue \% Used

Microsoft.SystemCenter.HealthService.CollectionRule.Performance.SendQueuePercentUsedMonitor (UnitMonitor)

This monitor measures the Health Service Management Groups\Send Queue \% Used counter for the Health service.

Knowledge Base article:

摘要

This monitor measures the Health Service Management Groups\Send Queue % Used and generates the following states:

监视器状态

Send Queue % Used Threshold

警告

50 %

严重

60 %

原因

这可能是由此 System Center 管理运行状况服务到其父管理服务器的带宽较低或连接延迟较高引起的。 这也可能是由于规则收集的数据多于父管理服务器可以处理的数据;尤其是当父管理服务器有很多向其报告的代理都发送大量数据造成的。

解决方法

与你的网络管理员联系确认从 System Center 管理运行状况服务到父管理服务器的网络连接是否已饱和。 如果是这样,你可能需要升级网络以容纳此流量。

如果无法升级网络(例如你的 System Center 管理运行状况服务或网关服务器位于远程分支机构),你可以禁用不必要的连接规则。 以下是你可以禁用的规则类型列表,以及禁用后的影响:

规则类型

规则用途

禁用后的影响

性能收集

将性能数据收集到操作数据库和/或数据仓库

当性能收集规则被禁用时,显示此性能数据的任何视图将不再有可查看的数据。 如果规则将数据收集到数据仓库,依赖于此性能的报表将不再呈现任何数据。

事件收集

收集事件数据供诊断。 在某些情况下,对事件提出警报可能没有帮助,但对法律性疑难解答或接近实时的故障排除有帮助。

当事件收集规则被禁用时,显示此事件数据的任何视图将不再有可查看的数据。 如果规则将数据收集到数据仓库,依赖于此事件的报告将不再呈现任何数据。

最后,如果你仍然需要此数据,可在系统中实施以尝试减少网络上发送的数据量的另一个选择是使用优化后的性能计数器收集规则和事件合并收集规则。 下表概述了其益处,并说明了数据汇总方式。

规则类型

益处

数据汇总方式

优化性能收集规则

Only sends the performance data sample if it deviates from the last sample within some percentage. E.g., if the last sample was 42, and the rule was configured to only collect to a new sample with a tolerance of 10%, the next sample will need to 42 +/- 4.2 (e.g. next sample needs to be greater than 46.2 or less than 37.8)

由于仅超过配置容差的性能数据被发送到操作数据库或数据仓库,数据的精确性将会下降。 容差越大,精确度越低。

合并事件收集规则

此类事件收集规则仅在其配置的一个参数与上一个事件不同时才发送数据。 例如,你可以配置合并收集规则来合并以下项相同的事件:

  • 事件来源

  • 事件 ID

  • 源计算机

  • 描述

然后,你可以配置时间范围来合并这些事件(如 10 分钟)。 如果在 10 分钟的时间段内所有事件都满足上述条件,则只有一个事件被发送,其“重复次数”属性将会增加。 如果此事件在一个代理上频繁发生,这意味着在 24 小时的时间段内将只发送 144 个事件,远远小于事件日志中实际记录的事件数

你必须注意你合并了哪些事件参数和属性。 例如,配置“描述”将意味着如果“事件描述”通常是唯一的(如包含用户名),则仍会发送很多事件。 对于此例,你应转而考虑合并代表用户名字段的事件参数。

此外,合并时间段太大将会影响:

  • 事件视图或报告中可查看的延迟事件(因为数据需要到此合并时间段结束时才被合并)

  • 代理上的资源使用率稍有上升。 如果合并规则的数量较少,这一点可以忽略。 如果这些规则类型数量很多,再加上较长的合并时间段,资源使用率将相应增加。

请参阅产品帮助或导航至控制台中的“创作”区域以创建上述类型的规则。

Element properties:

TargetMicrosoft.SystemCenter.Agent
Parent MonitorMicrosoft.SystemCenter.HealthService.PerformanceHealthRollup
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.HealthService.ConsecutiveSampleDoubleThreshold
RemotableTrue
AccessibilityPublic
Alert Message
{0}: 此系统上的运行状况服务发送队列将要填满
When the System Center Management Health Service is receiving data faster than it can send that data out, it will begin queuing the excess data. The queue has a fixed size and if that is reached, then the Health Service will start grooming data out of the queue. When this alert was generated, the "Send Queue \% Used" counter for this system was {0}. Refer to the knowledge for more details on possible causes and troubleshooting steps.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.HealthService.CollectionRule.Performance.SendQueuePercentUsedMonitor" Accessibility="Public" Enabled="true" Target="SCLibrary!Microsoft.SystemCenter.Agent" ParentMonitorID="Microsoft.SystemCenter.HealthService.PerformanceHealthRollup" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.HealthService.ConsecutiveSampleDoubleThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.HealthService.CollectionRule.Performance.SendQueuePercentUsedMonitor_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="BelowThreshold" MonitorTypeStateID="UnderWarningThreshold" HealthState="Success"/>
<OperationalState ID="BetweenThresholds" MonitorTypeStateID="OverWarningThresholdUnderErrorThreshold" HealthState="Warning"/>
<OperationalState ID="OverThreshold" MonitorTypeStateID="OverErrorThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Send Queue % Used</CounterName>
<ObjectName>Health Service Management Groups</ObjectName>
<InstanceName>$Target/ManagementGroup/Name$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>180</Frequency>
<PercentFull>95</PercentFull>
<NumSamples>3</NumSamples>
<WarningThreshold>90</WarningThreshold>
<ErrorThreshold>95</ErrorThreshold>
</Configuration>
</UnitMonitor>