Databricks集群配置log4j2 Loki Appender导日志失败求助
问题:Databricks集群Log4j2 Loki Appender类找不到排查
尝试通过tjahzi的Log4j2 Appender将Databricks集群日志发送至Loki实例,已执行以下操作:
- 添加初始化脚本,修改driver和executor的log4j2.xml文件;
- 在集群配置的库标签页添加Maven库,日志显示已成功下载安装;
- 执行
echo "" >> log4j2.xml触发配置重载,等待30秒后仍报错。
集群标准输出错误如下:
ERROR Error processing element Loki ([Appenders: null]): CLASS_NOT_FOUND
ERROR Unable to locate appender "Loki" for logger config "root"
已尝试的排查操作:
- 给Loki Appender配置添加完整类名,替换原配置:
原配置:
修改后:<Loki name="Loki" bufferSizeMegabytes="64">
错误依旧。<Loki name="Loki" class="pl.tkowalcz.tjahzi.log4j2.LokiAppender" bufferSizeMegabytes="64"> - 执行
find /databricks -name '*log4j2-appender-nodep*' -type f,未找到相关文件。 - 手动下载jar文件上传至DBFS,再作为JAR库安装:
错误仍未解决。$ databricks fs cp local/log4j2-appender-nodep-0.9.23.jar dbfs:/Shared/log4j2-appender-nodep-0.9.23.jar $ databricks libraries install --cluster-id 1-2-345 --jar "dbfs:/Shared/log4j2-appender-nodep-0.9.23.jar"
确认Loki实例连通性正常:通过curl从集群向Loki发送日志,Grafana界面可正常查看:
ds=$(date +%s%N) && \ echo $ds && \ curl -v -H "Content-Type: application/json" -XPOST -s "http://loki.atops.abc.com:3100/loki/api/v1/push" --data-raw '{"streams": [{ "stream": { "foo": "bar2", "system": "abc" }, "values": [ [ "'$ds'", "'$ds': testing, testing" ] ] }]}'
以下是初始化脚本执行后的driver端log4j2.xml配置内容:
<?xml version="1.0" encoding="UTF-8"?><Configuration monitorInterval="30" status="INFO" packages="pl.tkowalcz.tjahzi.log4j2, com.databricks.logging" shutdownHook="disable"> <Appenders> <Loki name="Loki" bufferSizeMegabytes="64"> <host>loki.atops.abc.com</host> <port>3100</port> <ThresholdFilter level="ALL"/> <PatternLayout> <Pattern>%X{tid} [%t] %d{MM-dd HH:mm:ss.SSS} %5p %c{1} - %m%n%exception{full}</Pattern> </PatternLayout> <Header name="X-Scope-OrgID" value="ABC"/> <Label name="server" value="Databricks"/> <Label name="foo" value="bar"/> <Label name="system" value="abc"/> <LogLevelLabel>log_level</LogLevelLabel> </Loki> <RollingFile name="publicFile.rolling" fileName="logs/log4j-active.log" filePattern="logs/log4j-%d{yyyy-MM-dd-HH}.log.gz" immediateFlush="true" bufferedIO="false" bufferSize="8192" createOnDemand="true"> <Policies> <TimeBasedTriggeringPolicy/> </Policies> <PatternLayout pattern="%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex"/> </RollingFile> ---snip--- </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="Loki"/> <AppenderRef ref="publicFile.rolling.rewrite"/> </Root> <Logger name="privateLog" level="INFO" additivity="false"> <AppenderRef ref="privateFile.rolling.rewrite"/> </Logger> ---snip--- </Loggers> </Configuration>
请求帮忙排查类找不到的问题。
内容的提问来源于stack exchange,提问作者Kashyap
相关产品推荐
相关产品推荐

