すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:DaemonSetモードでKubernetesコンテナからstdoutとstderrを収集する

最終更新日:Nov 19, 2024

このトピックでは、Simple Log ServiceコンソールでLogtail設定を作成し、Logtail設定を使用してDaemonSetモードのコンテナからstdoutとstderrを収集する方法について説明します。

前提条件

  • Logtailコンポーネントがインストールされています。 詳細については、「KubernetesクラスターへのLogtailコンポーネントのインストール」をご参照ください。

  • Logtailコンポーネントのインストールに使用するプロジェクトにLogstoreが作成されます。 詳細については、「Logstore の作成」をご参照ください。

  • ログを収集するコンテナーは、継続的にログを生成します。

    重要

    Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。

特徴

Logtailは、コンテナのstdoutとstderrを収集し、コンテナのメタデータとともにstdoutとstderrをSimple Log Serviceにアップロードできます。 Logtailは次の機能をサポートしています。

  • stdoutとstderrを収集します。

  • コンテナーラベルのホワイトリストを使用して、ログを収集するコンテナーを指定します。

  • コンテナーラベルブラックリストを使用して、ログが収集されないコンテナーを指定します。

  • 環境変数ホワイトリストを使用して、ログを収集するコンテナーを指定します。

  • 環境変数ブラックリストを使用して、ログが収集されないコンテナを指定します。

  • 複数行のログを収集します。 たとえば、LogtailはJavaスタックログを収集できます。

  • 収集したコンテナログと一緒にアップロードする必要があるコンテナメタデータを自動的に関連付けます。 メタデータには、コンテナ名、イメージ名、ポッド名、名前空間、環境変数が含まれます。

  • コンテナーがKubernetesクラスターで実行される場合、Logtailは次の機能もサポートします。

    • Kubernetes名前空間、ポッド名、およびコンテナー名を使用して、ログを収集するコンテナーを指定します。

    • Kubernetesラベルホワイトリストを使用して、ログを収集するコンテナーを指定します。

    • Kubernetesラベルブラックリストを使用して、ログが収集されないコンテナーを指定します。

    • 収集されたコンテナログと一緒にアップロードする必要があるKubernetesラベルを自動的に関連付けます。

実装

LogtailはDockerのドメインソケットと通信します。 LogtailはすべてのDockerコンテナを照会し、指定されたラベルと環境変数を使用して、stdoutとstderrを収集する必要があるコンテナを識別します。 次に、Logtailはdocker logsコマンドを実行して、識別されたコンテナのログを収集します。

Logtailがコンテナからstdoutとstderrを収集すると、Logtailはチェックポイントファイルにチェックポイントを定期的に保存します。 Logtailが停止してから開始すると、Logtailは最後に保存されたチェックポイントからログを収集します。实现原理

制限事項

  • LogtailがV0.16.0以降で、Linuxで実行されている場合にのみ、DaemonSetモードでKubernetesコンテナからstdoutとstderrを収集できます。 Logtailのバージョンとバージョン更新の詳細については、「LinuxサーバーへのLogtailのインストール」をご参照ください。

  • Logtailは、Dockerエンジンまたはcontainerdエンジンを使用するコンテナーからのみデータを収集できます。

    • Docker: Logtailは、/run /Docker. sockディレクトリのdockerエンジンにアクセスします。 ディレクトリが存在し、Logtailにディレクトリにアクセスする権限があることを確認します。

    • containerd: Logtailは、/run/containerd/containerd.sockディレクトリにあるcontainerdエンジンにアクセスします。 ディレクトリが存在し、Logtailにディレクトリにアクセスする権限があることを確認します。

  • デフォルトでは、Logtailによって収集された最後の複数行ログは3秒間キャッシュされます。 これにより、出力遅延のために複数行のログが複数のログに分割されるのを防ぎます。 BeginLineTimeoutMsパラメーターを変更して、キャッシュ時間を変更できます。 ミリ秒の精度で1000未満の値を指定しないことを推奨します。 1000未満の値を指定すると、エラーが発生する可能性があります。

  • Logtailが停止したコンテナでdieイベントを検出した場合、Logtailはコンテナからstdoutまたはstderrを収集しなくなります。 収集待ち時間が存在する場合、コンテナが停止する前に収集されたstdoutおよびstderrが失われる可能性があります。

  • コンテナがDockerエンジンを使用している場合、ロギングドライバーはJSON形式でのみstdoutとstderrを収集できます。

  • デフォルトでは、同じLogtail構成を使用して異なるコンテナーから収集されたstdoutとstderrは同じコンテキストを持ちます。 この場合、コンテキストクエリ機能またはLiveTail機能を使用して、Simple Log Serviceコンソールでstdoutとstderrのコンテキストを表示することはできません。 前のシナリオでコンテキストを表示する場合は、アグリゲーター設定を追加する必要があります。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。

  • デフォルトでは、収集されたデータはcontentフィールドに保存されます。 Logtailは収集したデータを処理できます。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。

