Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

Better way the change Logging directories for Ambari-Server and Ambari-Agent?

avatar

For Ambari-Server, I currently make adjustments to:

/etc/ambari-server/conf/log4j.properties

And for the Agent, I have to create a symlink to redirect /var/log/ambari-agent.

Is there a better method?

1 ACCEPTED SOLUTION

avatar
New Member

For ambari-agent, use the $AMBARI_AGENT_LOG_DIR environment variable. There is a typo in /usr/sbin/ambari-agent shell script though:

Just change $AMBARI_LOG_DIR to $AMBARI_AGENT_LOG_DIR in /usr/sbin/ambari-agent. Now set $AMBARI_AGENT_LOG_DIR to the desired location.

The bug has been fixed in trunk: https://reviews.apache.org/r/37990/

For ambari-server, there is no such environment variable. I'll file a bug for this and have it triaged.

View solution in original post

4 REPLIES 4

avatar
Guru

@dstreever@hortonworks.com David for ambari-agent the "LOGFILE" directory is hardcoded in the /usr/sbin/ambari-agent which is called directly from the ambari-agent start script. It isn't possible right now to paramatize this value. You could change the value of "LOGFILE" in /usr/sbin/ambari-agent but using a symlink is the probably the best option. "LOGFILE" is located on line 45.

LOGFILE=/var/log/ambari-agent/ambari-agent.log

avatar
Guru
@dstreever@hortonworks.com

David after looking a little more closely I was wrong. You can specify the ambari-agent logging directory (but not file name) using the environment variable "AMBARI_AGENT_LOG_DIR". Hope that helps

avatar

If you feel like hacking, I think you can also do this via AmbariConfig.py:

ambari-agent.log:

/usr/lib/python2.6/site-packages/ambari_agent/AmbariConfig.py:

  @staticmethod
  def getLogFile():
    if 'AMBARI_AGENT_LOG_DIR' in os.environ:
      return os.path.join(os.environ['AMBARI_AGENT_LOG_DIR'], "ambari-agent.log")
    else:
#      return os.path.join(os.sep, "var", "log", "ambari-agent", "ambari-agent.log")
      return "/new_log_dir/ambari-agent.log" 

ambari-agent.out:

/usr/lib/python2.6/site-packages/ambari_agent/AmbariConfig.py:

  @staticmethod
  def getOutFile():
    if 'AMBARI_AGENT_OUT_DIR' in os.environ:
      return os.path.join(os.environ['AMBARI_AGENT_OUT_DIR'], "ambari-agent.out")
    else:
#      return os.path.join(os.sep, "var", "log", "ambari-agent", "ambari-agent.out")
      return "/new_log_dir/ambari-agent.out"      

ambari-server.out:

/usr/lib/python2.6/site-packages/ambari_server/serverConfiguration.py:

class ServerConfigDefaults(object):
  def __init__(self):
    self.JAVA_SHARE_PATH = "/usr/share/java"
#    self.OUT_DIR = os.sep + os.path.join("var", "log", "ambari-server")
    self.OUT_DIR = os.sep + os.path.join("new_log_dir", "ambari-server")
    self.SERVER_OUT_FILE = os.path.join(self.OUT_DIR, "ambari-server.out")
    self.SERVER_LOG_FILE = os.path.join(self.OUT_DIR, "ambari-server.log")
    self.ROOT_FS_PATH = os.sep

ambari-server.log:

vi /etc/ambari-server/conf/log4j.properties:

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.File=/var/log/ambari-server/ambari-server.log
log4j.appender.file.File=/new_log_dir/ambari-server.log
log4j.appender.file.MaxFileSize=80MB
log4j.appender.file.MaxBackupIndex=60
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{DATE} %5p [%t] %c{1}:%L - %m%n

avatar
New Member

For ambari-agent, use the $AMBARI_AGENT_LOG_DIR environment variable. There is a typo in /usr/sbin/ambari-agent shell script though:

Just change $AMBARI_LOG_DIR to $AMBARI_AGENT_LOG_DIR in /usr/sbin/ambari-agent. Now set $AMBARI_AGENT_LOG_DIR to the desired location.

The bug has been fixed in trunk: https://reviews.apache.org/r/37990/

For ambari-server, there is no such environment variable. I'll file a bug for this and have it triaged.