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 の設定
- Log Service コンソール にログインします。
- [プロジェクトリスト] ページで、右上角の [プロジェクトの作成] をクリックします。 設定を完了させ、
[確認] をクリックし、プロジェクトを作成します。
この例では、"k8s-log4j" という名前のプロジェクトを作成し、 Kubernetes クラスターと同一リージョン (杭州 (中国東部 1)) を選択します。
Note 通常、Kubernetes クラスターと同一のリージョンに Log Service プロジェクトを 作成します。 Kubernetes クラスターおよび Log Service プロジェクトが同一リージョンにある場合、 イントラネットを使用してログデータが送信されます。これにより、インターネット帯域幅コストおよび、異なるリージョンからのデータ送信時間を抑え、リアルタイム収集および素早い照会のベストプラクティスが実装されます。 - プロジェクト作成後 [プロジェクトリスト] ページに、プロジェクト "k8s-log4j" が表示されます。 プロジェクト名をクリックします。
- [Logstore リスト] ページが表示されます。 右上角の [作成] をクリックします。
- 設定を完了させ、[確認] をクリックします。
この例では、"k8s-logstore" という名前の Logstore を作成します。
- 次に、データインポートウィザードの使用を尋ねるダイアログボックスが表示されます。
- [データインポートウィザード] をクリックします。 [データソースの選択] ステップで、[その他のソース] の "log4jAppender" を選択し、ページの指示に従って設定を完了させます。
このページの例では、デフォルトの設定を使用します。 指定されたログデータのシナリオに応じて設定を行います。
手順 2: Kubernetes クラスターでの Log4jAppender の設定
このページの例では、デモ用にサンプル YAML ファイル demo-deployment および demo-service を使用します。
- お使いの Kubernetes クラスターに接続します。
詳しくは、SSH による Kubernetes クラスターへのアクセスまたはkubectl を使用した Kubernetes クラスターへの接続をご参照ください。
- 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 シークレットです。
- 以下のコマンドをコマンドラインで実行し、
デプロイを作成します。
kubectl create -f demo-deployment.yaml
- 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_IP
は EXTERNAL-IP
です。
curl http://${K8S_SERVICE_IP}:8080/login? name=bruce
手順 4: Log Service でのログの表示
Log Service コンソール にログインします。
ログの出力内容は、前出のコマンドに対応します。 この例では、Log Service にサンプルアプリケーションのログを Alibaba Cloud Log Service へ出力する方法を示しています。 これまでの手順を完了させると、Alibaba Cloud での Log4JAppender の設定、 リアルタイムログ収集、データフィルタリング、および Alibaba Cloud Log Service によるログの照会などの高度な機能が実装されます。