Logtail構成の作成

フォーム設定

Simple Log Serviceコンソールにログインします。 [クイックデータのインポート] セクションで、[データのインポート] をクリックします。 表示されるダイアログボックスで、[Kubernetes - Stdout and Stderr] を見つけてクリックします。 次に、画面の指示に従ってウィザードを設定します。

データのインポートウィザードのLogtail設定ステップで、次のパラメーターを設定します。采集标准输出

グローバル設定

パラメーター

説明

設定名

Logtail設定の名前を入力します。 名前はプロジェクト内で一意である必要があります。 Logtail設定を作成した後、Logtail設定の名前を変更することはできません。

高度なパラメータ

必要に応じて、 グローバル設定に関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。

入力設定

パラメーター

説明

標準出力

標準出力をオンにすると、Logtailはコンテナーのstdoutを収集します。

標準エラー

標準エラーをオンにすると、Logtailはコンテナstderrを収集します。

Container Metadataプレビューの有効化

[Container Metadata Previewの有効化] をオンにすると、Logtail設定の作成後に、一致したコンテナ情報と完全なコンテナ情報を含むコンテナメタデータを表示できます。

コンテナフィルタリング

Logtailのバージョン

  • Logtailのバージョンが1.0.34より前の場合、環境変数コンテナーラベルのみを使用してコンテナーをフィルター処理できます。

  • Logtailのバージョンが1.0.34以降の場合、異なるレベルのKubernetes情報を使用してコンテナをフィルタリングすることを推奨します。 情報には、K8sポッド名正規マッチングK8s名前空間正規マッチングK8sコンテナ名正規マッチングKubernetesポッドラベルホワイトリストが含まれます。

フィルター条件

重要
  • コンテナラベルは、docker inspectコマンドを実行して取得します。 コンテナラベルはKubernetesラベルとは異なります。 詳細については、「コンテナーラベルの取得」をご参照ください。

  • 環境変数は、コンテナーを起動するように設定されている環境変数と同じです。 詳細については、「環境変数の取得」をご参照ください。

  1. Kubernetes名前空間とコンテナー名は、コンテナーラベルにマップできます。 名前空間のラベルはio.kubernetes.pod.nameスペースです。 コンテナ名のラベルはio.kubernetes.container.nameです。 2つのラベルを使用してコンテナをフィルタリングすることを推奨します。 たとえば、ポッドの名前空間はbackend-prodで、ポッド内のコンテナーの名前はworker-serverです。 ワーカーサーバーコンテナのログを収集する場合は、コンテナラベルホワイトリストにio.kubernetes.pod.nameスペース: backend-prodまたはio.kubernetes.container.name : worker-serverを指定できます。

  2. 2つのラベルがビジネス要件を満たさない場合は、環境変数ホワイトリストまたは環境変数ブラックリストを使用してコンテナをフィルタリングできます。

K8sポッド名レギュラーマッチング

pod 名。 ポッド名は、stdoutとstderrを収集するコンテナーを指定します。 正規表現マッチングがサポートされています。 たとえば、^(nginx-log-demo.*)$, を指定すると、nginx-log-demoで始まる名前のポッド内のすべてのコンテナが一致します。

説明

Logtail V1.0.34以降はこのパラメーターをサポートしています。

K8s名前空間正規マッチング

名前空間。 名前空間は、stdoutとstderrが収集されるコンテナを指定します。 正規表現マッチングがサポートされています。 たとえば、^(default | nginx)$ を指定すると、nginx名前空間とdefault名前空間のすべてのコンテナーが一致します。

説明

Logtail V1.0.34以降はこのパラメーターをサポートしています。

K8sコンテナ名レギュラーマッチング

