Apache druid
Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。因此 Druid 最常用的场景就是大数据背景下、灵活快速的多维 OLAP 分析。 另外,Druid 还有一个关键的特点:它支持根据时间戳对数据进行预聚合摄入和聚合分析,因此也有用户经常在有时序数据处理分析的场景中用到它
druid 日志爆炸
环境默认的输出日志经常出现一个文件几十G的情况,需要通过提供的日志配置自行调整,防止这种日志文件爆炸情况。
日志正常分隔一般根据大小或是时间两个维度。
druid 提供log4j2的日志配置。
日志配置目标
apache druid 包含多个节点coordinator,overlord,MiddleManager,Broker,Historical.
集群本身共用一个日志配置文件(_common).
目标:不同的节点输出至自身的配置文件中。
配置实例
本次以broker 节点为例
在broker中包含运行配置文件。
<code>jvm
.config
runtime
.properties
/<code>
在jvm.config加入参数 -Dlogfile.name=broker
<code>-server
-Xms64g
-Xmx64g
-XX:MaxDirectMemorySize=15360m
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
-Dlogfile.name=broker
/<code>
log4j2配置文件
滚动策略每100M 一个文件。
<code><
Configuration
status
="WARN"
><
properties
><
property
name
="pattern"
>%d{yyyy-MM-dd HH:mm:ss} %processId [%t] %-5p %c{1}:%L - %msg%nproperty
><
property
name
="patternNoTime"
>%msg%nproperty
><
property
name
="patternMetrics"
>%d %-8r %m%nproperty
><
property
name
="logPath"
>logsproperty
>properties
><
appenders
><
RollingFile
name
="STDOUT"
fileName
="${logPath}/${sys:logfile.name}.log"
filePattern
="${logPath}/${sys:logfile.name}-%d{yyyy-MM-dd}.log.%i"
><
PatternLayout
><
pattern
>${pattern}pattern
>PatternLayout
><
Policies
><
SizeBasedTriggeringPolicy
size
="100 MB"
/>Policies
><
DefaultRolloverStrategy
max
="4"
><
Delete
basePath
="${logPath}"
maxDepth
="2"
><
IfFileName
glob
="*.log.*"
/><
IfLastModified
age
="2d"
/>Delete
>DefaultRolloverStrategy
>RollingFile
><
RollingFile
name
="METRICS"
fileName
="${logPath}/${sys:logfile.name}.metrics"
filePattern
="${logPath}/${sys:logfile.name}-%d{yyyy-MM-dd}.metrics.%i.gz"
><
PatternLayout
><
pattern
>${patternMetrics}pattern
>PatternLayout
><
Policies
><
SizeBasedTriggeringPolicy
size
="50 MB"
/>Policies
><
DefaultRolloverStrategy
max
="4"
><
Delete
basePath
="${logPath}"
maxDepth
="2"
><
IfFileName
glob
="*.gz"
/><
IfLastModified
age
="2d"
/>Delete
>DefaultRolloverStrategy
>RollingFile
>appenders
><
loggers
><
Root
level
="info"
><
appender-ref
ref
="STDOUT"
/>Root
><
Logger
name
="org.apache.druid.java.util.emitter.core.LoggingEmitter"
level
="error"
additivity
="false"
><
appender-ref
ref
="METRICS"
/>Logger
>loggers
>Configuration
> /<code>
总结
本文件虽然可以按照预期生成日志,避免短时间内的日志爆炸,但删除过期日志一直未能正常生效。
<code><
DefaultRolloverStrategy
max
="4"
><
Delete
basePath
="${logPath}"
maxDepth
="2"
><
IfFileName
glob
="*.log.*"
/><
IfLastModified
age
="2d"
/>Delete
>DefaultRolloverStrategy
>/<code>
这个策略在本地程序中测试时可以生效。
文章整理不易,点赞支持下吆。