Sun Java 徽标     上一页      目录      索引      下一页     

Sun 徽标
Sun Java System Message Queue 3 2005Q4 管理指南 

第 10 章
监视消息服务器

本章介绍可用来监视消息服务器的工具,以及如何获得度量数据。本章包含以下各节:

有关特定度量的参考信息可从第 18 章“度量参考”获得。


监视工具简介

Message Queue 信息有三种监视接口:日志文件、交互式命令以及可获取度量的客户端 API。每一种接口都有其各自的优缺点,如下所述:

表 10-1 比较了各种不同的工具。

表 10-1 度量监视工具的优势和局限性 

度量
监视工具

优势

局限性

imqcmd metrics

远程监视

便于抽样检查

在命令选项中设置报告的时间间隔;可以随时更改此时间间隔

易于选择感兴趣的特定数据

数据以简单的表格形式提供

无法通过单条命令获得所有数据

难以通过编程方式分析数据

不创建历史记录

难以看到历史趋势

日志文件

定期采样

创建历史记录

需要配置代理属性;必须关闭再重新启动代理才能生效

仅限本地监视

数据格式非常难以读取或解析;没有解析工具

报告时间间隔不能随时更改;所有度量数据均是如此

在数据的选择方面不提供灵活性

仅限代理度量;目标和连接服务度量不包括在内

如果时间间隔设置得过短,性能可能会受影响

客户端 API

远程监视

易于选择感兴趣的特定数据

数据可以通过编程方式分析,并能够以任何格式呈现

需要配置代理属性;必须关闭再重新启动代理才能生效

需要编写您自己的度量监视客户端

报告时间间隔不能随时更改;所有度量数据均是如此

除了表中给出的不同外,每种工具收集到的具体信息(代理生成的度量信息的一部分)也稍有不同。有关每种监视工具收集的度量数据的信息,请参见第 18 章“度量参考”。


配置和使用代理日志记录

Message Queue 记录程序获取代理代码、调试器和度量生成器等生成的信息,并将这些信息写入多个输出通道:标准输出(控制台)、日志文件以及 Solaris� 操作系统上的 syslog 守护进程。

您可以指定记录程序收集的信息类型以及写入每个输出通道的信息类型。特别是,您可以指定将度量信息写出到日志文件。

本节介绍了代理的默认日志记录配置,并说明了如何将日志信息重定向到替代的输出通道,如何更改日志文件转移条件,以及如何将度量数据发送到日志文件。

默认日志记录配置

代理自动配置为将日志输出保存到一组循环的日志文件中。这些日志文件位于由关联代理的实例名称标识的目录中(请参见附录 A“Message Queue 数据在特定平台上的位置”):

.../instances/instanceName/log/

日志文件是纯文本文件。它们按如下方式命名(从最早生成到最近生成):

log.txt
log_1.txt
log_2.txt
...
log_9.txt

默认情况下,日志文件每星期转移一次;系统维护九个备份文件。

代理支持三种日志级别:ERROR、WARNING 和 INFO。表 10-2 说明了每一种级别。

表 10-2 日志记录级别 

级别

描述

ERROR

指出可能导致系统故障的问题的消息。

WARNING

需要注意但不会导致系统故障的警报。

INFO

度量及其他信息性消息的报告。

设置日志记录级别后,将收集所有高于和等于该级别的消息。默认的日志级别是 INFO,因此,默认情况下会记录所有 ERROR、WARNING 和 INFO 消息。

日志消息格式

记录的消息由时间戳、消息代码和消息本身构成。信息量取决于所设置的日志级别。下面是一个 INFO 消息的示例。

[13/Sep/2000:16:13:36 PDT] B1004 Starting the broker service using tcp
[25374,100] with min threads 50 and max threads of 500

要更改时间戳时区,请参见有关 imq.log.timezone 属性的信息,表 14-8 中介绍了该属性。

更改记录程序配置

表 14-8 中介绍了与日志相关的属性。

    更改代理的记录程序配置
  1. 设置日志级别。
  2. 为一个或多个日志记录类别设置输出通道(文件和/或控制台)。
  3. 如果要将输出记录到文件中,请为该文件配置转移条件。

可以通过设置记录程序属性来完成上述步骤。可以使用以下两种方法之一来设置记录程序属性:

通过命令行传递的选项将覆盖代理实例配置文件中指定的属性。表 10-3 中列出了影响日志记录的 imqbrokerd 选项。