コンテナ名。 コンテナ名は、stdoutとstderrを収集するコンテナを指定します。 正規表現マッチングがサポートされています。 Kubernetesコンテナ名はspec.containersで定義されています。 たとえば、^(container-test)$ を指定すると、名前がcontainer-testであるすべてのコンテナが一致します。

説明

Logtail V1.0.34以降はこのパラメーターをサポートしています。

容器ラベルのホワイトリスト

コンテナーラベルのホワイトリスト。 ホワイトリストは、stdoutとstderrが収集されるコンテナを指定します。 このパラメーターはデフォルトで空で、stdoutとstderrがすべてのコンテナーから収集されることを指定します。 コンテナーラベルのホワイトリストを設定する場合、[ラベル名] パラメーターは必須で、[ラベル値] パラメーターはオプションです。

  • LabelValueパラメーターが空の場合、コンテナーラベルにLabelKeyで指定されたキーが含まれているコンテナーが一致します。

  • LabelValueパラメーターが空でない場合、コンテナーラベルがLabelKeyとLabelValueで指定されたキーと値のペアで構成されているコンテナーが一致します。

    デフォルトでは、LabelValueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、コンテナーラベルの値がLabelValueパラメーターの値と同じである場合にのみ一致します。 LabelValueパラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、LabelKeyパラメーターをio.kubernetes.container.nameに設定し、LabelValueパラメーターを ^(nginx | cube)$ に設定すると、nginxという名前のコンテナーとcubeという名前のコンテナーが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアの1つで構成されるコンテナーラベルがコンテナーにある場合、コンテナーは照合されます。

Container Labelブラックリスト

コンテナーラベルのブラックリスト。 ブラックリストは、stdoutとstderrが収集されないコンテナを指定します。 このパラメーターはデフォルトで空で、stdoutとstderrがすべてのコンテナーから収集されることを指定します。 コンテナーラベルブラックリストを設定する場合、[ラベル名] パラメーターは必須で、[ラベル値] パラメーターはオプションです。

  • LabelValueパラメーターが空の場合、コンテナーラベルにLabelKeyで指定されたキーが含まれているコンテナーは除外されます。

  • LabelValueパラメーターが空でない場合、コンテナーラベルがLabelKeyとLabelValueで指定されたキーと値のペアで構成されているコンテナーは除外されます。

    デフォルトでは、LabelValueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、コンテナーラベルの値がLabelValueパラメーターの値と同じである場合にのみ一致します。 LabelValueパラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、LabelKeyパラメーターをio.kubernetes.container.nameに設定し、LabelValueパラメーターを ^(nginx | cube)$ に設定すると、nginxという名前のコンテナーとcubeという名前のコンテナーが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアのいずれかで構成されるコンテナーラベルがコンテナーに含まれている場合、コンテナーは除外されます。

環境変数ホワイトリスト

環境変数のホワイトリスト。 ホワイトリストは、stdoutとstderrが収集されるコンテナを指定します。 このパラメーターはデフォルトで空で、stdoutとstderrがすべてのコンテナーから収集されることを指定します。 環境変数ホワイトリストを設定するときは、環境変数名パラメーターが必要であり、環境変数値パラメーターはオプションです。

  • EnvValueパラメーターが空の場合、EnvKeyで指定されたキーが環境変数に含まれるコンテナーが一致します。

  • EnvValueパラメーターが空でない場合、EnvKeyとEnvValueで指定されたキーと値のペアで環境変数が構成されているコンテナーが一致します。

    デフォルトでは、EnvValueパラメーターの値に対して文字列照合が実行されます。 コンテナは、環境変数の値がEnvValueパラメーターの値と同じである場合にのみ一致します。 EnvValueパラメーターにキャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、EnvKeyパラメーターをNGINX_SERVICE_PORTに設定し、EnvValueパラメーターを ^(80 | 6379)$ に設定した場合、ポート番号が80のコンテナーとポート番号が6379のコンテナーが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアの1つで構成される環境変数がコンテナーにある場合、コンテナーは照合されます。

環境変数ブラックリスト

