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>
這個策略在本地程序中測試時可以生效。
文章整理不易,點贊支持下吆。