表 10-3 imqbrokerd 记录程序选项及对应的属性 

imqbrokerd 选项

描述

-metrics interval

指定度量信息写入记录程序的时间间隔(以秒为单位)。

-loglevel level

将日志级别设置为以下三项之一:ERROR、WARNING 和 INFO。

-silent

禁止向控制台记录日志信息。

-tty

将所有消息发送到控制台。默认情况下,只显示 WARNING 和 ERROR 级别的消息。

下面几节介绍了如何更改默认配置以执行下列操作:

更改输出通道

默认情况下,错误和警告消息除了记录到日志文件中以外,还会显示在终端上。(在 Solaris 中,错误消息还会写入到系统的 syslog 守护进程中。)

可以用以下方式更改日志消息的输出通道:

更改日志文件转移条件

转移日志文件有两个条件:时间和大小。默认情况下使用时间标准,每七天转移一次文件。

如果同时设置与时间和大小相关的转移属性,则转移将由最先达到的限制触发。前面已指出,代理最多维护九个转移文件。

可以在代理运行时设置或更改日志文件转移属性。要设置这些属性,请使用 imqcmd update bkr 命令。

将度量数据发送到日志文件

本节讲述使用代理日志文件报告度量信息的过程。有关配置记录程序的一般信息,请参见配置和使用代理日志记录。

    使用日志文件报告度量信息
  1. 配置代理的度量生成功能:
    1. 确认 imq.metrics.enabled=true
    2. 默认情况下,用于日志记录的度量生成功能处于启用状态。

    3. 将度量生成时间间隔设置为合适的秒数。
    4. imq.metrics.interval=interval

      该值可以在 config.properties 文件中设置,也可以在启动代理时使用
      -metrics interval 命令行选项进行设置。

  2. 确认记录程序是否收集度量信息:
  3. imq.log.level=INFO

    这是默认值。该值可以在 config.properties 文件中设置,也可以在启动代理时使用 -loglevel level 命令行选项进行设置。

  4. 确认记录程序是否已设置为将度量信息写入日志文件:
  5. imq.log.file.output=INFO

    这是默认值。它可以在 config.properties 文件中设置。

  6. 启动代理。

下面显示了输出到日志文件的样例代理度量:

[21/Jul/2004:11:21:18 PDT]

连接:0    JVM 堆:8323072 字节(7226576 可用)线程: 0 (14-1010)

    流入:0 个消息(0 字节)0 个包(0 字节)

    流出:0 个消息(0 字节)0 个包(0 字节)

流入速率:0 消息/秒(0 字节/秒)0 包/秒(0 字节/秒)

流出速率:0 消息/秒(0 字节/秒)0 包/秒(0 字节/秒)

有关度量数据的参考信息,请参见第 18 章“度量参考”。

记录停用消息

可以通过对代理启用停用消息日志记录来监视物理目标。无论是否使用停用消息队列,都可以记录停用消息。

如果启用了停用消息日志记录,代理会记录以下类型的事件:

如果使用了停用消息队列,日志记录还会包括以下类型的事件:

默认情况下将禁用停用消息日志记录。要启用它,请设置代理属性 imq.destination.logDeadMsgs。


以交互方式显示度量

Message Queue 代理可以报告以下类型的度量:

imqcmd 命令可以获取整个代理、单个连接服务以及单个物理目标的度量信息。要获得度量数据,通常应该使用 imqcmd 的 metrics 子命令。度量数据将按照您指定的时间间隔或次数写到控制台屏幕上。

也可以使用 query 子命令查看也包含配置信息的类似数据。有关更多信息,请参见 imqcmd query。

imqcmd metrics

imqcmd metrics 的语法和选项分别如表 10-4 和表 10-5 所示。

表 10-4 imqcmd metrics 子命令语法 

子命令语法

提供的度量数据

metrics bkr
    [-b hostName:portNumber]
    [-m metricType]
    [-int interval]
    [-msp numSamples]

显示默认代理的代理度量,或显示指定主机和端口上的代理的代理度量。

或

 

metrics svc -n serviceName
    [-b hostName:portNumber]
    [-m metricType]
    [-int interval]
    [-msp numSamples]

显示默认代理或指定主机和端口上的代理中指定服务的度量。

或

 

metrics dst -t destType
    -n destName
    [-b hostName:portNumber]
    [-m metricType]
    [-int interval]
    [-msp numSamples]

显示指定类型和名称的物理目标的度量信息。