環境変数ブラックリスト。 ブラックリストは、stdoutとstderrが収集されないコンテナを指定します。 このパラメーターはデフォルトで空で、stdoutとstderrがすべてのコンテナーから収集されることを指定します。 環境変数ブラックリストを設定するときは、環境変数名パラメーターが必要で、環境変数値パラメーターはオプションです。

  • EnvValueパラメーターが空の場合、EnvKeyで指定されたキーが環境変数に含まれるコンテナーは除外されます。

  • EnvValueパラメーターが空でない場合、EnvKeyとEnvValueで指定されたキーと値のペアで環境変数が構成されているコンテナーは除外されます。

    デフォルトでは、EnvValueパラメーターの値に対して文字列照合が実行されます。 コンテナは、環境変数の値がEnvValueパラメーターの値と同じである場合にのみ一致します。 EnvValueパラメーターにキャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、EnvKeyパラメーターをNGINX_SERVICE_PORTに設定し、EnvValueパラメーターを ^(80 | 6379)$ に設定した場合、ポート番号が80のコンテナーとポート番号が6379のコンテナーが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアの1つで構成される環境変数がコンテナーにある場合、コンテナーは除外されます。

Kubernetes Podラベルホワイトリスト

Kubernetesラベルのホワイトリスト。 ホワイトリストは、stdoutとstderrが収集されるコンテナを指定します。 Kubernetesラベルホワイトリストを設定する場合、label Nameパラメーターは必須で、Label Valueパラメーターはオプションです。

  • LabelValueパラメーターが空の場合、KubernetesラベルにLabelKeyで指定されたキーが含まれているコンテナーが一致します。

  • LabelValueパラメーターが空でない場合、KubernetesラベルがLabelKeyとLabelValueで指定されたキーと値のペアで構成されているコンテナーが一致します。

    デフォルトでは、LabelValueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、Kubernetesラベルの値がLabelValueパラメーターの値と同じである場合にのみ一致します。 キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、LabelKeyパラメーターをappに設定し、LabelValueパラメーターを ^(test1 | test2)$ に設定した場合、Kubernetesラベルがapp:test1またはapp:test2で構成されるコンテナが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアのいずれかで構成されるKubernetesラベルがコンテナーに含まれている場合、コンテナーは照合されます。

説明
  • Logtail V1.0.34以降はこのパラメーターをサポートしています。

  • デプロイメントなどのKubernetesコントロールリソースの実行中にKubernetesラベルを変更した場合、運用ポッドは再起動されません。 したがって、ポッドは変化を検出することができない。 これにより、マッチングルールが無効になる可能性があります。 KubernetesラベルホワイトリストとKubernetesラベルブラックリストを設定する際は、ポッドのKubernetesラベルを使用することを推奨します。 Kubernetesラベルの詳細については、「ラベルとセレクター」をご参照ください。

Kubernetesポッドラベルブラックリスト

Kubernetesラベルブラックリスト。 ブラックリストは、stdoutとstderrが収集されないコンテナを指定します。 Kubernetesラベルブラックリストを設定する場合、label Nameパラメーターは必須で、Label Valueパラメーターはオプションです。

  • LabelValueパラメーターが空の場合、KubernetesラベルにLabelKeyで指定されたキーが含まれているコンテナーは除外されます。

  • LabelValueパラメーターが空でない場合、KubernetesラベルがLabelKeyとLabelValueで指定されたキーと値のペアで構成されているコンテナーは除外されます。

    デフォルトでは、LabelValueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、Kubernetesラベルの値がLabelValueパラメーターの値と同じである場合にのみ一致します。 キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、LabelKeyパラメーターをappに設定し、LabelValueパラメーターを ^(test1 | test2)$ に設定した場合、Kubernetesラベルがapp:test1またはapp:test2で構成されるコンテナが一致します。

キーと値のペアは、OR演算子を使用して接続されます。 指定されたキーと値のペアのいずれかで構成されるKubernetesラベルがコンテナーに含まれている場合、コンテナーは除外されます。

説明
  • Logtail V1.0.34以降はこのパラメーターをサポートしています。

  • デプロイメントなどのKubernetesコントロールリソースの実行中にKubernetesラベルを変更した場合、運用ポッドは再起動されません。 したがって、ポッドは変化を検出することができない。 これにより、マッチングルールが無効になる可能性があります。 KubernetesラベルホワイトリストとKubernetesラベルブラックリストを設定する際は、ポッドのKubernetesラベルを使用することを推奨します。 Kubernetesラベルの詳細については、「ラベルとセレクター」をご参照ください。

ログタグの強化

Logtail V1.0.34以降を使用する場合は、環境変数またはKubernetesラベルをログタグとしてログに追加することを推奨します。

環境変数

