Log4j は Apache のオープンソースプロジェクトで、ログレベル、ログの出力先、ログ出力形式という 3 つの重要なコンポーネントで構成されています。 By configuring Log4jAppender の設定により、ログ出力先をコンソール、ファイル、GUI コンポーネント、ソケットサーバー、NT イベントレコーダー、または UNIX Syslog デーモンに設定できます。

ここでは、アプリケーションのコードを変更することなく、Container Service Kubernetes クラスターログを Alibaba Cloud Log Service に出力するための YAML ファイの設定方法を解説します。 このドキュメントでは、 デモ用に Kubernetes クラスターにサンプル API アプリケーションをデプロイします。

前提条件

  • Container Service を有効化し、Kubernetes クラスターが作成されている必要があります。

    この例では、杭州 (中国東部 1) のリージョンに Kubernetes クラスターを作成します。

  • AccessKey または RAM (Resource Access Managemen) の有効化が必要です。 十分なアクセス権を持っていることをご確認ください。 この例では、AccessKey を使用します。

手順 1: Alibaba Cloud Log Service での Log4jAppender の設定

  1. Log Service コンソール にログインします。
  2. [プロジェクトリスト] ページで、右上角の [プロジェクトの作成] をクリックします。 設定を完了させ、 [確認] をクリックし、プロジェクトを作成します。

    この例では、"k8s-log4j" という名前のプロジェクトを作成し、 Kubernetes クラスターと同一リージョン (杭州 (中国東部 1)) を選択します。

    Note 通常、Kubernetes クラスターと同一のリージョンに Log Service プロジェクトを 作成します。 Kubernetes クラスターおよび Log Service プロジェクトが同一リージョンにある場合、 イントラネットを使用してログデータが送信されます。これにより、インターネット帯域幅コストおよび、異なるリージョンからのデータ送信時間を抑え、リアルタイム収集および素早い照会のベストプラクティスが実装されます。
  3. プロジェクト作成後 [プロジェクトリスト] ページに、プロジェクト "k8s-log4j" が表示されます。 プロジェクト名をクリックします。
  4. [Logstore リスト] ページが表示されます。 右上角の [作成] をクリックします。
  5. 設定を完了させ、[確認] をクリックします。
    この例では、"k8s-logstore" という名前の Logstore を作成します。
  6. 次に、データインポートウィザードの使用を尋ねるダイアログボックスが表示されます。
  7. [データインポートウィザード] をクリックします。 [データソースの選択] ステップで、[その他のソース] の "log4jAppender" を選択し、ページの指示に従って設定を完了させます。
    このページの例では、デフォルトの設定を使用します。 指定されたログデータのシナリオに応じて設定を行います。

手順 2: Kubernetes クラスターでの Log4jAppender の設定

このページの例では、デモ用にサンプル YAML ファイル demo-deployment および demo-service を使用します。

  1. お使いの Kubernetes クラスターに接続します。

    詳しくは、SSH による Kubernetes クラスターへのアクセスまたはkubectl を使用した Kubernetes クラスターへの接続をご参照ください。

  2. demo-deployment.yaml ファイルを取得し、環境変数 JAVA_OPTS を設定し、 Kubernetes クラスターからのログを収集します。

    シンプルオーケストレーションの "demo-deployment.yaml" ファイルは以下のようになります。

    apiVersion: apps/v1beta2
    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 ## 注意
            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

    ここでは、

    • -Dproject: 使用される Alibaba Cloud Log Service プロジェクトの名前です。 この例では、 "k8s-log4j" です。
    • -Dlogstore: 使用される Alibaba Cloud Log Service Logstore の名前です。 この例では、 "k8s-logstore" です。
    • -Dendpoint: Log Service のサービスエンドポイントです。 Log Service プロジェクトが存在するリージョンに応じて、サービスエンドポイントを設定する必要があります。 詳しくは、 をご参照ください。サービスエンドポイント この例では、 "cn-hangzhou.log.aliyuncs.com" です。
    • -Daccess_key_id: お使いの AccessKey ID です。
    • -Daccess_key: お使いの AccessKey シークレットです。
  3. 以下のコマンドをコマンドラインで実行し、 デプロイを作成します。
    kubectl create -f demo-deployment.yaml
  4. demo-service.yaml ファイルを取得し、以下のコマンドを実行しサービスを 作成します。

    demo-service.yaml ファイルの設定を変更する必要はありません。

    kubectl create -f demo-service.yaml

手順 3: Kubernetes クラスターログの生成テスト

kubectl get コマンドを実行すると、リソースオブジェクトのデプロイメントステータスを参照できます。 デプロイメントとサービスが正常にデプロイされるまで待ちます。 次に、 kubectl get svc コマンドを実行して、サービスの外部アクセスIP、"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 コマンドを実行することで Kubernetes クラスターログの生成テストを行います。 ここで、K8S_SERVICE_IPEXTERNAL-IP です。

Note 全ての API コレクションを確認するには、 GitHub log4j-appender-demo を ご参照ください。
curl http://${K8S_SERVICE_IP}:8080/login? name=bruce

手順 4: Log Service でのログの表示

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

プロジェクト名をクリックし、Logstore "k8s-logstore" の右側の [検索] をクリックし、 Kubernetes クラスターの出力ログを参照します。

ログの出力内容は、前出のコマンドに対応します。 この例では、Log Service にサンプルアプリケーションのログを Alibaba Cloud Log Service へ出力する方法を示しています。 これまでの手順を完了させると、Alibaba Cloud での Log4JAppender の設定、 リアルタイムログ収集、データフィルタリング、および Alibaba Cloud Log Service によるログの照会などの高度な機能が実装されます。