すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Log4j ログを SLS に収集する

最終更新日:Jun 13, 2025

ワークロード YAML で Log4j Appender を構成することにより、クラスタ内の Java アプリケーションからのログを Alibaba Cloud Simple Log Service (SLS) プロジェクトに書き込み、非侵入型のログ収集を実現できます。

背景

Log4j は、Apache によって維持されているオープンソースのロギングフレームワークであり、特に Java アプリケーション向けに設計されています。 Log4j のコアコンポーネントには、Appender(出力ターゲット)、Layout(出力フォーマット)、およびフィルタが含まれます。 Appender を構成することにより、コンソールやファイルなど、ログ送信の宛先を指定できます。

前提条件

ステップ 1:SLS で Log4j Appender を構成する

このステップでは、SLS プロジェクトとログストアを作成する方法について説明します。 ログストアデータソースを Log4j Appender として構成すると、Java アプリケーションログを SLS に直接送信できます。

SLS プロジェクトは、クラスタと同じリージョンに作成することをお勧めします。 これにより、ログデータは内部ネットワーク経由で送信できるため、リージョン間の送信による外部帯域幅のコストとネットワーク遅延を回避できます。

SLS プロジェクトの請求の詳細については、「請求の概要」をご参照ください。
  1. SLS プロジェクトを作成します。

    以下では、主要なパラメータについて説明します。 その他のパラメータはデフォルトのままにしておくことができます。 詳細については、「プロジェクトの管理」をご参照ください。

    • [リージョン]: ACK クラスタと同じリージョンを選択することをお勧めします。 この例では、中国 (杭州) が選択されています。

    • [プロジェクト名]: この例では、k8s-log4j が使用されています。

  2. プロジェクトにログストアを作成します。

    この例では、[ログストア名] は k8s-logstore で、その他のパラメータはデフォルトのままです。 詳細については、「ログストアの管理」をご参照ください。

  3. k8s-logstore が作成されたら、ページのプロンプトに従ってデータにアクセスします。

    创建数据接入向导

  4. Log4j アクセスカードを検索して見つけ、ページのプロンプトに従ってアクセスを完了します。

    この例では、デフォルト構成が使用されています。 特定のログデータの使用シナリオに基づいて構成できます。自定义数据

ステップ 2:アプリケーションに Log4j を統合する

このステップでは、Spring Boot サンプルアプリケーションをデプロイすることにより、Log4j Appender プラグインを Java アプリケーションに統合する方法を示します。 統合後、コンテナの起動時に、SLS 構成が JAVA_OPTS 環境変数を通じて渡され、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 プロジェクト名。 この例では、k8s-log4j が使用されています。

    • -Dlogstore: SLS ログストア名。 この例では、k8s-logstore が使用されています。

    • -Dendpoint: SLS サービスエンドポイント。 プロジェクトが配置されているリージョンに基づいてサービスエンドポイントを構成します。 詳細については、「エンドポイント」をご参照ください。 この例では、cn-hangzhou.log.aliyuncs.com が使用されています。

    • -Daccess_key_id: AccessKey ID に置き換えます。

    • -Daccess_key: AccessKey Secret に置き換えます。

  2. デプロイメントを作成します。

    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 をデプロイしてサービスを作成します。

    kubectl create -f demo-service.yaml

ステップ 3:ログ収集機能をテストする

デプロイメントとサービスが正常にデプロイされた後、サービスの外部アクセス IP(EXTERNAL-IP)を表示し、サービスにアクセスしてログを生成し、ログが SLS に正常に書き込まれたかどうかを確認できます。

  1. サービスの 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
    完全な API コレクションは、「GitHub log4j-appender-demo」で確認できます。

ステップ 4:SLS コンソールでログを表示する

SLS コンソールにログインして、ログをクエリおよび分析できます。

  1. Simple Log Service コンソール にログインします。

  2. [プロジェクト] セクションで、ターゲットプロジェクトをクリックして、プロジェクト詳細ページに移動します。

  3. ログストアの右側にある 图标 アイコンをクリックし、[検索と分析] を選択して、クラスタによって出力されたログを表示します。

    查询分析

参考資料