このパラメーターを設定すると、Simple Log Serviceは環境変数関連のフィールドをログに追加します。 たとえば、環境変数名パラメーターをVERSIONに設定し、タグ名パラメーターをenv_versionに設定します。 コンテナの環境変数設定にVERSION=v1.0.0が含まれている場合、Simple Log Serviceは __tag __:__ env_version __: v1.0.0フィールドをログに追加します。

ポッドラベル

このパラメーターを設定すると、Simple Log ServiceはKubernetesポッドのラベル関連フィールドをログに追加します。 たとえば、Pod Label Nameパラメーターをappに設定し、Tag Nameパラメーターをk8s_pod_appに設定します。 Kubernetesクラスターのラベル設定にapp=serviceAが含まれている場合、Simple Log Serviceは __tag __:__ k8s_pod_app __: serviceAフィールドをログに追加します。

最大ログ長 (単位: バイト)

ログの最大サイズ。 デフォルト値: 524288 有効な値: 1024〜20971520。

ログのサイズがこのパラメーターの値を超えると、Logtailは次のログの最初の行の先頭との一致を停止し、ログをSimple log Serviceにアップロードします。

最初の収集中にトレースされた履歴データの最大長 (単位: バイト)

Logtailがログファイルからログを最初に収集したときに追跡できる履歴データの最大サイズ。 デフォルト値は131072バイトで、これは128 KBに相当します。 有効な値: 131072〜1048576。

高度なパラメータ

Logtail設定の特定のパラメーターを手動で設定する必要があります。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。

プロセッサ構成

パラメーター

説明

マルチラインモード

Regex to Match First Line

ログの最初の行の先頭を一致させるために使用される正規表現。 行の先頭が指定された正規表現と一致する場合、その行は新しいログの最初の行と見なされます。 行の先頭が指定された正規表現と一致しない場合、その行は前のログの一部と見なされます。

Regexによる最初の行の長さ (単位: バイト)

指定された正規表現と一致するログの最初の行の先頭のサイズ。 デフォルト値: 10240

このパラメーターを設定して、ログの最初の行の先頭が指定された正規表現と一致するかどうかを確認できます。 一致効率を向上させるためにこのパラメーターを設定することを推奨します。

1行目の一致タイムアウト (単位: ミリ秒)

指定された正規表現に基づいてログの最初の行の先頭を一致させるためのタイムアウト期間。 既定値:3000。

3,000ミリ秒以内に新しいログが生成されない場合、Logtailは一致を停止し、最後のログをSimple log Serviceにアップロードします。

説明

収集するログが複数行ログの場合は、複数行モードをオンにします。

処理方法

[プロセッサ] ダイアログボックスの [プロセッサタイプ] ドロップダウンリストから拡張プロセッサを選択できます。 プラグインの処理の詳細については、「データ処理用のLogtailプラグインの概要」をご参照ください。

(推奨) CRD - AliyunPipelineConfig

重要

LogtailコンポーネントV0.5.1以降のみがAliyunPipelineConfigをサポートしています。

Logtail設定を作成するには、AliyunPipelineConfig CRDからCRを作成するだけです。 Logtail設定を作成すると、システムは自動的にLogtail設定を適用します。

  1. クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続します

  2. 次のコマンドを実行して、YAMLファイルを作成します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    vim cube.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。

    重要
    • Logtail設定ごとにCRを設定する必要があります。 複数のCRが同じLogtail設定に関連付けられている場合、最初のCR以外のCRは有効になりません。

    • AliyunPipelineConfig CRDに関連するパラメーターの詳細については、「 (推奨) AliyunPipelineConfigを使用してLogtail構成を管理する」をご参照ください。 次の例では、Logtail構成に、コンテナーstdoutとstderrの収集に使用される基本設定が含まれています。 パラメーターの詳細については、「CreateLogtailPipelineConfig」をご参照ください。

    • config.flushers.Logstoreパラメーターで指定されたLogstoreが存在することを確認します。 spec.logstoreパラメーターを設定して、Logstoreを自動的に作成できます。

  4. 次のコマンドを実行してLogtail設定を適用します。 Logtail設定を適用すると、Logtailはコンテナーからstdoutとstderrの収集を開始し、収集したstdoutとstderrをSimple Log Serviceに送信します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    kubectl apply -f cube.yaml
    重要

    ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

CRD - AliyunLogConfig