表 10-5 imqcmd metrics 子命令选项

子命令选项

描述

-b hostName:portNumber

指定报告的度量数据所对应的代理的主机名和端口。默认为 localhost:7676。

-int interval

指定显示度量的时间间隔(以秒为单位)。默认值为 5 秒。

-m metricType

指定要显示的度量类型。

ttl      显示流入和流出代理、服务或目标的消息和包的度量(默认度量类型)。

rts      显示消息和包流入和流出代理、连接服务或目标的速率的度量(以一秒为衡量单位)。

cxn    显示连接、虚拟内存堆和线程(仅适用于代理和连接服务)。

con    显示与使用方有关的度量(仅适用于目标)。

dsk    显示磁盘使用情况度量(仅适用于目标)。

-msp numSamples

指定输出中显示的样例数。默认为无限制(无穷多)。

-n destName

指定报告的度量数据所对应的物理目标(如果有)的名称。没有默认值。

-n serviceName

指定报告的度量数据所对应的连接服务(如果有)。没有默认值。

-t destType

指定报告的度量数据所对应的物理目标(如果有)的类型(队列或主题)。没有默认值。

使用 metrics 子命令显示度量数据

本节讲述使用 metrics 子命令报告度量信息的过程。

    使用 metrics 子命令
  1. 启动需要度量信息的代理。
  2. 请参见启动代理。

  3. 使用正确的 imqcmd metrics 子命令和选项,如表 10-4 和表 10-5 中所示。

度量输出:imqcmd metrics

本节包含 imqcmd metrics 子命令的输出示例。这些示例显示了代理范围、连接服务和物理目标度量。

代理范围内的度量

要获取在 10 秒的时间间隔内流入和流出代理的消息和包的速率,请使用 metrics bkr 子命令:

imqcmd metrics bkr -m rts -int 10 -u admin

此命令产生类似如下内容的输出(请参见表 18-2 中的数据说明):

--------------------------------------------------------

消息数/秒     消息字节/秒      数据包/秒     数据包字节/秒   

传入  传出    传入   传出     传入   传出    传入    传出  

--------------------------------------------------------

0     0      27      56      0     0      38      66   

10    0     7365     56      10    10    7457    1132  

0     0      27      56      0     0      38      73   

0     10     27     7402     10    20    1400    8459  

0     0      27      56      0     0      38      73   

连接服务标准

要获取 jms 连接服务所处理的消息和包的累计总数,请使用 metrics svc 子命令:

imqcmd metrics svc -n jms -m ttl -u admin

此命令产生类似如下内容的输出(请参见表 18-3 中的数据说明):

-------------------------------------------------

消息数         消息字节        数据包        数据包字节     

传入  传出    传入    传出   传入   传出    传入    传出  

-------------------------------------------------

164   100   120704  73600  282   383   135967  102127

657   100   483552  73600  775   876   498815  149948

物理目标度量

要获取有关物理目标的度量信息,请使用 metrics dst 子命令:

imqcmd metrics dst -t q -n XQueue -m ttl -u admin

此命令产生类似如下内容的输出(请参见表 18-4 中的数据说明):

-----------------------------------------------------------------------------

   消息          消息字节           消息计数          消息总字节数 (k)      最大消息

传入  传出    传入     传出     当前值  峰值  平均值  当前值  峰值  平均值    字节数 (k)

-----------------------------------------------------------------------------

200   200   147200  147200     0     200   0       0     143   71        0  

300   200   220800  147200    100    200   10      71    143   64        0  

300   300   220800  220800     0     200   0       0     143   59        0  

要获取有关物理目标的使用方的信息,请使用下面的 metrics dst 子命令:

imqcmd metrics dst -t q -n SimpleQueue -m con -u admin

此命令产生类似如下内容的输出(请参见表 18-4 中的数据说明):

------------------------------------------------------------------

  活动用户                    备份用户            消息计数

当前值  峰值  平均值    当前值  峰值  平均值   当前值  峰值  平均值

------------------------------------------------------------------

  1     1     0         0     0      0     944   1000  525

imqcmd query

表 10-6 中显示了 imqcmd query 的语法和选项以及该命令所提供的度量数据的说明。

表 10-6 imqcmd query 子命令语法

子命令语法

提供的度量数据

query bkr
    [-b hostName:portNumber]

有关当前存储在代理内存和持久性存储中的消息个数和消息字节数的信息(请参见显示代理信息)。

或

 

