跳到主要内容

性能监控

事件代理可以提供以下内容的入站和出站消息和字节速率指标:

  • 端点(队列或主题端点)
  • 客户端
  • VPN 聚合端点速率
  • VPN 聚合客户端速率
  • 全局聚合端点速率
  • 全局聚合客户端速率

上述指标都可以通过 CLI 或 SEMP 检索。此外,客户端、端点和全局聚合客户端速率也可以通过 SolAdmin 获取。

Solace API 包含演示如何创建基于 SEMP 的应用程序的示例。此外,可以为 SolAdmin 使用只读管理用户,以便查看统计数据。

有关 SEMP 请求/回复格式以及如何在消息总线上执行 SEMP 命令的更多信息,请参阅 SEMP。

在本节中,我们将全面审视消息路径,并确保理解所有可能发生消息丢失的点都得到正确监控并可以报告。

保证送达消息数据路径

保证消息数据路径可以分为三个不同的阶段:

  • 入站消息处理
  • 消息复制到配对和消息池
  • 出站消息处理

入站消息处理

假设监控消息丢失或通过事件代理的高延迟消息流的原因是为了通知您潜在问题,以便您可以采取适当措施限制对业务运营的影响。因此,最紧密的反馈是事件代理在尽可能多的故障情况下向应用程序发送负面确认。为此,应根据配置消息丢弃处理将队列和主题端点配置为 reject-msg-to-sender-on-discard。在发布到主题时,必须特别小心使用此功能。如果单个主题端点或队列拒绝消息,则所有其他端点也将拒绝该消息。

此建议的推论是所有应用程序都处理其正面和负面确认,并在消息拒绝时采取适当措施。

这单一建议将在大多数情况下为应用程序提供入站丢弃的即时通知,但不会提前警告丢弃即将发生。应用程序不会收到通知的情况是发布到主题的持久消息没有有效目的地。要确定这种情况发生,重要的是轮询 show log no-subscription-match 命令,该命令将提供最近 1000 个已发布但没有有效端点或订阅客户端的主题。此命令提供客户端、客户端用户名、VPN 和实际发布的主题。

不建议以每几分钟一次以上的频率轮询其他消息池入站丢弃统计信息,因为尽管这些统计信息告诉您条件正在发生,但要找出原因将需要大量工作。到那时,应用程序将已收到负面确认指示原因,且 event.log 将已生成关于为什么发生丢弃的详细日志。

当消息 VPN 或事件代理的入站流最大数量达到限制时,无法再向事件代理发布消息。要设置此值,请使用以下 CLI 命令:

solace (config-message-spool)# max-ingress-flows

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MAX_INGRESS_FLOWS_EXCEEDED

SYSTEM_AD_INGRESS_FLOWS_HIGH

SYSTEM_AD_INGRESS_FLOWS_HIGH_CLEAR

消息复制到配对和消息池

可以通过配置事件代理接收通知来监控此数据路径阶段,这些通知指示事件代理接近将导致入站丢弃的限制或入站丢弃已经发生。设置适当的事件阈值并监控事件至关重要。

可以从最低级别的磁盘健康状况,到一般的系统保证交付健康状况,再到消息 VPN 健康状况,最后到端点健康状况,监控多个事件。

这些可设置的事件监控磁盘利用率:

solace(config-disk-utilization-trap) # thresholds
clear-value set-value

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_CHASSIS_DISK_UTILIZATION_HIGH

SYSTEM_CHASSIS_DISK_UTILIZATION_HIGH_CLEAR

SYSTEM_CHASSIS_DISK_UTILIZATION_MAX

如果 ADB 刀片故障,将生成这些事件。注意重启时没有 BLADE_UP:

SYSTEM_CHASSIS_BLADE_DOWN

SYSTEM_CHASSIS_BLADE_UP

这些事件指示 ADB 配对链路故障或正常,消息能够复制到配对:

SYSTEM_LINK_ADB_LINK_DOWN

SYSTEM_LINK_ADB_LINK_UP

这些事件指示至少有一个到 SAN 的多路径链路故障或正常:

SYSTEM_LINK_PATH_TO_DISK_ARRAY_DOWN

SYSTEM_LINK_PATH_TO_DISK_ARRAY_UP

监控保证消息系统的事件

这些可设置的事件监控保证消息的磁盘利用率。当超过限制时,客户端将无法向保证消息发送消息:

solace(config-hardware-message-spool-event) # disk-usage thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_DISK_USAGE_EXCEEDED

SYSTEM_AD_DISK_USAGE_HIGH

SYSTEM_AD_DISK_USAGE_HIGH_CLEAR

这些可设置的事件监控入站流,当超过限制时,客户端将无法连接并向保证消息系统发送消息:

solace(config-hardware-message-spool-event) # ingress-flows thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_INGRESS_FLOWS_HIGH

SYSTEM_AD_INGRESS_FLOWS_HIGH_CLEAR

SYSTEM_AD_MAX_INGRESS_FLOWS_EXCEEDED

这些可设置的事件监控事件代理上可跟踪的消息总数,当超过限制时,客户端将无法向保证消息发送消息:

solace(config-hardware-message-spool-event) # message-count thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MSG_COUNT_UTILIZATION_EXCEED

SYSTEM_AD_MSG_COUNT_UTILIZATION_HIGH

SYSTEM_AD_MSG_COUNT_UTILIZATION_HIGH_CLEAR

这些可设置的事件监控事件代理上消息池目录中的可跟踪文件总数,当超过限制时,客户端将无法向保证消息发送消息:

solace(config-hardware-message-spool-event) # spool-files thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_SPOOL_FILES_EXCEEDED

SYSTEM_AD_SPOOL_FILES_HIGH

