HDFS-15720 namenode audit async logger should add some log4j config (#2532)
(cherry picked from commit 9bd3c9bc50
)
This commit is contained in:
parent
27e455a1a0
commit
bc5458bbd4
|
@ -664,6 +664,10 @@ public class DFSConfigKeys extends CommonConfigurationKeys {
|
||||||
public static final boolean DFS_NAMENODE_AUDIT_LOG_TOKEN_TRACKING_ID_DEFAULT = false;
|
public static final boolean DFS_NAMENODE_AUDIT_LOG_TOKEN_TRACKING_ID_DEFAULT = false;
|
||||||
public static final String DFS_NAMENODE_AUDIT_LOG_ASYNC_KEY = "dfs.namenode.audit.log.async";
|
public static final String DFS_NAMENODE_AUDIT_LOG_ASYNC_KEY = "dfs.namenode.audit.log.async";
|
||||||
public static final boolean DFS_NAMENODE_AUDIT_LOG_ASYNC_DEFAULT = false;
|
public static final boolean DFS_NAMENODE_AUDIT_LOG_ASYNC_DEFAULT = false;
|
||||||
|
public static final String DFS_NAMENODE_AUDIT_LOG_ASYNC_BLOCKING_KEY = "dfs.namenode.audit.log.async.blocking";
|
||||||
|
public static final boolean DFS_NAMENODE_AUDIT_LOG_ASYNC_BLOCKING_DEFAULT = true;
|
||||||
|
public static final String DFS_NAMENODE_AUDIT_LOG_ASYNC_BUFFER_SIZE_KEY = "dfs.namenode.audit.log.async.buffer.size";
|
||||||
|
public static final int DFS_NAMENODE_AUDIT_LOG_ASYNC_BUFFER_SIZE_DEFAULT = 128;
|
||||||
public static final String DFS_NAMENODE_AUDIT_LOG_DEBUG_CMDLIST = "dfs.namenode.audit.log.debug.cmdlist";
|
public static final String DFS_NAMENODE_AUDIT_LOG_DEBUG_CMDLIST = "dfs.namenode.audit.log.debug.cmdlist";
|
||||||
public static final String DFS_NAMENODE_METRICS_LOGGER_PERIOD_SECONDS_KEY =
|
public static final String DFS_NAMENODE_METRICS_LOGGER_PERIOD_SECONDS_KEY =
|
||||||
"dfs.namenode.metrics.logger.period.seconds";
|
"dfs.namenode.metrics.logger.period.seconds";
|
||||||
|
|
|
@ -815,7 +815,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
||||||
if (conf.getBoolean(DFS_NAMENODE_AUDIT_LOG_ASYNC_KEY,
|
if (conf.getBoolean(DFS_NAMENODE_AUDIT_LOG_ASYNC_KEY,
|
||||||
DFS_NAMENODE_AUDIT_LOG_ASYNC_DEFAULT)) {
|
DFS_NAMENODE_AUDIT_LOG_ASYNC_DEFAULT)) {
|
||||||
LOG.info("Enabling async auditlog");
|
LOG.info("Enabling async auditlog");
|
||||||
enableAsyncAuditLog();
|
enableAsyncAuditLog(conf);
|
||||||
}
|
}
|
||||||
fsLock = new FSNamesystemLock(conf, detailedLockHoldTimeMetrics);
|
fsLock = new FSNamesystemLock(conf, detailedLockHoldTimeMetrics);
|
||||||
cond = fsLock.newWriteLockCondition();
|
cond = fsLock.newWriteLockCondition();
|
||||||
|
@ -8484,7 +8484,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void enableAsyncAuditLog() {
|
private static void enableAsyncAuditLog(Configuration conf) {
|
||||||
if (!(auditLog instanceof Log4JLogger)) {
|
if (!(auditLog instanceof Log4JLogger)) {
|
||||||
LOG.warn("Log4j is required to enable async auditlog");
|
LOG.warn("Log4j is required to enable async auditlog");
|
||||||
return;
|
return;
|
||||||
|
@ -8495,6 +8495,14 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
||||||
// failsafe against trying to async it more than once
|
// failsafe against trying to async it more than once
|
||||||
if (!appenders.isEmpty() && !(appenders.get(0) instanceof AsyncAppender)) {
|
if (!appenders.isEmpty() && !(appenders.get(0) instanceof AsyncAppender)) {
|
||||||
AsyncAppender asyncAppender = new AsyncAppender();
|
AsyncAppender asyncAppender = new AsyncAppender();
|
||||||
|
asyncAppender.setBlocking(conf.getBoolean(
|
||||||
|
DFSConfigKeys.DFS_NAMENODE_AUDIT_LOG_ASYNC_BLOCKING_KEY,
|
||||||
|
DFSConfigKeys.DFS_NAMENODE_AUDIT_LOG_ASYNC_BLOCKING_DEFAULT
|
||||||
|
));
|
||||||
|
asyncAppender.setBufferSize(conf.getInt(
|
||||||
|
DFSConfigKeys.DFS_NAMENODE_AUDIT_LOG_ASYNC_BUFFER_SIZE_KEY,
|
||||||
|
DFSConfigKeys.DFS_NAMENODE_AUDIT_LOG_ASYNC_BUFFER_SIZE_DEFAULT
|
||||||
|
));
|
||||||
// change logger to have an async appender containing all the
|
// change logger to have an async appender containing all the
|
||||||
// previously configured appenders
|
// previously configured appenders
|
||||||
for (Appender appender : appenders) {
|
for (Appender appender : appenders) {
|
||||||
|
|
|
@ -4808,6 +4808,27 @@
|
||||||
</description>
|
</description>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>dfs.namenode.audit.log.async.blocking</name>
|
||||||
|
<value>true</value>
|
||||||
|
<description>
|
||||||
|
Only used when enables asynchronous audit log. Sets whether audit log async
|
||||||
|
appender should wait if there is no space available in the event buffer or
|
||||||
|
immediately return. Default value is true.
|
||||||
|
</description>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>dfs.namenode.audit.log.async.buffer.size</name>
|
||||||
|
<value>128</value>
|
||||||
|
<description>
|
||||||
|
Only used when enables asynchronous audit log. Sets the number of audit
|
||||||
|
logs allowed in the event buffer before the calling thread is blocked
|
||||||
|
(if dfs.namenode.audit.log.async.blocking is true) or until logs are
|
||||||
|
summarized and discarded. Default value is 128.
|
||||||
|
</description>
|
||||||
|
</property>
|
||||||
|
|
||||||
<property>
|
<property>
|
||||||
<name>dfs.namenode.audit.log.token.tracking.id</name>
|
<name>dfs.namenode.audit.log.token.tracking.id</name>
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
|
|
Loading…
Reference in New Issue