mon_tools(1)mon_tools(1)Namemon_tools - Tools for Monitor performance data
Syntax
mon_skipnull < input
mon_split < input
mon_date [options | dates] < input
mon_combine < input
mon_convert < input > output
Description
These commands do gross manipulation of Monitor data files. All the
programs read from standard input. The programs mon_date, mon_convert,
and mon_skipnull write to standard output. The program mon_split cre‐
ates separate data files for each Monitor session in the input. The
program mon_combine writes output files as necessary.
V1.5 and later of Monitor use a slightly larger CPU data record than
V1.4 used. The mon_convert program is included to convert V1.4 data
files to the format expected by V1.5 and later (Monitor data format
V2.3).
Occasionally Monitor will write null data records to the output data
file. These are records which have the four byte header, but no data
beyond that. The length field of the record indicates that only the
header is present. The program mon_skipnull examines the input data
and filters out these records. Typically it will be used as part of a
command pipeline.
The command mon_split creates a separate data file for each occurrence
of a FIRST record. The format of the filename is hostname.date[.seq].
If more than one session exists for a given date then a sequence num‐
ber, .seq, is appended to the name.
The program mon_date examines the timestamp of each sample and accord‐
ing to the date information provided on the command line writes that
sample to standard output. All the FIRST and LAST records should be
preserved.
The program mon_combine reads from stdin and attempts to combine data
files or sessions for the same configuration by removing the separating
FIRST and LAST records.
Options
The program mon_date is the only one of these that uses any command
line options.
-help This options prints a help message showing the command syn‐
tax.
Month names
The program mon_date takes one argument to specify the month for which
data is to be selected. The month names are case insensitive and can
be abbreviated. The spellings understood are; january, february,
march, april, may, june, july, august, september, october, november,
and december.
Restrictions
The program mon_date should default so that all data is passed to the
output file. This feature is untested however.
Examples
This demonstrates the use of mon_skipnull to filter out any NULL
records in the input.
robinton % mon_skipnull < sessions.dat > sessions
Scanning data collected from Mon Jul 12 14:58:19 1993
Scanning data collected from Mon Jul 12 22:54:58 1993
In this example the file created by the previous example is split into
it's component session. The output of mon_skipnull could have as eas‐
ily been piped directly to mon_split.
robinton %
robinton % mon_split < sessions
Creating desdra.cxo.dec.com.12-jul-1993.
Creating desdra.cxo.dec.com.12-jul-1993.1950.
This is an example of a typical use of mon_skipnull and mon_date used
together.
robinton % mon_skipnull < /var/adm/monitor.dat | mon_date may > may
Diagnostics
In general the error messages of the tools follow the same pattern as
for monitor itself. Most of the message will be preceded by the pro‐
gram name and for mon_date the module name from where the error
occurred. For example:
robinton % mon_skipnull < /broken/disk
mon_skipnull: Can't read record header: I/O error.
These error messages are generic to all of the programs.
Can't read record header: %s.
If the utility functions can't read a record header this message is
printed. The %s is replaced by a system error message that hopefully
describes the problem in more detail.
Can't read rest of record: %s.
If the utility functions encounter an error trying to read the rest of
the record after the header, this message is printed. The %s is
replaced by a system error message that hopefully describes the problem
in more detail.
Early EOF.
If the utility functions encounter EOF trying to read the rest of the
record after the header, this message is printed.
Can't write data record: %s.
This message is printed when the program is unable to write a data to
the output. The %s is replaced by a system error message that hope‐
fully describes the problem in more detail.
These messages are specific to mon_skipnull.
Skipped %d NULL data records.
This message is printed when mon_skipnull finds some NULL records. The
%d is replaced the number of records found.
Scanning data collected from %s
This message is printed when mon_skipnull encounters a FIRST record.
The %s is replaced by the session start time.
These messages are specific to mon_split.
Can't close the output file: %s.
This message is printed when the program fails to close the output
file. The %s is replaced by a system error message that hopefully
describes the problem in more detail.
Can't convert clock value.
This message is printed if localtime(3) returns a NULL pointer. I'm
not sure this can happen, but I check for it anyway.
Can't open output file: %s.
This message is printed when the program fails to open the output file.
The %s is replaced by a system error message that hopefully describes
the problem in more detail.
These messages are specific to mon_date.
Unexpected data record.
This message is printed when the data reading routines encounter an
unexpected or unknown data record. This causes a "panic" condition and
the program uses abort(3) to exit.
Unrecognized option: %s.
When an unrecognized or unsupported option is presented to a program
this message is printed with the %s replaced by the option used.
%s is ambiguous.
When an option is presented to a program that is ambiguous, this mes‐
sage is printed with the %s replaced by the option used.
%s: Version number mismatch. Expected: %d.%d, Data: %d.%d.
As part of the utility functions, this program checks the input data to
see if the expected version of monitor data is present. The %d's are
replaced by the expected data version and the one found.
See Alsomonitor(1), mon_filters(1), monitor(5)mon_tools(1)