全部產品
Search
文件中心

Container Service for Kubernetes:採集Java應用的Log4j日誌至SLS

更新時間:Jun 10, 2025

通過在工作負載YAML中配置Log4j Appender,您可以將叢集Java應用的日誌直接寫入阿里雲SLS Project,實現無侵入式的日誌採集。

Log4j是Apache維護的開源日誌架構,專為 Java 應用程式設計。Log4j的核心組件包括Appenders(輸出目標)、 Layouts(輸出格式)、Filters(過濾器)等。通過配置Appenders,您可以指定日誌傳輸的目的地,例如控制台、檔案等。

前提條件

  • 建立ACK託管叢集

  • 建立AccessKey,供後續在應用中整合Log4j Appender使用。

    為保證帳號安全,建議您使用RAM使用者(而非阿里雲帳號)並建立對應的AccessKey。

步驟一:在SLS中配置Log4j Appender

本步驟指引您建立SLS Project及Logstore。配置Logstore的資料來源為Log4j Appender後,您可以將Java 應用的日誌直接發送至 SLS。

推薦建立的SLS Project與叢集處於同一地區。兩者處於同一地區時,日誌資料可通過內網傳輸,避免因跨地區傳輸產生的外網頻寬費用和網路延遲。

關於SLS Project的計費說明,請參見計費概述
  1. 建立一個SLS Project。

    下方僅介紹核心配置項。其餘配置項保持預設即可。具體操作,請參見管理Project

    • 所屬地區:推薦與ACK叢集位於同一地區。本樣本為華東1(杭州)。

    • Project名稱:本樣本為k8s-log4j。

  2. 在Project中建立一個Logstore。

    本樣本Logstore名稱為k8s-logstore,其餘配置項保持預設即可。具體操作,請參見建立Logstore

  3. k8s-logstore建立完成後,按照頁面提示,進行資料接入。

    建立資料接入嚮導

  4. 搜尋並定位Log4j的接入卡片,按照頁面提示完成接入。

    本樣本使用預設配置。您可根據日誌資料的具體使用情境進行配置。自訂資料

步驟二:在應用中整合Log4j

本步驟通過部署一個 Spring Boot 樣本應用,示範如何將 Log4j Appender 外掛程式整合到 Java 應用中。整合後,容器啟動時將通過 JAVA_OPTS 環境變數傳遞 SLS 配置,Log4j 會自動讀取參數並即時將日誌發送至SLS。

  1. 擷取demo-deployment.yaml檔案,並配置環境變數JAVA_OPTS

    擷取地址,請參見demo-deployment

    展開查看樣本檔案

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: log4j-appender-demo-spring-boot
      labels:
        app: log4j-appender
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: log4j-appender
      template:
        metadata:
          labels:
            app: log4j-appender
        spec:
          containers:
          - name: log4j-appender-demo-spring-boot
            image: registry.cn-hangzhou.aliyuncs.com/jaegertracing/log4j-appender-demo-spring-boot:0.0.2
            env:
              - name: JAVA_OPTS            #  設定環境變數 JAVA_OPTS
                value: "-Dproject={your_project} -Dlogstore={your_logstore} -Dendpoint={your_endpoint} -Daccess_key_id={your_access_key_id} -Daccess_key={your_access_key_secret}"
            ports:
            - containerPort: 8080

    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。

  2. 建立Deployment。

    kubectl create -f demo-deployment.yaml
  3. 擷取demo-Service.yaml檔案,保持預設配置即可。

    擷取地址,請參見demo-Service

    展開查看樣本檔案

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: log4j-appender
      name: log4j-appender-demo-spring-boot-svc
      namespace: default
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
      selector:
        app: log4j-appender
      type: LoadBalancer
  4. 部署demo-Service.yaml,建立Service。

    kubectl create -f demo-service.yaml

步驟三:測試日誌採集功能

Deployment和Service部署成功後,您可以查看Service的外部存取IP,即EXTERNAL-IP,訪問服務並組建記錄檔,驗證日誌是否能成功寫入 SLS。

  1. 查看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
  2. 運行login命令,測試叢集日誌是否成功產生。

    替換K8s_SERVICE_IPEXTERNAL-IP

    curl http://${K8S_SERVICE_IP}:8080/login?name=bruce
    可在GitHub log4j-appender-demo中查看完整的API集合。

步驟四:在SLS控制台查看日誌

您可登入SLS控制台查詢並分析日誌。

  1. 登入Log Service控制台

  2. Project列表中,單擊目標Project,進入對應的Project詳情頁面。

  3. 單擊Logstore右側的表徵圖表徵圖,選擇查詢分析,查看叢集輸出的日誌。

    查詢分析

相關文檔