Remote Logging
Alluxio supports sending logs to a remote log server over the network. This feature can be useful to system administrators who have to perform the task of log collection. With remote logging, the log files, e.g. master.log, worker.log, etc. on all Alluxio servers will be readily available on a designated and configurable directory on the log server. Alternatively, users can use basic logging functions provided by Alluxio rather than using remote logging.
Deploying the Log Server
You need to specify the directory that the log server will write logs to by setting the ALLUXIO_LOGSERVER_LOGS_DIR
environment variable or adding it to ${ALLUXIO_HOME}/conf/alluxio-env.sh
.
You can specify ALLUXIO_LOGSERVER_PORT
to change the port the log server will be listening to. You can find the default port in table of configuration properties
On the log server, execute the following command.
$ ./bin/alluxio-stop.sh logserver
By default, remote logging is not enabled. You need to set 2 environment variables in ${ALLUXIO_HOME}/conf/alluxio-env.sh
to enable it.
ALLUXIO_LOGSERVER_HOSTNAME
specifies the hostname of the remote log server. The equivalent Java opt isalluxio.logserver.hostname
.ALLUXIO_LOGSERVER_PORT
specifies the port the remote log server is listening to. The equivalent Java opt isalluxio.logserver.port
.
The two environment variables ALLUXIO_LOGSERVER_HOSTNAME
and ALLUXIO_LOGSERVER_PORT
control the logging behavior of masters and workers in an Alluxio cluster.
Suppose the hostname of the log server is AlluxioLogServer
, and the port is 45600
. The following lines would need to be added to conf/alluxio-env.sh
to enable remote logging :
These variables propagate their values to the and alluxio.logserver.port
[system properties] when set via alluxio-env.sh
which are then referenced within log4j.properties
Restart Alluxio and the Log Server
After making the modification to configuration, you need to restart the log server first. Then you can start Alluxio. This ensures that the logs that Alluxio generates during start-up phase will also go to the log server.
SSH to the machine on which log server is running.
Go to the directory where the log server has been configured to store logs received from other Alluxio servers. The default logs directory is ${ALLUXIO_HOME}/logs
.
$ cd ${ALLUXIO_HOME}/logs
$ ls
master proxy secondary_master worker
...
-rw-r--r-- 1 alluxio alluxio 26109 Sep 13 08:49 34.204.198.64.log
...
You can see that the log files are put into different folders according to their type. Master logs are put in the folder master
, worker logs are put in folder worker
, etc. Within each folder, log files from different workers are distinguished by the IP/hostname of the machine on which the server has been running.
Control Remote Logging Behavior with log4j.properties
For example, if you want to change log level for the remote logger for Alluxio master logs, you can modify the corresponding appender’s threshold.
This enables you to further customize the appender in log4j.properties
to, for example, specify the log format. How to do that is beyond the scope of this documentation.
Logging can be configured to send log files to a remote server via a
Include a SocketAppender
in the logging configuration by adding it to the log4j.properties
file that the compute framework utilizes for logging.
An example configuration for a SocketAppender
can be found below:
# Appender to send logs to a log server
log4j.appender.CLIENT_REMOTE_LOGGER=org.apache.log4j.net.SocketAppender
log4j.appender.CLIENT_REMOTE_LOGGER.Port=<PORT_OF_LOG_SERVER>
log4j.appender.CLIENT_REMOTE_LOGGER.RemoteHost=<HOSTNAME_OF_LOG_SERVER>
log4j.appender.CLIENT_REMOTE_LOGGER.ReconnectionDelay=10000
log4j.appender.CLIENT_REMOTE_LOGGER.layout.ConversionPattern=%d{ISO8601} %-5p %c{1} - %m%n
Enable the appender by adding it to an existing logger within the a log4j configuration:
Again, refer to the documentation for the corresponding framework linked in the previous section to locate the log4j configuration file.