ワークロード YAML で Log4j Appender を構成することにより、クラスタ内の Java アプリケーションからのログを Alibaba Cloud Simple Log Service (SLS) プロジェクトに書き込み、非侵入型のログ収集を実現できます。
背景
Log4j は、Apache によって維持されているオープンソースのロギングフレームワークであり、特に Java アプリケーション向けに設計されています。 Log4j のコアコンポーネントには、Appender(出力ターゲット)、Layout(出力フォーマット)、およびフィルタが含まれます。 Appender を構成することにより、コンソールやファイルなど、ログ送信の宛先を指定できます。
前提条件
アプリケーションに Log4j Appender を統合するための AccessKey が作成されている。
アカウントのセキュリティを確保するために、Alibaba Cloud アカウントではなく RAM ユーザーを使用し、対応する AccessKey を作成することをお勧めします。
ステップ 1:SLS で Log4j Appender を構成する
このステップでは、SLS プロジェクトとログストアを作成する方法について説明します。 ログストアデータソースを Log4j Appender として構成すると、Java アプリケーションログを SLS に直接送信できます。
SLS プロジェクトは、クラスタと同じリージョンに作成することをお勧めします。 これにより、ログデータは内部ネットワーク経由で送信できるため、リージョン間の送信による外部帯域幅のコストとネットワーク遅延を回避できます。
SLS プロジェクトの請求の詳細については、「請求の概要」をご参照ください。
SLS プロジェクトを作成します。
以下では、主要なパラメータについて説明します。 その他のパラメータはデフォルトのままにしておくことができます。 詳細については、「プロジェクトの管理」をご参照ください。
[リージョン]: ACK クラスタと同じリージョンを選択することをお勧めします。 この例では、中国 (杭州) が選択されています。
[プロジェクト名]: この例では、k8s-log4j が使用されています。
プロジェクトにログストアを作成します。
この例では、[ログストア名] は k8s-logstore で、その他のパラメータはデフォルトのままです。 詳細については、「ログストアの管理」をご参照ください。
k8s-logstore が作成されたら、ページのプロンプトに従ってデータにアクセスします。

Log4j アクセスカードを検索して見つけ、ページのプロンプトに従ってアクセスを完了します。
この例では、デフォルト構成が使用されています。 特定のログデータの使用シナリオに基づいて構成できます。

ステップ 2:アプリケーションに Log4j を統合する
このステップでは、Spring Boot サンプルアプリケーションをデプロイすることにより、Log4j Appender プラグインを Java アプリケーションに統合する方法を示します。 統合後、コンテナの起動時に、SLS 構成が JAVA_OPTS 環境変数を通じて渡され、Log4j はパラメータを自動的に読み取り、ログをリアルタイムで SLS に送信します。
demo-deployment.yaml ファイルを取得し、
JAVA_OPTS環境変数を構成します。ファイルの取得方法の詳細については、「demo-deployment」をご参照ください。
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 に置き換えます。
デプロイメントを作成します。
kubectl create -f demo-deployment.yamldemo-Service.yaml ファイルを取得します。 デフォルト構成を維持できます。
ファイルアドレスについては、「demo-Service」をご参照ください。
demo-Service.yaml をデプロイしてサービスを作成します。
kubectl create -f demo-service.yaml
ステップ 3:ログ収集機能をテストする
デプロイメントとサービスが正常にデプロイされた後、サービスの外部アクセス IP(EXTERNAL-IP)を表示し、サービスにアクセスしてログを生成し、ログが SLS に正常に書き込まれたかどうかを確認できます。
サービスの
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 1hloginコマンドを実行して、クラスタログが正常に生成されるかどうかをテストします。K8s_SERVICE_IPをEXTERNAL-IPに置き換えます。curl http://${K8S_SERVICE_IP}:8080/login?name=bruce完全な API コレクションは、「GitHub log4j-appender-demo」で確認できます。
ステップ 4:SLS コンソールでログを表示する
SLS コンソールにログインして、ログをクエリおよび分析できます。
Simple Log Service コンソール にログインします。
[プロジェクト] セクションで、ターゲットプロジェクトをクリックして、プロジェクト詳細ページに移動します。
ログストアの右側にある
アイコンをクリックし、[検索と分析] を選択して、クラスタによって出力されたログを表示します。