xref: /illumos-gate/usr/src/man/man8/fmdump.8 (revision 6dde88b51419b99fe0aab8e56184c693945826b8)
te
Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
Copyright 2012 Joshua M. Clulow <josh@sysmgr.org>
Copyright 2024 Oxide Computer Co.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
FMDUMP 8 "April 1, 2024"
NAME
fmdump - fault management log viewer
SYNOPSIS
fmdump [-aAefHiIjmpvV] [-c class] [-R dir] [-t time] [-T time]
 [-u uuid] [-n name[.name]*[=value]]
 [-N name[.name]*[=value][;name[.name]*[=value]]*] [file]
DESCRIPTION
The fmdump utility can be used to display the contents of any of the log files associated with the Fault Manager, fmd(8). The Fault Manager runs in the background on each system. It receives telemetry information relating to problems detected by the system software, diagnoses these problems, and initiates proactive self-healing activities such as disabling faulty components.

The Fault Manager maintains two sets of log files for use by administrators and service personnel: error log

A log which records error telemetry, the symptoms of problems detected by the system.

fault log

A log which records fault diagnosis information, the problems believed to explain these symptoms.

informational logs

A pair of logs that record informational events that may not lead directly to a fault diagnosis but can assist in interpreting system state should one occur. These events are separated into a log containing informational events ("ireports") with high priority and sysevents ("high-value" informational events), and another containing other ireports.

By default, fmdump displays the contents of the fault log, which records the result of each diagnosis made by the fault manager or one of its component modules.

An example of a default fmdump display follows:

# fmdump
TIME UUID SUNW-MSG-ID
Dec 28 13:01:27.3919 bf36f0ea-9e47-42b5-fc6f-c0d979c4c8f4 FMD-8000-11
Dec 28 13:01:49.3765 3a186292-3402-40ff-b5ae-810601be337d FMD-8000-11
Dec 28 13:02:59.4448 58107381-1985-48a4-b56f-91d8a617ad83 FMD-8000-OW
...

Each problem recorded in the fault log is identified by:

The time of its diagnosis

A Universal Unique Identifier (UUID) that can be used to uniquely identify this particular problem across any set of systems

A message identifier that can be used to access a corresponding knowledge article located on http://illumos.org/msg/

If a problem requires action by a human administrator or service technician or affects system behavior, the Fault Manager also issues a human-readable message to syslogd(8). This message provides a summary of the problem and a reference to the knowledge article on http://illumos.org/msg/.

You can use the -v and -V options to expand the display from a single-line summary to increased levels of detail for each event recorded in the log. The -c, -t, -T, and -u options can be used to filter the output by selecting only those events that match the specified class, range of times, or uuid.

If more than one filter option is present on the command-line, the options combine to display only those events that are selected by the logical AND of the options. If more than one instance of the same filter option is present on the command-line, the like options combine to display any events selected by the logical OR of the options. For example, the command:

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

selects events whose attributes are (uuid1 OR uuid2) AND (time on or after 02Dec03).

OPTIONS
The following options are supported: -a

Include all events from the requested file(s), including events that are ordinarily silent. Silent events may contain Private telemetry information, and their existence may be Private also. The presence of silent events and the data they contain should not be parsed or relied upon in the development of scripts or other tools, and their presence or absence should not be relied upon to indicate whether an error or fault condition exists.

-A

Aggregate the data from the file(s) specified or, if no file(s) are specified, all known logs. Output may include events from fault, error, and informational logs, including older logs that have previously been rotated out. The order in which events are displayed is unspecified. As this option displays data from log files that would be selected by the -e, -i, and -I options, the same caveats listed with respect to those options also apply to -A.

-c class

Select events that match the specified class. The class argument can use the glob pattern matching syntax described in sh(1). The class represents a hierarchical classification string indicating the type of telemetry event.

-e

Display events from the fault management error log instead of the fault log. This option is shorthand for specifying the pathname of the error log file. The error log file contains Private telemetry information. This information is recorded to facilitate post-mortem analysis of problems and event replay, and should not be parsed or relied upon for the development of scripts or other tools.

-f

Follow the growth of the log file by waiting for additional data. fmdump enters an infinite loop where it will sleep for a second, attempt to read and format new data from the log file, and then go back to sleep. This loop can be terminated at any time by sending an interrupt (Control-C).

-H

Instead of displaying the events contained in the selected log file, display its header attributes. The names and values of these attributes are Private and should not be parsed or relied upon for the development of scripts or other tools. This option is provided primarily for debugging the fault management system, but it may also be used to determine the type and origin of a log file that has been renamed or moved from the system on which it was originally produced.

-i

Display events from the ordinary information log instead of the fault log. This option is shorthand for specifying the pathname of the ordinary information log file. The ordinary information log file, like the error log file, contains Private telemetry information and the same caveats apply with respect to interpretation or parsing of this data.

-I

Display events from the high-value information log instead of the fault log. This option is shorthand for specifying the pathname of the high-value information log file. The high-value information log file, like the error and ordinary information log files, contains Private telemetry information and the same caveats apply with respect to interpretation or parsing of this data.

-j

Output events in JSON format, when used with the -V option.

-m

Print the localized diagnosis message associated with each entry in the fault log.

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

Select log events that have properties with a matching name (and optionally a matching value). For string properties the value can be a regular expression match. Regular expression syntax is described in the EXTENDED REGULAR EXPRESSIONS section of the regex(7) manual page. Be careful when using the characters:

