我已经在Kubernetes中使用官方代码中心图部署了Keycloak。现在,我想将Keycloak日志转换为json格式,以便将它们导出到Kibana。
发布于 2020-01-16 10:35:07
对原始回复的注释指向执行此操作的cli命令。
cli:
# Custom CLI script
custom: |
/subsystem=logging/json-formatter=json:add(exception-output-type=formatted, pretty-print=false, meta-data={label=value})
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=json)
发布于 2019-07-26 14:06:53
这是一个运行在Wildfly上的Java应用程序。如果检查在pod内运行的主进程,您将看到类似以下内容:
/usr/lib/jvm/java/bin/java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties -jar /opt/jboss/keycloak/jboss-modules.jar -mp /opt/jboss/keycloak/modules org.jboss.as.standalone -Djboss.home.dir=/opt/jboss/keycloak -Djboss.server.base.dir=/opt/jboss/keycloak/standalone -Djboss.bind.address=10.217.0.231 -Djboss.bind.address.private=10.217.0.231 -b 0.0.0.0 -c standalone.xml
这里的重要部分如下:
-Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties
因此,日志记录配置将作为JVM选项传递给Java进程,并从路径/opt/jboss/keycloak/standalone/configuration/logging.properties
上的文件中读取。
如果检查文件的内容,它会有一个类似于以下内容的部分:
...
handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler
handler.CONSOLE.level=INFO
handler.CONSOLE.formatter=COLOR-PATTERN
handler.CONSOLE.properties=autoFlush,target,enabled
handler.CONSOLE.autoFlush=true
handler.CONSOLE.target=SYSTEM_OUT
handler.CONSOLE.enabled=true
...
您需要弄清楚在此日志记录配置中要对进行哪些更改以满足您的需求。下面是一个例子:
formatter.json=org.jboss.logmanager.formatters.JsonFormatter
formatter.json.properties=keyOverrides,exceptionOutputType,metaData,prettyPrint,printDetails,recordDelimiter
formatter.json.constructorProperties=keyOverrides
formatter.json.keyOverrides=timestamp\=@timestamp
formatter.json.exceptionOutputType=FORMATTED
formatter.json.metaData=@version\=1
formatter.json.prettyPrint=false
formatter.json.printDetails=false
formatter.json.recordDelimiter=\n
然后,在Kubernetes中,您可以使用所需的日志配置创建一个ConfigMap
,将其定义为pod/deployment中的卷,并将其作为文件挂载到pod/deployment定义中的确切路径。如果您正确执行了所有步骤,则应该能够根据需要自定义日志记录格式。
https://stackoverflow.com/questions/57220862
复制相似问题