Alibaba Cloud Simple Log Service (SLS) は、サイドカーを使用した Elastic Container Instance (ECI) ログの収集をサポートしています。このトピックでは、サイドカーコンテナーをデプロイし、Logtail 構成を作成してコンテナーログを収集する方法について説明します。
前提条件
Serverless Kubernetes クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。
Simple Log Service が有効化されていること。
Simple Log Service コンソールにログインしたときにサービスが有効化されていない場合は、画面の指示に従って有効化してください。
背景情報
Alibaba Cloud SLS は、サイドカーを使用した ECI ログの収集をサポートしています。これは、各 ECI インスタンスで、サイドカーコンテナーがログエージェントとしてアプリケーションコンテナーと並行して実行され、アプリケーションコンテナーによって生成されたログを収集することを意味します。
サイドカーモードは Logtail に基づいています。Logtail は、アプリケーションコンテナーとログフォルダーを共有する必要があります。アプリケーションコンテナーは、共有フォルダーにログを書き込みます。その後、Logtail は共有フォルダー内のログファイルの変更を監視し、ログを収集します。
収集されたログは、次の 2 種類に分類できます。
標準出力
標準出力の収集は、ECI の stdlog ボリュームに依存します。Pod を作成するときに、このボリュームをサイドカーコンテナーにマウントします。これにより、サイドカーは標準出力ログにファイルとしてアクセスできます。これらのログは、ECI のベースコンポーネントによって収集されます。
テキストファイル
テキストファイルは、Pod 内の共有ボリュームを使用して収集できます。同じボリュームを Pod 内の複数のコンテナーにマウントできます。これにより、サイドカーはアプリケーションコンテナーがボリュームに書き込むテキストファイルを直接収集できます。
ステップ 1: サイドカーコンテナーのデプロイ
サイドカーコンテナーを含むデプロイメントを作成します。
以下は YAML ファイルのサンプルです。プレースホルダー変数を実際の値に置き換えてください。
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-log-sidecar-demo name: nginx-log-sidecar-demo spec: replicas: 2 selector: matchLabels: app: nginx-log-sidecar-demo template: metadata: labels: app: nginx-log-sidecar-demo spec: containers: - name: nginx-log-demo image: registry-vpc.${RegionId}.aliyuncs.com/log-service/docker-log-test:latest command: - /bin/mock_log args: - '--log-type=nginx' - '--stdout=false' - '--stderr=true' - '--path=/var/log/nginx/access.log' - '--total-count=100000000' - '--logs-per-sec=100' imagePullPolicy: Always volumeMounts: - mountPath: /var/log/nginx name: nginx-log - name: logtail image: registry-vpc.${RegionId}.aliyuncs.com/log-service/logtail:latest env: - name: ALIYUN_LOGTAIL_USER_ID value: "${Aliuid}" - name: ALIYUN_LOGTAIL_USER_DEFINED_ID value: nginx-log-sidecar - name: ALIYUN_LOGTAIL_CONFIG value: /etc/ilogtail/conf/${RegionId}/ilogtail_config.json - name: aliyun_logs_machinegroup value: k8s-group-app-alpine imagePullPolicy: Always volumeMounts: - mountPath: /var/log/nginx name: nginx-log - mountPath: /stdlog name: stdlog volumes: - emptyDir: {} # テキストファイルログを emptyDir ボリュームに保存 name: nginx-log - name: stdlog # 標準出力ログを stdlog ボリュームに保存 flexVolume: driver: alicloud/pod-stdlogPod 情報を取得します。
kubectl get pods -l app=nginx-log-sidecar-demo期待される出力は次のとおりです。
NAME READY STATUS RESTARTS AGE nginx-log-sidecar-demo-84587d9796-krn5z 2/2 Running 0 32m nginx-log-sidecar-demo-84587d9796-vhnld 2/2 Running 0 32mログを表示します。
kubectl コマンドを使用してログを表示する

Elastic Container Instance コンソールでログを表示する

ステップ 2: ログを収集するための Logtail の構成
サイドカーコンテナーをデプロイした後、Simple Log Service コンソールで Logtail 構成を作成してログを収集します。
Simple Log Service コンソールにログインします。
コンソールの右側で、[クイック統合] カードをクリックします。[データ] ページで、[RegEx - テキストログ] をクリックします。
プロジェクトと Logstore を選択し、[次へ] をクリックします。
プロジェクトまたは Logstore がない場合は、[今すぐ作成] をクリックして作成します。
説明システムは、Kubernetes クラスターごとに
k8s-log-{K8s-Cluster-ID}という名前のプロジェクトを自動的に作成します。マシングループを構成し、[次へ] をクリックします。
[シナリオ]: [K8s シナリオ] を選択します。
[デプロイモード]: [サイドカー] を選択します。
[マシングループの選択]: [ソースマシングループ] エリアで、ターゲットマシングループを選択し、[適用済みマシングループ] エリアに移動します。マシングループが利用できない場合は、[マシングループの作成] をクリックします。
Logtail を構成し、[次へ] をクリックします。
Logtail は、単純な単一行、正規表現、区切り文字、JSON などのモードでテキストログを収集することをサポートしています。詳細については、「ホストからログを収集する」をご参照ください。
以下は構成例です。
標準出力の例
標準出力を収集する場合、ログパスはコンテナー内の stdlog ボリュームのマウントパスです。次の表に、パラメーター設定の例を示します。
構成エリア
パラメーター
例
グローバル設定
構成名
stdout
入力設定
Logtail デプロイモード
テキストログ収集
ファイルパス
/stdlog/**/*.log
処理設定
処理モード
なし
説明処理プラグインを追加するには、「収集中のデータ処理 (処理プラグイン)」をご参照ください。
テキストファイルの例
テキストファイルを収集する場合、ログパスはコンテナー内の共有ボリュームのマウントパスです。次の表に、パラメーター設定の例を示します。
構成エリア
パラメーター
例
グローバル設定
構成名
file
入力設定
Logtail デプロイモード
テキストログ収集
ファイルパス
/var/log/nginx/**/*.log
処理設定
処理モード
なし
説明処理プラグインを追加するには、「収集中のデータ処理 (処理プラグイン)」をご参照ください。
クエリと分析の設定を構成します。
デフォルトでは、インデックスが構成されています。必要に応じてインデックスを再構成することもできます。詳細については、「インデックスを設定する」をご参照ください。
収集された ECI ログを表示します。
上記の手順を完了すると、SLS は ECI ログの収集を開始します。次の図は、SLS Logstore 内の標準出力ログの例を示しています。
