手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

fmdump(1M)

名称

fmdump - 故障管理日志查看器

用法概要

fmdump [[-e | -i | -I] | -A ] [-f] [-mvVp] [-c class] [-R root]
     [-t time] [-T time] [-u uid] [-n name[.name]*[=value]]
     [-E ENA] [file] ...

描述

fmdump 实用程序可用于显示与 Solaris Fault Manager fmd(1M) 有关的任何日志文件的内容。Fault Manager 在每个 Solaris 系统的后台运行。它接收与系统软件检测到的问题有关的遥测信息,诊断这些问题,启动主动式自我修复活动,如禁用故障组件等。

fmdump 实用程序不用作 Fault Manager 的主要管理接口。就此目的,请使用 fmadm(并请参见 fmadm(1M))。fmdump 实用程序只会转储 Fault Manager 历史日志(几乎没有更多解释),且可以包含没有解释的实现详细信息。请参见下文的“属性”部分。

Fault Manager 维护几组日志文件,供服务人员以及在少数情况下供管理员使用。

错误日志

记录错误遥测以及系统检测到的问题症状的日志。

信息日志

记录信息事件的日志。此类日志体现为两组日志文件:高价值信息事件和其他信息事件。

故障日志

记录故障诊断信息以及被认为解释了错误日志和信息日志中记录的症状之问题的日志。

日志文件组包括当前活动的日志文件,以及该组中数量不定的旧轮转日志文件。所有日志都由 logadm(1M) 管理,/etc/logadm.conf 下有相应的条目。

请注意,fmdump 实用程序会转储目标组的当前日志文件,以及所有的轮转日志文件。因此,它会显示完整的日志历史。特别是对于故障日志,必须认识到 fmdump 会显示曾经诊断出的所有问题而不是仅限制为当前的问题,这一点非常重要。(使用 fmadm 实用程序可了解此信息。)

缺省情况下,fmdump 会显示故障日志的内容,其中记录了 Fault Manager 或其某个组件模块做出的每个诊断的结果。错误日志可使用 –e 进行选择,信息日志使用 –i 进行选择,而高价值信息日志使用 –I 进行选择。或者,也可以在命令行中以 [file] 形式指定具体的日志文件路径(此时将仅转储此文件,不会查找日志的轮转版本)。用户也可以使用选项 –A 聚合所有日志,或是命令行上列出的一组日志文件路径。

下面是一个缺省 fmdump 显示示例:

# fmdump
TIME                 UUID                                 SUNW-MSG-ID EVENT
Mar 23 14:06:35.2682 0a11a1a7-a8ce-c941-8527-8d7a9d320071 ZFS-8000-CS Diagnosed
Mar 25 14:51:41.2261 0a11a1a7-a8ce-c941-8527-8d7a9d320071 FMD-8000-4M Repaired
Mar 25 14:51:41.2523 0a11a1a7-a8ce-c941-8527-8d7a9d320071 FMD-8000-6U Resolved
May 31 23:35:39.9146 c63ac52e-506b-c1cc-e965-ff3b8544490d SMF-8000-YX Diagnosed
...

(显示的输出在 80 个字符以内换行。)

这会转储故障日志,因为没有命令行选项或参数选择其他任何日志。故障日志记录了在 Fault Manager 或其组件模块诊断出的问题的整个生命周期,从最初问题诊断到问题解决的所有情况。

故障日志中记录的每个问题都具有以下标识:

  • 事件时间戳-描述问题的生命周期状态更改。

  • 通用唯一标识符 (UUID)-可在任何系统组之间唯一标识此特定问题。描述给定问题的问题生命周期状态更改的所有事件都将使用同一个 UUID(如上:我们看到最初诊断以及随后的修复和解决全部引用相同的问题 UUID)。

  • 消息标示符-可用于访问 Oracle Web 站点上对应的知识文章:http://www.oracle.com/us/sun/msg/

如果问题需要管理员、服务技术人员采取操作,或是影响了系统行为,Fault Manager 也会向 syslogd(1M) 发布一条用户可读的消息。该消息提供一个问题总结,以及 Oracle Web 站点上的知识文章参考:http://www.oracle.com/us/sun/msg/fmdump 实用程序可以使用 –m 选项,以类似格式将 fltlog 条目转储到提供的 syslog

您可以使用 –v–V 选项,将显示的单行总结扩展成每个日志记录事件的详细信息的多行显示。–p 选项可与 –V 一起使用,以请求“更漂亮”的输出。

可以使用 –c–t–T–n–u 选项来过滤输出,方法是仅选择那些与指定类、时间范围或 uuid 匹配的事件。如果命令行中存在多个过滤器选项,这些选项会组合在一起,从而仅显示由选项逻辑 AND 运算后选择的事件。如果命令行中存在同一过滤器选项的多个实例,同类选项会组合在一起以显示由选项逻辑 OR 运算后选择的事件。例如,命令:

# fmdump -u uuid1 -u uuid2 -t 02Dec09

...选择那些属性为 (uuid1 OR uuid2) AND(时间在 2009 年 2 月 2 日当天或以后)的事件。

选项

支持以下选项:

–A

执行日志聚合。如果命令行中列出一个或多个日志文件路径,则会聚合这些文件,否则会聚合所有已知的日志类型,包括所有的 logadm 轮转文件。日志按照时间顺序合并,但是如果两个记录来自同一个日志文件,聚合时会按照它们在原始日志文件中的顺序(即它们被 Fault Manager 接收和处理的顺序,基本上就是时间顺序)。

不能将其他的日志组选择选项 –e–i–I–A 一起使用。可以使用 –c–t–T–n 等过滤器选项,但不能使用 –u。可以使用输出选项 –v–V–p,但不能使用 –m。选项 –f 将跟随所有选择的日志。

–c class

选择与指定类匹配的事件。class 参数可以使用 sh(1) 中描述的 glob 模式匹配语法。class 代表说明遥测事件类型的分层分类字符串。要了解关于 Oracle 遥测协议的更多信息,请访问 Oracle Web 站点 http://www.oracle.com/us/sun/msg/

–e

显示故障管理错误日志(而不是故障日志)中的事件。

错误日志包含 Sun 自动诊断软件使用的“专用”遥测信息。记录此信息是为了便于问题的事后分析和事件重放,而不应对其进行解析或用于开发脚本和其他工具。请参见 attributes(5),了解有关 Oracle Private(专用)接口规则的信息。

–E ENA

选择与指定 ENA 值匹配的任何一代事件。对于支持 ENA 的检测器,可以使用该选项显示与同一操作有关的多个事件。

–f

通过等待附加数据,跟踪日志文件(如果使用 –A,则有多个文件)的增长。fmdump 进入无限循环,其间会休眠一秒钟,尝试读取并格式化日志文件中的新数据,然后返回休眠状态。可以通过发送中断 (Control-C) 随时终止此循环。

–m

输出与故障日志中的每个条目有关的本地化诊断消息。

–n name[.name]*[=value]

选择其属性具有匹配名称(也可以是匹配值)的日志事件(从命令行上选择的日志中进行选择)。对于字符串属性,值可以是一个正则表达式匹配项。正则表达式语法在 regex(5) 手册页的“扩展正则表达式”部分中进行了介绍。使用以下字符时要小心:

$  *  {  ^  |  (  )  \

...或正则表达式,因为它们对 shell 是有意义的。最安全的方法是,将它们用单引号括起来。对于数字属性,其值可以是八进制、十六进制或十进制。

–p

–V(非常详细)选项组合使用,请求实际执行可用的漂亮打印选项。

–R dir

fmdump 访问的日志文件使用指定的根目录,而不是缺省的根目录 (/)。

–t time

选择在指定时间或之后发生的事件。可以使用以下任一格式指定时间:

mm/dd/yy hh:mm:ss

月、日、年、小时(24 小时格式)、分钟和秒。以任意数量的空格分隔日期和时间。应该将参数用引号括起来,这样 Shell 会将两个字符串解释为一个参数。

mm/dd/yy hh:mm

月、日、年、小时(24 小时格式)和分钟。以任意数量的空格分隔日期和时间。应该将参数用引号括起来,这样 Shell 会将两个字符串解释为一个参数。

mm/dd/yy

指定月、日、年当天的凌晨 00:00:00。

ddMonyy hh:mm:ss

日、月名、年、小时(24 小时格式)、分钟和秒。以任意数量的空格分隔日期和时间。应该将参数用引号括起来,这样 Shell 会将两个字符串解释为一个参数。

ddMonyy hh:mm

日、月名、年、小时(24 小时格式)和分钟。以任意数量的空格分隔日期和时间。应该将参数用引号括起来,这样 Shell 会将两个字符串解释为一个参数。

Mon dd hh:mm:ss

当前年份的月、日、小时(24 小时格式)、分钟和秒。

yyyy-mm-dd [T hh:mm[:ss]]

年、月、日、小时(24 小时格式,可选)、分钟和秒。可以选择忽略秒或小时、分钟和秒。

ddMonyy

指定日、月名、年的凌晨 00:00:00。

hh:mm:ss

当天的小时(24 小时格式)、分钟和秒。

hh:mm

当天的小时(24 小时格式)和分钟。

Tns | Tnsec

T 纳秒以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Tus |Tusec

T 微秒以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Tms | Tmsec

T 毫秒以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Ts | Tsec

T 秒以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Tm |Tmin

T 分钟以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Th |Thour

T 小时以前,其中 T 是按照以 10 为底数的形式指定的整数值。

Td |Tday

T 日以前,其中 T 是按照以 10 为底数的形式指定的整数值。

您可以向任意 –t 选项参数附加 .n 格式的小数,表示超出指定时间的秒数(小数形式)。

–T time

选择在指定时间或之前发生的事件。time 可以使用针对 –t 选项描述的任何时间格式进行指定。

–u uuid

在故障日志中选择与指定 uuid 完全匹配的问题诊断事件。为了便于识别,每个诊断都与一个通用唯一标识符 (Universal Unique Identifier, UUID) 相关联。–u 选项可以与其他选项(如 –v)组合使用,以显示与特定诊断相关的所有详细信息。请注意,多个故障日志事件可以与同一问题诊断 UUID 相关-描述一个问题生命周期的所有事件(从最初诊断到最终解决)引用同一个问题 UUID。

如果 –e 选项和 –u 选项都存在,会显示被指定诊断交叉引用的错误事件。

–v

显示详细的事件详细信息。事件显示会被放大,以显示选定事件的其他公共成员。

–V

显示非常详细的事件详细信息。事件显示会被放大,以显示与每个事件相关的名称-值对列表中的每个成员。此外,对于故障日志,事件显示还包括一个与诊断相关联的对应错误的交叉引用列表。

使用 –p–V 选项可请求漂亮打印。

操作数

支持下列操作数:

file

指定要显示的备用日志文件(如果使用 –A,则为多个文件),而不是显示系统故障日志。fmdump 实用程序会自动确定指定日志的类型,并为选定日志生成相应的输出。

示例

示例 1 fmd 日志检索给定的类

使用以下任一命令从 fmd 日志中检索有关指定类的信息。完整的类名称是 ereport.io.ddi.context

# fmdump -Ve -c 'ereport.io.ddi.context'
# fmdump -Ve -c 'ereport.*.context'
# fmdump -Ve -n 'class=ereport.io.ddi.context'
# fmdump -Ve -n 'class=ereport.*.context'

前面的任一命令都会生成以下输出:

Oct 06 2007 11:53:20.975021712 ereport.io.ddi.context
        nvlist version: 0
                class = ereport.io.ddi.context
                ena = 0x1b03a15ecf00001
                detector = (embedded nvlist)
                nvlist version: 0
                        version = 0x0
                        scheme = dev
                        device-path = /
                (end detector)

                __ttl = 0x1
                __tod = 0x470706b0 0x3a1da690
示例 2 fmd 日志检索特定的检测器设备路径

以下命令从 fmd 日志检索检测器设备路径。

# fmdump -Ve -n 'detector.device-path=.*/disk@1,0$'
Oct 06 2007 12:04:28.065660760 ereport.io.scsi.disk.rqs
nvlist version: 0
       class = ereport.io.scsi.disk.rqs
       ena = 0x453ff3732400401
       detector = (embedded nvlist)
                nvlist version: 0
                        version = 0x0
                        scheme = dev
                        device-path = /pci@0,0/pci1000,3060@3/disk@1,0
                (end detector)

                __ttl = 0x1
                __tod = 0x4707094c 0x3e9e758

退出状态

将返回以下退出值:

0

成功完成。日志文件中的所有记录都已成功检查。

1

发生了致命错误。这会阻止对任何日志文件数据的检查,例如,无法打开指定文件。

2

指定的命令行选项无效。

3

日志文件成功打开,但是有一个或多个日志文件记录无法显示,原因可能是 I/O 错误,或是记录本身的格式不正确。fmdump 对每个无法显示的记录发出一条警告消息,然后继续执行,并尝试显示其他记录。

文件

/var/fm/fmd

故障管理日志目录

/var/fm/fmd/errlog

故障管理错误日志

/var/fm/fmd/fltlog

故障管理故障日志

/var/fm/fmd/infolog_hival

高价值信息日志

/var/fm/fmd/infolog

信息日志

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/fault-management
接口稳定性
请参见下文。

命令行选项为 Uncommitted(未确定)。用户可读错误日志和信息日志输出为 Private(专用)。用户可读故障日志输出为 Uncommitted(未确定)。

另请参见

sh(1)fmadm(1M)fmd(1M)fmstat(1M)logadm(1M)syslogd(1M)libexacct(3LIB)attributes(5)regex(5)

在 Oracle Solaris 11.2 中确保系统和连接设备的安全

http://www.oracle.com/us/sun/msg/

附注

故障日志包含对存储在错误日志中的记录的引用,可以通过 fmdump –V 显示这些记录引用,以了解特定故障诊断中使用的错误。如果在日志轮转中对某个错误日志进行了重命名,会保留这些链接。它们会在移除错误日志文件,或是移动到其他文件系统目录时被破坏。fmdump 不能显示此类断开链接的错误信息。它会继续显示故障日志中的信息。