$ * { ^ | ( ) \e
...or a regular expression, because these are meaningful to the shell. It is safest to enclose any of these in single quotes. For numeric properties, the value can be octal, hex, or decimal.
-N name[.name]*[=value][;name[.name]*[=value]]*

Select log events that have multiple properties with a matching name (and optionally a matching value), all of which must match the event. Multiple properties are separated by the ; character and any number may be specified; each is interpreted as if supplied with the -n option. If the ; character must appear in a value to be matched, it must be doubled as ;;. If the -N option appears on the command line multiple times, each supplied list of properties is treated as a separate selector like any other selector option, so that every event matching all properties of any one of several property lists will be selected.

-p

Prettifies output when used with -V, including displaying FMRIs as strings instead of embedded name-value lists.

-R dir

Use the specified root directory for the log files accessed by fmdump, instead of the default root (/).

-t time

Select events that occurred at or after the specified time. The time can be specified using any of the following forms: mm/dd/yy hh:mm:ss

Month, day, year, hour in 24-hour format, minute, and second. Any amount of whitespace can separate the date and time. The argument should be quoted so that the shell interprets the two strings as a single argument.

mm/dd/yy hh:mm

Month, day, year, hour in 24-hour format, and minute. Any amount of whitespace can separate the date and time. The argument should be quoted so that the shell interprets the two strings as a single argument.

mm/dd/yy

12:00:00AM on the specified month, day, and year.

ddMonyy hh:mm:ss

Day, month name, year, hour in 24-hour format, minute, and second. Any amount of whitespace can separate the date and time. The argument should be quoted so that the shell interprets the two strings as a single argument.

ddMonyy hh:mm

Day, month name, year, hour in 24-hour format, and minute. Any amount of whitespace can separate the date and time. The argument should be quoted so that the shell interprets the two strings as a single argument.

Mon dd hh:mm:ss

Month, day, hour in 24-hour format, minute, and second of the current year.

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

Year, month, day, and optional hour in 24-hour format, minute, and second. The second, or hour, minute, and second, can be optionally omitted.

ddMonyy

12:00:00AM on the specified day, month name, and year.

hh:mm:ss

Hour in 24-hour format, minute, and second of the current day.

hh:mm

Hour in 24-hour format and minute of the current day.

Tns | Tnsec

T nanoseconds ago where T is an integer value specified in base 10.

Tus |Tusec

T microseconds ago where T is an integer value specified in base 10.

Tms | Tmsec

T milliseconds ago where T is an integer value specified in base 10.

Ts | Tsec

T seconds ago where T is an integer value specified in base 10.

Tm |Tmin

T minutes ago where T is an integer value specified in base 10.

Th |Thour

T hours ago where T is an integer value specified in base 10.

Td |Tday

T days ago where T is an integer value specified in base 10.

You can append a decimal fraction of the form .n to any -t option argument to indicate a fractional number of seconds beyond the specified time.
-T time

Select events that occurred at or before the specified time. time can be specified using any of the time formats described for the -t option.

-u uuid

Select fault diagnosis events that exactly match the specified uuid. Each diagnosis is associated with a Universal Unique Identifier (UUID) for identification purposes. The -u option can be combined with other options such as -v to show all of the details associated with a particular diagnosis. If the -e option and -u option are both present, the error events that are cross-referenced by the specified diagnosis are displayed.

-v

Display verbose event detail. The event display is enlarged to show additional common members of the selected events.

-V

Display very verbose event detail. The event display is enlarged to show every member of the name-value pair list associated with each event. In addition, for fault logs, the event display includes a list of cross-references to the corresponding errors that were associated with the diagnosis.

OPERANDS
The following operands are supported: file

Specifies an alternate log file to display instead of the system fault log. The fmdump utility determines the type of the specified log automatically and produces appropriate output for the selected log.

EXAMPLES
Example 1 Retrieving Given Class from fmd Log

Use any of the following commands to retrieve information about a specified class from the fmd log. The complete class name is 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'

Any of the preceding commands produces the following output:

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

Example 2 Retrieving Specific Detector Device Path from fmd Log

The following command retrieves a detector device path from the fmd log.

# 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
EXIT STATUS
The following exit values are returned: 0

Successful completion. All records in the log file were examined successfully.

1

A fatal error occurred. This prevented any log file data from being examined, such as failure to open the specified file.

2

Invalid command-line options were specified.

3

The log file was opened successfully, but one or more log file records were not displayed, either due to an I/O error or because the records themselves were malformed. fmdump issues a warning message for each record that could not be displayed, and then continues on and attempts to display other records.

FILES
/var/fm/fmd

Fault management log directory

/var/fm/fmd/errlog

Fault management error log

/var/fm/fmd/fltlog

Fault management fault log

/var/fm/fmd/infolog

Fault management informational report log

/var/fm/fmd/infolog_hival

Fault management high-value informational report log

ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability See below.

The command-line options are Evolving. The human-readable error log output is Private. The human-readable fault log output is Evolving.

SEE ALSO
sh (1), libexacct (3LIB), attributes (7), regex (7), fmadm (8), fmd (8), fmstat (8), syslogd (8)

http://illumos.org/msg/

NOTES
Fault logs contain references to records stored in error logs that can be displayed using fmdump -V to understand the errors that were used in the diagnosis of a particular fault. These links are preserved if an error log is renamed as part of log rotation. They can be broken by removing an error log file, or by moving it to another filesystem directory. fmdump can not display error information for such broken links. It continues to display any and all information present in the fault log.