Logtail設定を作成するには、AliyunLogConfig CRDからCRを作成するだけです。 Logtail設定が作成されると、システムは自動的にLogtail設定を適用します。

  1. クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続します

  2. 次のコマンドを実行して、YAMLファイルを作成します。 次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    vim cube.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。

    重要
    • configNameパラメーターの値は、Logtailコンポーネントのインストールに使用したSimple Log Serviceプロジェクトで一意である必要があります。

    • 複数のCRが同じLogtail設定に関連付けられている場合、いずれかのCRを削除または変更すると、Logtail設定が影響を受けます。 CRが削除または変更されると、関連する他のCRのステータスがSimple Log ServiceのLogtail設定のステータスと一致しなくなります。

    • CRパラメーターの詳細については、「AliyunLogConfigを使用したLogtail設定の管理」をご参照ください。 次の例では、Logtail構成に、コンテナーstdoutとstderrの収集に使用される基本設定が含まれています。 パラメーターの詳細については、「CreateConfig」をご参照ください。

    特定のコンテナから単一行モードでstdoutとstderrを収集する

    この例では、Kubernetesクラスター内の名前がappで始まるすべてのポッドのコンテナーから単一行モードでstdoutとstderrを収集するために、example-stdout-exampleという名前のLogtail設定が作成されます。 収集されたログは、k8s-clusteridという名前のプロジェクトに属するk8s-stdoutという名前のLogstoreに保存されk8s-log。

    # Configure the collection of stdout and stderr.
    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. 
      name: simple-stdout-example
    spec:
      # Specify the name of the Logstore. If the specified Logstore does not exist, Simple Log Service automatically creates a Logstore. 
      logstore: k8s-stdout
      # Configure the parameters for the Logtail configuration.
      logtailConfig:
        # Specify the type of the data source. If you want to collect container stdout and stderr, set the value to plugin.
        inputType: plugin
        # Specify the name of the Logtail configuration. The name must be the same as the resource name specified by the metadata.name parameter.
        configName: simple-stdout-example
        inputDetail:
          plugin:
            inputs:
              -
                # Input type
                type: service_docker_stdout
                detail:
                  # Collect stdout and stderr.
                  Stdout: true
                  Stderr: true
                  K8sPodRegex: "^(app.*)$"
  4. 次のコマンドを実行してLogtail設定を適用します。 Logtail設定を適用すると、Logtailはコンテナーからstdoutとstderrの収集を開始し、収集したstdoutとstderrをSimple Log Serviceに送信します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    kubectl apply -f cube.yaml
    重要

    ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

コンテナーメタデータのプレビュー

Logtail設定を作成した後、コンテナーのメタデータと、特定のコンテナーがフィルター条件に一致しなかった理由をLogtail設定ページで確認できます。

重要

Linux Logtail V1.4.0以降またはWindows Logtail V1.4.0.0以降のみがこの機能をサポートしています。

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

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    この例では、Logtail設定の作成に使用したプロジェクトをクリックします。

  3. ログストレージ > ログストアタブをクリックします。>を管理するLogstoreの左側に移動し、データ収集 > Logtailの設定.

    この例では、Logtail設定の作成に使用したLogstoreをクリックします。

  4. Logtail設定リストで、作成したLogtail設定をクリックします。

  5. Logtailの設定ページをクリックします。編集.

  6. Container Metadataプレビューの有効化.

  7. コンテナーメタデータのプレビュー.

  8. コンテナープレビューダイアログボックスで、コンテナーメタデータを表示します。

    • マッチングコンテナー タブには、指定されたフィルター条件に一致するコンテナのメタデータが表示されます。

    • フルコンテナー タブには、現在のKubernetesクラスター内のすべてのコンテナのメタデータと、特定のコンテナがフィルター条件に一致しなかった理由が表示されます。

ログのフィールド

次の表に、Kubernetesクラスターの各ログに対してデフォルトでアップロードされるフィールドを示します。

項目

説明

_time_

ログが収集された時刻。 例: 2021-02-02T02:18:41.979147844Z

_source_

ログソースのタイプ。 有効な値: stdoutおよびstderr。

_image_name_

The name of the image.

_container_name_

コンテナーの名前。The name of the container.

_pod_name_

ポッドの名前。

_namespace_

ポッドの名前空間。

_pod_uid_

pod の一意の識別子。

トラブルシューティング

Logtailを使用して標準コンテナやKubernetesコンテナなどのコンテナからログを収集するときに例外が発生した場合、次のトピックに基づいて問題のトラブルシューティングを行うことができます。