このトピックでは、アプリケーションを変更することなく、Container Service for Kubernetes (ACK) クラスターのログをLog ServiceにエクスポートするようにYAMLファイルを設定する方法について説明します。 また、API操作で管理できるアプリケーションがACKクラスターにデプロイされます。 アプリケーションは、テスト目的のログを生成するために使用されます。
前提条件
ACKがアクティブ化され、ACKクラスターが作成されます。
この例では、ACKクラスターが中国 (杭州) リージョンに作成されます。
AccessKeyペアが作成されるか、RAM (Resource Access Management) が有効になります。 必要な権限が付与されていることを確認してください。 この例では、AccessKeyペアが作成されます。
背景情報
Log4jはApacheのオープンソースプロジェクトです。 Log4jは、ログレベル、ログ出力先、ログ出力形式の3つのコンポーネントで構成されています。 Log4Appenderを構成して、コンソール、ログファイル、GUIコンポーネント、ソケットサーバー、NTイベントビューアー、またはUNIX syslogデーモンにログデータをエクスポートできます。
手順
Log ServiceでLog4jAppenderを設定します。
Log Serviceでプロジェクトを作成します。
この例では、ACKクラスターがデプロイされている中国 (杭州) リージョンにk8s-log4jという名前のプロジェクトが作成されます。 詳細については、「プロジェクトの作成」をご参照ください。
説明ACKクラスターがデプロイされているリージョンにプロジェクトを作成することをお勧めします。 Log ServiceプロジェクトとACKクラスターが同じリージョンにデプロイされている場合、ログは内部ネットワーク内で送信されます。 これにより、ログデータのリアルタイム収集と迅速な取得が可能になります。 これはまた、追加の帯域幅および時間コストを必要とするクロスリージョン伝送を回避する。
k8s-log4jプロジェクトのLogstoreを作成します。
この例では、k8s-logstore という名前の Logstore が作成されます。 詳細については、「Logstore の作成」をご参照ください。
k8s-logstoreログストアが作成されると、データインポートウィザードの使用方法に関する手順を示すダイアログボックスが表示されます。
[カスタムコード] の [Log4jAppender] を選択し、ページで提供されている手順を実行して設定を行います。
この例では、Log4jAppenderはデフォルト設定で構成されています。 ビジネス要件に合わせて設定をカスタマイズすることもできます。
ACKクラスターのLog4jAppenderを設定します。
この例では、demo-deploymentファイルとdemo-Serviceファイルが使用されています。
ACKクラスターに接続します。
詳細については、「SSHを使用してKubernetesクラスターに接続する」または「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
demo-deployment.yamlファイルを取得し、
JAVA_OPTS
環境変数を設定します。以下は、demo-deployment.yamlファイルのサンプルテンプレートです。
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 ## Take note of the following fields 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
: Log Service内のプロジェクトの名前。 この例では、プロジェクトの名前はk8s-log4jです。-DlogStore
: Log Service内のLogstoreの名前。 この例では、Logstoreの名前はk8s-logstoreです。
エンドポイント この例では、サービスエンドポイントiがs cn-hangzhou.log.aliyuncs.comします。-Dendpoint
: Log serviceのサービスエンドポイント。 Log serviceプロジェクトがデプロイされているリージョンに基づいて、サービスエンドポイントを設定する必要があります。 詳細については、「-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
Kubernetesクラスターログを生成します。
kubectl get
コマンドを実行して、関連するリソースオブジェクトの展開ステータスを表示できます。 デプロイとサービスがデプロイされたら、kubectl get svc
コマンドを実行して、サービスの外部IPアドレス (EXTERNAL-IP) を確認します。Command:
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
コマンドを実行して、K8 S_SERVICE_IP
がEXTERNAL-IP
であるKubernetesクラスターログを生成できます。説明API操作の一覧については、『GitHub log4j-appender-demo』をご参照ください。
curl http://${K8S_SERVICE_IP}:8080/login?name=bruce
Log Serviceでのログの表示
Log Serviceコンソールの [プロジェクト] セクションで、k8s-log4jプロジェクトを見つけてクリックし、プロジェクトの詳細ページに移動します。
k8s-logstore Logstoreの右側にある
アイコンをクリックし、検索と分析を選択してKubernetesクラスターのログを表示します。