![]() | |
Sun Java System Message Queue 3 2005Q1 管理指南 |
第 10 章
监视消息服务器本章介绍可用来监视消息服务器的工具,以及如何获得度量数据。本章包含以下小节:
有关特定度量的参考信息可从第 18 章“度量参考”获得。
监视工具简介Message Queue 信息有三种监视接口:日志文件、交互命令和可获得度量的客户机 API。每一种接口都有各自的优点和缺点,如下所示:
表 10-1 比较了各种不同的工具。
除了表中给出的不同外,每种工具收集到的由代理生成的度量信息的子集也稍有不同。有关每种监视工具收集的度量数据的信息,请参见第 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 说明了每一种级别。
设置日志记录级别后,将收集所有高于和等于该级别的消息。默认的日志级别是 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-10 中介绍了该信息。
更改记录程序配置
表 14-10 中介绍了与日志相关的属性。
更改代理的记录程序配置可以通过设置记录程序属性完成上述步骤。可以使用以下两种方法之一来进行设置:
在命令行上传送的选项将覆盖代理实例配置文件中指定的属性。表 10-3 列出了影响日志记录的 imqbrokerd 选项。
以下小节介绍了如何更改默认配置,以执行以下操作:
更改输出通道
默认情况下,错误和警告消息除了记录到日志文件中以外,还会显示在终端上。(在 Solaris 中,错误消息还会写入到系统的 syslog 守护程序中。)
可以用以下方式更改日志消息的输出通道:
- 要在屏幕上显示所有的日志种类(对于给定的级别)输出,请在 imqbrokerd 命令中使用 -tty 选项。
- 要阻止在屏幕上显示日志输出,请在 imqbrokerd 命令中使用 -silent 选项。
- 使用 imq.log.file.output 属性指定将哪些种类的日志记录信息写入到日志文件。例如,
imq.log.file.output=ERROR
- 使用 imq.log.console.output 属性指定将哪些种类的日志记录信息写入到控制台。例如,
imq.log.console.output=INFO
- 在 Solaris 中,使用 imq.log.syslog.output 属性指定将哪些种类的日志记录信息写入到 Solaris syslog 中。例如,
imq.log.syslog.output=NONE
更改日志文件转移条件
转移日志文件有两个条件:时间和大小。默认是使用时间条件,每七天转移一次文件。
如果同时设置与时间相关和与大小相关的转移属性,首先达到的限制将触发转移。如前所述,代理最多维护九个转移文件。
可以在代理运行时设置或更改日志文件转移属性。要设置这些属性,请使用 imqcmd update bkr 命令。
将度量数据发送到日志文件
本节讲述使用代理日志文件报告度量信息的过程。有关配置记录程序的一般信息,请参见配置和使用代理日志记录。
要使用日志文件来报告度量信息,请执行下列操作:下面显示了输出到日志文件的样例代理度量:
有关度量数据的参考信息,请参见第 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:port]
[-m metricType]
[-int interval]
[-msp numSamples]显示默认代理的代理度量,或显示指定主机和端口上的代理的代理度量。
或
metrics svc -n serviceName
[-b hostName:port]
[-m metricType]
[-int interval]
[-msp numSamples]显示默认代理或指定主机和端口上的代理中指定服务的度量。
或
metrics dst -t destType
-n destName
[-b hostName:port]
[-m metricType]
[-int interval]
[-msp numSamples]显示指定类型和名称的物理目标的度量信息。
表 10-5 imqcmd metrics 子命令选项
子命令选项
说明
-b hostName:port
指定度量数据所报告的代理的主机名和端口。默认为 localhost:7676
-int interval
指定显示度量的时间间隔(以秒为单位)。默认值为 5 秒。
-m metricType
指定要显示的度量类型。
ttl 显示流入和流出代理、服务或目标的消息和包的度量(默认度量类型)
rts 显示消息和包流入和流出代理、连接服务或目标的速率(每秒)的度量
cxn 显示连接、虚拟内存堆和线程(仅适用于代理和连接服务)
con 显示与使用方相关的度量(仅适用于目标)
dsk 显示磁盘使用情况度量(仅适用于目标)
-msp numSamples
指定输出中显示的样例数。默认值为无限数(无穷大)。
-n destName
指定要报告度量数据的物理目标(如果有)的名称。没有默认值。
-n serviceName
指定要报告度量数据的连接服务(如果有)。没有默认值。
-t destTyp
指定要报告度量数据的物理目标(如果有)的类型(队列或主题)。没有默认值。
使用 metrics 子命令显示度量数据
本节讲述使用 metrics 子命令报告度量信息的过程。
要使用 metrics 子命令,请执行下列操作:度量输出: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
imqcmd query 命令的语法和选项如表 10-6 中所示,并带有该命令所提供的度量数据的说明。
表 10-6 imqcmd query 子命令语法
子命令语法
提供的度量数据
query bkr
[-b hostName:port]有关当前存储在代理内存和持久性存储中的消息个数和消息字节数目的信息(请参见显示代理信息)
或
query svc -n serviceName
[-b hostName:port]有关指定的连接服务的当前已分配线程数和连接数的信息(请参见显示连接服务信息)
或
query dst -t destType
-n destName
[-b hostName:port]有关指定目标的当前生产方的数目、活动和备份使用方的数目以及存储在内存和持久性存储中的消息数和消息字节数的信息(请参见显示有关物理目标的信息)
注
由于 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具有指定名称的主题的目标度量
设置基于消息的监视
本节讲述使用基于消息的监视功能来收集度量信息的过程。该过程包括客户机开发和管理任务这两方面。
要设置基于消息的监视,请执行下列操作:
- 编写度量监视客户机。
有关以编程方式编写订阅度量主题目标、使用度量消息并从这些消息中提取度量数据的客户机的说明,请参见 Message Queue Developer's Guide for Java Clients 。
- 通过在 config.properties 文件中设置代理属性来配置代理的度量消息生产方:
- 设置需要对度量主题目标设置的任何访问控制。
请参见下面的安全性和访问注意事项中的讨论。
- 启动度量监视客户机。
当使用方订阅度量主题时,系统就会自动创建度量主题目标。创建度量主题后,代理的度量消息生产方就会开始向度量主题发送度量消息。
安全性和访问注意事项
出于以下两个原因,需要限制对度量主题目标的访问:
出于这些方面的考虑,建议限制对度量主题目标的访问。
监视客户机的验证和授权控制与其他任何客户机都相同。只有保持在 Message Queue 用户系统信息库中的用户才允许连接代理。
您可以通过某个访问控制属性文件,限制对特定度量主题目标的访问,从而提供其他保护,如授权用户:访问控制属性文件中所述。
例如,accesscontrol.properties 文件中的下列条目将拒绝除 user1 和 user2 之外的其他所有用户对 mq.metrics.broker 度量主题的访问。
下列条目将仅允许用户 user3 监视主题 t1。
topic.mq.metrics.destination.topic.t1.consume.deny.user=*
topic.mq.metrics.destination.topic.t1.consume.allow.user=user3
根据度量数据的敏感度不同,您也可以使用加密连接将度量监视客户机连接至代理。有关使用加密连接的信息,请参见使用基于 SSL 的服务。
度量输出:度量消息
使用基于消息的监视 API 获得的度量数据输出是您编写的度量监视客户机的一个函数。您只会受到代理中度量生成器提供的数据的限制。有关此数据的完整列表,请参见度量参考。