通过在工作负载YAML中配置Log4j Appender,您可以将集群Java应用的日志直接写入阿里云SLS Project,实现无侵入式的日志采集。
Log4j是Apache维护的开源日志框架,专为 Java 应用程序设计。Log4j的核心组件包括Appenders(输出目标)、 Layouts(输出格式)、Filters(过滤器)等。通过配置Appenders,您可以指定日志传输的目的地,例如控制台、文件等。
前提条件
已创建AccessKey,供后续在应用中集成Log4j Appender使用。
为保证账号安全,建议您使用RAM用户(而非阿里云账号)并创建对应的AccessKey。
步骤一:在SLS中配置Log4j Appender
本步骤指引您创建SLS Project及Logstore。配置Logstore的数据源为Log4j Appender后,您可以将Java 应用的日志直接发送至 SLS。
推荐创建的SLS Project与集群处于同一地域。两者处于同一地域时,日志数据可通过内网传输,避免因跨地域传输产生的外网带宽费用和网络延迟。
关于SLS Project的计费说明,请参见计费概述。
创建一个SLS Project。
下方仅介绍核心配置项。其余配置项保持默认即可。具体操作,请参见管理Project。
所属地域:推荐与ACK集群位于同一地域。本示例为华东1(杭州)。
Project名称:本示例为k8s-log4j。
在Project中创建一个Logstore。
本示例Logstore名称为k8s-logstore,其余配置项保持默认即可。具体操作,请参见创建Logstore。
k8s-logstore创建完成后,按照页面提示,进行数据接入。
搜索并定位Log4j的接入卡片,按照页面提示完成接入。
本示例使用默认配置。您可根据日志数据的具体使用场景进行配置。
步骤二:在应用中集成Log4j
本步骤通过部署一个 Spring Boot 示例应用,演示如何将 Log4j Appender 插件集成到 Java 应用中。集成后,容器启动时将通过 JAVA_OPTS
环境变量传递 SLS 配置,Log4j 会自动读取参数并实时将日志发送至SLS。
获取demo-deployment.yaml文件,并配置环境变量
JAVA_OPTS
。获取地址,请参见demo-deployment。
JAVA_OPTS
配置说明:-Dproject
:SLS Project名称。本示例为k8s-log4j。-Dlogstore
:SLS Logstore名称。本示例为k8s-logstore。-Dendpoint
:SLS的服务入口。请根据Project所属地域配置服务入口,可参见服务入口进行查询。本示例为cn-hangzhou.log.aliyuncs.com。-Daccess_key_id
:替换为AccessKey ID。-Daccess_key
:替换为AccessKey Secret。
创建Deployment。
kubectl create -f demo-deployment.yaml
获取demo-Service.yaml文件,保持默认配置即可。
获取地址,请参见demo-Service。
部署demo-Service.yaml,创建Service。
kubectl create -f demo-service.yaml
步骤三:测试日志采集功能
Deployment和Service部署成功后,您可以查看Service的外部访问IP,即EXTERNAL-IP
,访问服务并生成日志,验证日志是否能成功写入 SLS。
查看Service的
EXTERNAL-IP
。kubectl get svc
预期输出如下:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE log4j-appender-demo-spring-boot-svc LoadBalancer 172.21.XX.XX 120.55.XXX.XXX 8080:30398/TCP 1h
运行
login
命令,测试集群日志是否成功生成。替换
K8s_SERVICE_IP
为EXTERNAL-IP
。curl http://${K8S_SERVICE_IP}:8080/login?name=bruce
可在GitHub log4j-appender-demo中查看完整的API集合。
步骤四:在SLS控制台查看日志
您可登录SLS控制台查询并分析日志。
登录日志服务控制台。
在Project列表中,单击目标Project,进入对应的Project详情页面。
单击Logstore右侧的
图标,选择查询分析,查看集群输出的日志。