query svc -n serviceName
    [-b hostName:portNumber]

有关指定的连接服务的当前已分配线程数和连接数的信息(请参见显示连接服务信息)。

或

 

query dst -t destType
    -n destName
    [-b hostName:portNumber]

有关指定目标当前的生成方数目、活动和备份使用方的数目以及存储在内存和持久性存储中的消息数和消息字节数的信息(请参见显示有关物理目标的信息)。


注

由于 imqcmd query 提供的度量数据有限,第 18 章“度量参考”的表中未提到此工具。



编写应用程序来监视代理

Message Queue 提供度量监视功能,通过该功能,代理可以将度量数据写入 JMS 消息,然后根据消息中包含的度量信息类型将它们发送到众多度量主题目标中的一个。

您可以通过编写具有下列功能的客户端应用程序来访问这些度量信息:订阅度量主题目标、使用这些目标中的消息以及处理消息中包含的度量信息。

共有五个度量主题目标,它们的名称以及传送到各个目标的度量消息的类型显示在表 10-7 中。

表 10-7 度量主题目标 

主题名称

度量消息的类型

mq.metrics.broker

代理度量

mq.metrics.jvm

Java 虚拟机度量

mq.metrics.destination_list

目标及其类型的列表

mq.metrics.destination.queue.
monitoredDestinationName

具有指定名称的队列的目标度量

mq.metrics.destination.topic.
monitoredDestinationName

具有指定名称的主题的目标度量

设置基于消息的监视

本节讲述使用基于消息的监视功能来收集度量信息的过程。此过程包括客户端开发和管理任务这两方面。

    设置基于消息的监视
  1. 编写度量监视客户端。
  2. 有关以编程方式编写订阅度量主题目标、使用度量消息并从这些消息中提取度量数据的客户端的说明,请参见 Message Queue Developer's Guide for JavaClients 。

  3. 通过在 config.properties 文件中设置代理属性值来配置代理的度量消息生成方:
    1. 启用度量消息生成。
    2. 设置 imq.metrics.topic.enabled=true。

      默认值为 true。

    3. 设置生成度量消息的时间间隔(以秒为单位)。
    4. 设置 imq.metrics.topic.interval=interval。

      默认值为 60 秒。

    5. 指定是否需要让度量消息成为持久性消息(即,当代理发生故障时它们是否能保留下来)。
    6. 设置 imq.metrics.topic.persist。

      默认值为 false。

    7. 指定在删除度量消息之前它们能在各自的目标中保留的时间。
    8. 设置 imq.metrics.topic.timetolive。

      默认值为 300 秒。

  4. 设置需要对度量主题目标设置的任何访问控制。
  5. 请参见下面安全性和访问注意事项中的讨论。

  6. 启动度量监视客户端。
  7. 当使用方订阅度量主题时,系统会自动创建度量主题目标。创建度量主题后,代理的度量消息生成方就会开始向度量主题发送度量消息。

安全性和访问注意事项

出于以下两个原因,需要限制对度量主题目标的访问:

出于这些方面的考虑,建议限制对度量主题目标的访问。

用于监视目的的客户端的验证和授权控制与其他任何客户端都相同。只有用户信息保留在 Message Queue 用户系统信息库中的用户才能连接到代理。

您可以通过访问控制属性文件来限制对特定度量主题目标的访问,从而提供更多保护,如授权用户:访问控制属性文件中所述。

例如,accesscontrol.properties 文件中的下列条目将拒绝除 user1 和 user2 之外的其他任何用户访问 mq.metrics.broker 度量主题。

topic.mq.metrics.broker.consume.deny.user=*

topic.mq.metrics.broker.consume.allow.user=user1,user2

下列条目仅允许用户 user3 监视主题 t1。

topic.mq.metrics.destination.topic.t1.consume.deny.user=*

topic.mq.metrics.destination.topic.t1.consume.allow.user=user3

根据度量数据的敏感度不同,您也可以使用加密连接将度量监视客户端连接至代理。有关使用加密连接的信息,请参见使用基于 SSL 的服务。

度量输出:度量消息

使用基于消息的监视 API 获得的度量数据输出是您编写的度量监视客户端的一个功能。您只会受到代理中度量生成器提供的数据的限制。有关这些数据的完整列表,请参见度量参考。



上一页      目录      索引      下一页     


文件号码: 819-3561。  版权所有 © 2005 Sun Microsystems, Inc. 保留所有权利。