SYSTEM_AD_SPOOL_FILES_HIGH_CLEAR

这些可设置的事件监控消息池与设定配额的对比,当超过限制时,客户端将无法向保证消息发送消息:

solace(config-hardware-message-spool-event) # spool-usage thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MSG_SPOOL_HIGH

SYSTEM_AD_MSG_SPOOL_HIGH_CLEAR

SYSTEM_AD_MSG_SPOOL_QUOTA_EXCEED

这些可设置的事件是 ADB3 特有的,当超过限制时,消息性能将降至 ADB2 性能水平:

solace(config-hardware-message-spool-event) # cache-usage thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MAX_MSG_CACHE_USAGE_EXCEEDED

SYSTEM_AD_MSG_CACHE_USAGE_HIGH

SYSTEM_AD_MSG_CACHE_USAGE_HIGH_CLEAR

在 VPN 级别,可以配置入站流和消息池使用量事件以及 VPN 级别消息池配额:

solace(config-message-spool-event) #
ingress-flows spool-usage

生成的相应设定和清除 Syslog 事件如下:

VPN_AD_INGRESS_FLOWS_HIGH

VPN_AD_INGRESS_FLOWS_HIGH_CLEAR

VPN_AD_MAX_INGRESS_FLOWS_EXCEEDED

VPN_AD_MSG_SPOOL_HIGH

VPN_AD_MSG_SPOOL_HIGH_CLEAR

VPN_AD_MSG_SPOOL_QUOTA_EXCEED

在单个端点级别,可以配置消息池使用量以及拒绝低优先级消息限制:

solace(config-message-spool-queue-event) #
reject-low-priority-msg-limit spool-usage

生成的相应设定和清除 Syslog 事件如下:

VPN_AD_MSG_SPOOL_HIGH

VPN_AD_MSG_SPOOL_HIGH_CLEAR

VPN_AD_MSG_SPOOL_QUOTA_EXCEED

VPN_AD_MSG_SPOOL_REJECT_LOW_PRIORITY_MSG_LIMIT_EXCEED

VPN_AD_MSG_SPOOL_REJECT_LOW_PRIORITY_MSG_LIMIT_HIGH

VPN_AD_MSG_SPOOL_REJECT_LOW_PRIORITY_MSG_LIMIT_HIGH_CLEAR

出站消息处理

在出站端,没有故障类型的丢弃;然而,如果有配置,则有 TTL 到期和管理消息被删除的情况。有一些情况会阻止端点被创建或绑定,从而生成相应的事件,以及一些全局情况会阻止消息被投递。

当系统范围内已投递但未被消费客户端确认的消息总数超过最大值时,无法再向客户端投递消息。可以使用以下 CLI 命令设置此属性:

solace(config-hardware-message-spool-event-delivered-unacked)# thresholds
clear-percentage set-percentage

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_DELIVERED_UNACKED_MSGS_EXCEED

SYSTEM_AD_DELIVERED_UNACKED_MSGS_HIGH

SYSTEM_AD_DELIVERED_UNACKED_MSGS_HIGH_CLEAR

当消息 VPN 的最大出站流数量或事件代理的全局限制已达到时,客户端无法绑定到队列以接收消息。要为事件代理设置此限制,请使用以下 CLI 命令:

solace (config-message-spool)# max-egress-flows

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MAX_EGRESS_FLOWS_EXCEEDED

SYSTEM_AD_EGRESS_FLOWS_HIGH

SYSTEM_AD_EGRESS_FLOWS_HIGH_CLEAR

当消息 VPN 的最大端点数量或事件代理的全局限制已达到时,无法在事件代理上创建更多端点以发送或接收保证消息。要为事件代理设置此限制,请使用以下 CLI 命令:

solace (config-message-spool)# max-endpoints

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_AD_MAX_ENDPOINTS_EXCEEDED

SYSTEM_AD_ENDPOINTS_HIGH

SYSTEM_AD_ENDPOINTS_HIGH_CLEAR

直接投递数据路径

对于直接消息,不会向发布者发送正面或负面确认。

设置预期消息速率的事件阈值将有助于识别消息模式大于预期的情况。

使用以下命令设置 VPN 上的入站消息速率的事件阈值:

solace(config-egress-msg-rate-trap)# thresholds
clear-value set-value
solace(config-ingress-msg-rate-trap)# thresholds
clear-value set-value

生成的相应设定和清除 Syslog 事件如下:

SYSTEM_CLIENT_EG_MSG_RATE_HIGH

SYSTEM_CLIENT_EG_MSG_RATE_HIGH_CLEAR

SYSTEM_CLIENT_ING_MSG_RATE_HIGH

SYSTEM_CLIENT_ING_MSG_RATE_HIGH_CLEAR

使用以下命令设置 VPN 上的出站消息速率的事件阈值:

solace (config-msg-vpn-event)# egress-message-rate thresholds
clear-value set-value
solace (config-msg-vpn-event)# egress-message-rate thresholds
clear-value set-value

生成的相应设定和清除 Syslog 事件如下:

VPN_VPN_EG_MSG_RATE_HIGH

VPN_VPN_EG_MSG_RATE_HIGH_CLEAR

VPN_VPN_ING_MSG_RATE_HIGH

VPN_VPN_ING_MSG_RATE_HIGH_CLEAR

最后,由于消费者无法跟上,直接消息的出站丢弃会发生。这将导致以下事件写入 Syslog:

CLIENT_CLIENT_EGRESS_MSG_DISCARD

要监控客户端的 NAB 出站缓冲区大小,请使用以下命令:

show client <name> stats queues

这些缓冲区的大小以及最小突发大小都可以根据网络吞吐量和客户端处理这些消息的速率进行调整。有关更多信息,请参阅数据缓冲区管理。