m (loader now has its own tag) |
|||
Line 48: | Line 48: | ||
Anaconda supports remote logging handled through the rsyslog daemon running on the installed system. It can be configured to forward its logs through TCP to an arbitrary machine in network that is also running a syslog daemon. This is controlled with the <code>syslog</code> [[Anaconda/Options|command line option]]. ''Do not forget to enable the port you are running your local syslog daemon on in firewall." | Anaconda supports remote logging handled through the rsyslog daemon running on the installed system. It can be configured to forward its logs through TCP to an arbitrary machine in network that is also running a syslog daemon. This is controlled with the <code>syslog</code> [[Anaconda/Options|command line option]]. ''Do not forget to enable the port you are running your local syslog daemon on in firewall." | ||
It's up to you how the remote logging daemon is configured, | It's up to you how the remote logging daemon is configured, you can for instance log all incoming messages into one file or sort them into directories according to the IP address of the remote system. | ||
The anaconda RPM provides the <code>analog</code> script, which generates a suitable rsyslogd configuration file based on a couple of install parameters. It is also able to generate a bash command to launch rsyslogd with the given configuration. Thus you can do from the shell: | |||
$ eval `scripts/analog -p 6080 -s -o ./someconf /home/akozumpl/remote_inst` | |||
This causes starts a rsyslog daemon that will listen on port 6080. The logs from the remote machine with IP 10.34.33.221 will be stored in <code>/home/akozumpl/remote_inst/10.34.33.221</code>, e.g. <code>/home/akozumpl/remote_inst/10.34.33.221/anaconda.log</code>. | |||
$ | |||
The remote syslog configuration exploits several log message characteristics to be able to sort them into the correct files: | The remote syslog configuration exploits several log message characteristics to be able to sort them into the correct files: | ||
* the IP of the message sender to know which machine generated the message and thud what directory does the message belong to. | |||
* <code>anaconda.log, storage.log</code> and <code>program.log</code> have the name embedded in them as <code>programname</code>. | * <code>anaconda.log, storage.log</code> and <code>program.log</code> have the name embedded in them as <code>programname</code>. | ||
* <code>syslog/code> messages are coming in from kernel and daemon facilities, just like they do on the installed system | * <code>syslog/code> messages are coming in from kernel and daemon facilities, just like they do on the installed system | ||
* <code>install.log.syslog</code> made during package installation is logged as a special <code>sysimage</code> hostname. | * <code>install.log.syslog</code> made during package installation is logged as a special <code>sysimage</code> hostname. | ||
Run <code>analog</code> without the <code>-o</code> option to see how exactly does a fitting configuration file look like. Also notice that it uses the same message format for remote logging as anaconda does, but you can of course modify this to specify any format you want. | |||
== To do == | == To do == | ||
The current list of logging requirements and tasks is maintained in bugzilla [https://bugzilla.redhat.com/show_bug.cgi?id=524980 524980]. | The current list of logging requirements and tasks is maintained in bugzilla [https://bugzilla.redhat.com/show_bug.cgi?id=524980 524980]. |
Revision as of 10:58, 8 March 2010
Introduction
Anaconda tracks all of its activities in logs. This includes:
- changing installation steps (that roughly correspond to different screens in the graphical installer)
- storage devices detection and manipulation
- installation media detection
- network initialization
- kernel messages
- calls to critical methods within anaconda
- calls to external programs
Logging on the installed system
During the installation the logs are stored in the /tmp
directory:
/tmp/anaconda.log
, the general installation information, particularly the step changes./tmp/storage.log
, storage devices scan and manipulation (hard drives, partitions, LVM, RAID), partitioning/tmp/program.log
, calls to external programs, their output/tmp/syslog
, messages from kernel and external programs (Network Manager)/tmp/yum.log
, yum's internal log
Certain log messages are also written to the terminals.
/dev/tty3
, messages fromanaconda.log
,storage.log
andyum.log
./dev/tty4
, same assyslog
/dev/tty5
, stdout and stderr from external programs
tty3
and tty4
reflect certain log files. Log files always contain messages from all the loglevels, including debug, but the minimal loglevel on the terminals can be controlled with the loglevel
command line option.
There are two other log files created on the target filesystem, in the /root
directory, also accessible at /mnt/sysimage/root
during the installation:
/mnt/sysimage/root/install.log
, log of the package installation process./mnt/sysimage/root/install.log.syslog
, messages from installation chroot logged through the system's syslog. Mostly information about users and groups created during yum's package installation.
Log format
In files the format of the log messages is as follows:
H:M:S,ms LOGLEVEL facility:message
where:
H:M:S
is the message timestampms
is the millisecond part of timestamp. Note that this will usually become zero on a remote syslog.LOGLEVEL
is the message loglevel. In theory, because kernel messages are part of anaconda logs, all loglevels that are defined in rsyslog can appear in the logfiles. Anaconda itself will however log only at the following loglevels:DEBUG
INFO
WARN
ERR
CRITICAL
facility
is the program or component that created the message. Could be for instancekernel
,
anaconda
,storage
or similar.message
is the log message itself.
For the logs running in terminals, the format simply is:
LOGLEVEL facility:message
Remote logging
Anaconda supports remote logging handled through the rsyslog daemon running on the installed system. It can be configured to forward its logs through TCP to an arbitrary machine in network that is also running a syslog daemon. This is controlled with the syslog
command line option. Do not forget to enable the port you are running your local syslog daemon on in firewall."
It's up to you how the remote logging daemon is configured, you can for instance log all incoming messages into one file or sort them into directories according to the IP address of the remote system.
The anaconda RPM provides the analog
script, which generates a suitable rsyslogd configuration file based on a couple of install parameters. It is also able to generate a bash command to launch rsyslogd with the given configuration. Thus you can do from the shell:
$ eval scripts/analog -p 6080 -s -o ./someconf /home/akozumpl/remote_inst
This causes starts a rsyslog daemon that will listen on port 6080. The logs from the remote machine with IP 10.34.33.221 will be stored in /home/akozumpl/remote_inst/10.34.33.221
, e.g. /home/akozumpl/remote_inst/10.34.33.221/anaconda.log
.
The remote syslog configuration exploits several log message characteristics to be able to sort them into the correct files:
- the IP of the message sender to know which machine generated the message and thud what directory does the message belong to.
anaconda.log, storage.log
and program.log
have the name embedded in them as programname
.
syslog/code> messages are coming in from kernel and daemon facilities, just like they do on the installed system
install.log.syslog
made during package installation is logged as a special sysimage
hostname.
Run analog
without the -o
option to see how exactly does a fitting configuration file look like. Also notice that it uses the same message format for remote logging as anaconda does, but you can of course modify this to specify any format you want.
To do
The current list of logging requirements and tasks is maintained in bugzilla 524980.