通過在工作負載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右側的
表徵圖,選擇查詢分析,查看叢集輸出的日誌。