DaemonSetモードのContainer Service for Kubernetes (ACK) クラスターのKubernetesコンテナーからテキストログを収集できます。 DaemonSetモードでは、各ノードはログエージェントを実行してO&M効率を向上させます。 ACKクラスター内の各ノードに、Simple Log ServiceのログエージェントであるLogtailをインストールできます。 これにより、Logtailは各ノードのすべてのコンテナのログを収集できます。 コンテナのステータスを分析し、収集したログに基づいてコンテナを管理できます。
実装
DaemonSetモード
DaemonSetモードでは、Kubernetesクラスター内のノードで1つのLogtailコンテナのみが実行されます。 Logtailを使用して、ノード上のすべてのコンテナからログを収集できます。
ノードがKubernetesクラスターに追加されると、クラスターは新しいノードにLogtailコンテナーを自動的に作成します。 Kubernetesクラスターからノードが削除されると、クラスターはノード上のLogtailコンテナーを自動的に破棄します。 DaemonSetsとカスタム識別子ベースのマシングループにより、Logtailプロセスを手動で管理する必要がなくなります。
コンテナ検出
Logtailコンテナが他のコンテナからログを収集する前に、Logtailコンテナは実行中のコンテナを特定して判断する必要があります。 このプロセスはコンテナ検出と呼ばれます。 コンテナー検出フェーズでは、LogtailコンテナーはKubernetesクラスターのkube-apiserverコンポーネントと通信しません。 代わりに、Logtailコンテナは、Logtailコンテナが実行されているノードのコンテナランタイムデーモンと通信して、ノード上のすべてのコンテナに関する情報を取得します。 これにより、コンテナ検出プロセスでkube-apiserverコンポーネントに圧力が発生するのを防ぎます。
Logtailを使用してログを収集する場合、名前空間、ポッド名、ポッドラベル、コンテナー環境変数などの条件を指定して、Logtailがログを収集するコンテナーを特定できます。
コンテナーのファイルパスマッピング
Kubernetesクラスター内のポッドは分離されています。 その結果、ポッド内のLogtailコンテナは、別のポッド内のコンテナのファイルに直接アクセスできません。 コンテナのファイルシステムは、コンテナホストのファイルシステムをコンテナにマウントすることによって作成される。 Logtailコンテナは、コンテナホストのルートディレクトリを含むファイルシステムがLogtailコンテナにマウントされた後にのみ、コンテナホスト上の任意のファイルにアクセスできます。 これにより、Logtailコンテナはファイルシステム内のファイルからログを収集できます。 コンテナ内のファイルパスとコンテナホスト上のファイルパスの関係は、ファイルパスマッピングと呼ばれます。
たとえば、コンテナ内のファイルパスは /log/app.log
です。 ファイルパスマッピング後、コンテナーホスト上のファイルパスは /var/lib/docker/containers/<container-id>/log/app.log
になります。 既定では、コンテナーホストのルートディレクトリを含むファイルシステムは、logtailコンテナーの /Logtail_host
ディレクトリにマウントされます。 したがって、Logtailコンテナは /logtail_host/var/lib/docker/containers/<container-id>/log/app.log
からログを収集します。
ステップ1: Logtailのインストール
LogtailはSimple Log Serviceのログエージェントです。 Logtailは、アプリケーションコードに侵入することなく、ACKクラスター内のコンテナーからログを収集できます。 Logtailを使用してログを収集する場合、アプリケーションコードを変更する必要はありません。 さらに、Logtailはアプリケーションからログを収集するときにアプリケーションに影響を与えません。 ACKクラスターにLogtailをインストールすると、logtail-dsという名前のDaemonSetがクラスターにデプロイされます。
コンテナログを収集してSimple Log Serviceに送信するには、1つのロギングツールのみを使用することを推奨します。 2つのロギングツールを使用して同時にログを収集すると、重複したログが収集されることがあります。 これにより、追加料金が発生し、リソースの浪費を引き起こす可能性があります。
Logtailのインストール、LogtailのバージョンとIPアドレスの表示、Logtailの操作ログの表示方法の詳細については、「LogtailコンポーネントのACKクラスターへのインストール」をご参照ください。
クラスター作成時のLogtailのインストール
ACKコンソールにログインします。
ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページの右上角にある [Kubernetes クラスターの作成] をクリックします。
この例では、Simple Log Serviceを有効にする手順のみを説明します。 ACKクラスターの作成方法の詳細については、「ACK管理クラスターの作成」をご参照ください。
[コンポーネント設定] ウィザードページで、[Log Serviceの有効化] を選択してLogtailをクラスターにインストールします。
Log Serviceの有効化を選択すると、コンソールはSimple Log Serviceプロジェクトの作成を求めます。 Simple Log Serviceで管理されるログの構造の詳細については、「プロジェクト」をご参照ください。 次のいずれかの方法を使用して、Simple Log Serviceプロジェクトを作成できます。
[プロジェクトの選択] をクリックし、収集したログを管理する既存のプロジェクトを選択します。
[プロジェクトの作成] をクリックします。
k8s-log-{ClusterID}
という名前のプロジェクトが自動的に作成され、収集されたログが管理されます。 ClusterIDは、作成するクラスターの一意のIDを示します。
パラメーターを設定したら、右下隅の [クラスターの作成] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。
Logtailがインストールされた状態でクラスターが作成された後、[クラスター] ページでクラスターを表示できます。
既存のクラスターへのLogtailのインストール
ACKコンソールにログインします。
ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。 クラスターの詳細ページが表示されます。
クラスターの詳細ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。 [ログとモニタリング] セクションで、logtail-dsを見つけます。
logtail-dsカードの右下隅にある [インストール] をクリックします。 [logtail-dsのインストール] ダイアログボックスで、[OK] をクリックします。
以前のバージョンのlogtail-dsが既にインストールされている場合は、logtail-dsカードの右下隅にある [アップグレード] をクリックしてコンポーネントを更新できます。
logtail-dsを更新すると、logtail-dsのパラメーターがリセットされます。 logtail-dsまたはalibaba-log-controllerの設定および環境変数は上書きされます。 設定と環境変数をカスタマイズした場合は、後で再構成する必要があります。 詳細については、「手動アップグレード」をご参照ください。
手順2: Logtailの設定
次のいずれかの方法を選択してLogtailを設定します。
方法1: Kubernetes CustomResourceDefinitions (CRD) を使用します。 CRDを使用すると、Logtail設定をバッチ設定し、Logtail設定のバージョン管理を有効にできます。 この方法は、Logtailのさまざまなログ収集設定を設定するのに適しています。 CRDを使用して作成されたLogtail設定は、Simple Log Serviceコンソールと同期されません。 CRDを使用して作成したLogtail設定を変更するには、関連するCRDを変更する必要があります。 Simple Log ServiceコンソールでLogtail設定を変更すると、Logtail設定に一貫性がなくなります。
方法2: Simple Log Serviceコンソールを使用してLogtailを設定します。 この方法は、いくつかのLogtail設定の作成と設定に適しています。 この方法では、クラスターにログインすることなく、いくつかの手順でLogtailを設定できます。 ただし、Logtail設定をバッチ作成することはできません。 方法1は方法2よりも優先される。
方法3: 環境変数を使用してLogtailを設定します。 このメソッドは、単一行のテキストログのみをサポートします。 複数行のテキストログまたは他の形式のログを収集する場合は、方法1または2を使用します。
Logtailを設定するときに、コンテナーフィルターオプションを設定し、ログ収集中に無視されるディレクトリまたはファイル (収集ブラックリスト) を指定し、ファイルを複数回収集できるようにします。
(推奨) CRD - AliyunPipelineConfig
Logtail設定の作成
LogtailコンポーネントV0.5.1以降のみがAliyunPipelineConfigをサポートしています。
Logtail設定を作成するには、AliyunPipelineConfig CRDからCRを作成するだけです。 Logtail設定が作成されると、自動的に適用されます。 CRに基づいて作成されたLogtail設定を変更する場合は、CRを変更する必要があります。
次のコマンドを実行して、YAMLファイルを作成します。
次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。vim cube.yaml
YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。
重要configName
パラメーターの値は、Logtailコンポーネントのインストールに使用するSimple Log Serviceプロジェクトで一意である必要があります。Logtail設定ごとにCRを設定する必要があります。 複数のCRが同じLogtail設定に関連付けられている場合、最初のCR以外のCRは有効になりません。
AliyunPipelineConfig
CRDに関連するパラメーターの詳細については、「 (推奨) AliyunPipelineConfigを使用してLogtail構成を管理する」をご参照ください。 この例では、Logtail設定にテキストログ収集の設定が含まれています。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。config.flushers.Logstoreパラメーターで指定されたLogstoreが存在することを確認します。 spec.logstoreパラメーターを設定して、Logstoreを自動的に作成できます。
特定のコンテナから単一行のテキストログを収集する
この例では、
example-k8s-file
という名前のLogtail設定が作成され、クラスター内のapp
を含む名前のコンテナーから1行のテキストログが収集されます。 ファイルはtest.LOG
で、パスは/data/logs/app_1
です。収集されたログは、
k8s-log-test
という名前のプロジェクトに属するk8s-file
という名前のLogstoreに保存されます。apiVersion: telemetry.alibabacloud.com/v1alpha1 # Create a CR from the ClusterAliyunPipelineConfig CRD. kind: ClusterAliyunPipelineConfig metadata: # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. The name is the same as the name of the Logtail configuration that is created. name: example-k8s-file spec: # Specify the project to which logs are collected. project: name: k8s-log-test # Create a Logstore to store logs. logstores: - name: k8s-file # Configure the parameters for the Logtail configuration. config: # Configure the Logtail input plug-ins. inputs: # Use the input_file plug-in to collect text logs from containers. - Type: input_file # Specify the file path in the containers. FilePaths: - /data/logs/app_1/**/test.LOG # Enable the container discovery feature. EnableContainerDiscovery: true # Add conditions to filter containers. Multiple conditions are evaluated by using a logical AND. ContainerFilters: # Specify the namespace of the pod to which the required containers belong. Regular expression matching is supported. K8sNamespaceRegex: default # Specify the name of the required containers. Regular expression matching is supported. K8sContainerRegex: ^(.*app.*)$ # Configure the Logtail output plug-ins. flushers: # Use the flusher_sls plug-in to send logs to a specific Logstore. - Type: flusher_sls # Make sure that the Logstore exists. Logstore: k8s-file # Make sure that the endpoint is valid. Endpoint: cn-hangzhou.log.aliyuncs.com Region: cn-hangzhou TelemetryType: logs
すべてのコンテナから複数行のテキストログを収集し、正規表現を使用してログを解析する
この例では、クラスター内のすべてのコンテナーから複数行のテキストログを収集するために、
example-k8sファイル
という名前のLogtail設定が作成されます。 ファイルはtest.LOG
で、パスは/data/logs/app_1
です。 収集されたログはJSONモードで解析され、k8s-log-test
という名前のプロジェクトに属するk8s-file
という名前のLogstoreに保存されます。次の例で提供されるサンプルログは、
{"content": "2024-06-19 16:35:00 INFOテストログ \nline-1\nline-2\nend"}
の形式でinput_fileプラグインによって読み取られます。 次に、ログは正規表現に基づいて{"time": "2024-06-19 16:35:00" 、"level": "INFO" 、"msg": "test log\nline-1\nline-2\nend"}
に解析されます。apiVersion: telemetry.alibabacloud.com/v1alpha1 # Create a CR from the ClusterAliyunPipelineConfig CRD. kind: ClusterAliyunPipelineConfig metadata: # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. The name is the same as the name of the Logtail configuration that is created. name: example-k8s-file spec: # Specify the project to which logs are collected. project: name: k8s-log-test # Create a Logstore to store logs. logstores: - name: k8s-file # Configure the parameters for the Logtail configuration. config: # Specify the sample log. You can leave this parameter empty. sample: | 2024-06-19 16:35:00 INFO test log line-1 line-2 end # Configure the Logtail input plug-ins. inputs: # Use the input_file plug-in to collect multi-line text logs from containers. - Type: input_file # Specify the file path in the containers. FilePaths: - /data/logs/app_1/**/test.LOG # Enable the container discovery feature. EnableContainerDiscovery: true # Enable multi-line log collection. Multiline: # Specify the custom mode to match the beginning of the first line of a log based on a regular expression. Mode: custom # Specify the regular expression that is used to match the beginning of the first line of a log. StartPattern: \d+-\d+-\d+.* # Specify the Logtail processing plug-ins. processors: # Use the processor_parse_regex_native plug-in to parse logs based on the specified regular expression. - Type: processor_parse_regex_native # Specify the name of the input field. SourceKey: content # Specify the regular expression that is used for the parsing. Use capturing groups to extract fields. Regex: (\d+-\d+-\d+\s*\d+:\d+:\d+)\s*(\S+)\s*(.*) # Specify the fields that you want to extract. Keys: ["time", "level", "msg"] # Configure the Logtail output plug-ins. flushers: # Use the flusher_sls plug-in to send logs to a specific Logstore. - Type: flusher_sls # Make sure that the Logstore exists. Logstore: k8s-file # Make sure that the endpoint is valid. Endpoint: cn-hangzhou.log.aliyuncs.com Region: cn-hangzhou TelemetryType: logs
次のコマンドを実行してLogtail設定を適用します。 Logtail設定が適用されると、Logtailは指定されたコンテナからテキストログの収集を開始し、そのログをSimple Log Serviceに送信します。
次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。kubectl apply -f cube.yaml
重要ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。
CRD - AliyunLogConfig
Logtail設定を作成するには、AliyunLogConfig CRDからCRを作成するだけです。 Logtail設定が作成されると、自動的に適用されます。 CRに基づいて作成されたLogtail設定を変更する場合は、CRを変更する必要があります。
次のコマンドを実行して、YAMLファイルを作成します。
次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。vim cube.yaml
YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。
重要configName
パラメーターの値は、Logtailコンポーネントのインストールに使用するSimple Log Serviceプロジェクトで一意である必要があります。複数のCRが同じLogtail設定に関連付けられている場合、いずれかのCRを削除または変更すると、Logtail設定が影響を受けます。 CRが削除または変更されると、関連する他のCRのステータスがSimple Log ServiceのLogtail設定のステータスと一致しなくなります。
CRパラメーターの詳細については、「AliyunLogConfigを使用したLogtail設定の管理」をご参照ください。 この例では、Logtail設定にテキストログ収集の設定が含まれています。 詳細については、「CreateConfig」をご参照ください。
特定のコンテナから単一行のテキストログを収集する
この例では、
example-k8s-file
という名前のLogtail構成が作成され、クラスター内の名前がapp
で始まるすべてのポッドのコンテナーから単一行のテキストログが収集されます。 ファイルはtest.LOG
で、パスは/data/logs/app_1
です。 収集されたログは、k8s-log-test
という名前のプロジェクトに属するk8s-file
という名前のLogstoreに保存されます。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: example-k8s-file namespace: kube-system spec: # Specify the name of the project. If you leave this parameter empty, the project named k8s-log-<your_cluster_id> is used. project: k8s-log-test # Specify the name of the Logstore. If the specified Logstore does not exist, Simple Log Service automatically creates a Logstore. logstore: k8s-file # Configure the parameters for the Logtail configuration. logtailConfig: # Specify the type of the data source. If you want to collect text logs, set the value to file. inputType: file # Specify the name of the Logtail configuration. configName: example-k8s-file inputDetail: # Specify the simple mode to collect text logs. logType: common_reg_log # Specify the log file path. logPath: /data/logs/app_1 # Specify the log file name. You can use wildcard characters (* and ?) when you specify the log file name. Example: log_*.log. filePattern: test.LOG # Set the value to true if you want to collect text logs from containers. dockerFile: true # Specify conditions to filter containers. advanced: k8s: K8sPodRegex: '^(app.*)$'
次のコマンドを実行してLogtail設定を適用します。 Logtail設定が適用されると、Logtailは指定されたコンテナからテキストログの収集を開始し、そのログをSimple Log Serviceに送信します。
次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。kubectl apply -f cube.yaml
重要ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。
コンソール
にログインします。Simple Log Serviceコンソール.
[クイックデータのインポート] セクションで、[データのインポート] をクリックします。 [データのインポート] ダイアログボックスで、[Kubernetes-ファイル] カードをクリックします。
必要なプロジェクトとLogstoreを選択します。 [次へ] をクリックします。 この例では、Logtailコンポーネントのインストールに使用するプロジェクトと、作成するLogstoreを選択します。
[マシングループの設定] ステップで、次の操作を実行します。
ビジネス要件に基づいて、次のいずれかの設定を使用します。
- 重要
以降の設定は、前述の設定によって異なります。
必要なマシングループが [応用サーバーグループ] セクションに追加されていることを確認します。 そして、[次へ] をクリックします。 Container Service for Kubernetes (ACK) クラスターにLogtailコンポーネントをインストールすると、Simple Log Serviceは
k8s-group-${your_k8s_cluster_id}
という名前のマシングループを自動的に作成します。 このマシングループを直接使用できます。重要マシングループを作成する場合は、[マシングループの作成] をクリックします。 表示されるパネルで、パラメーターを設定してマシングループを作成します。 詳細については、「ACKコンソールの使用」をご参照ください。
マシングループのハートビートステータスがFAILの場合、[自動再試行] をクリックします。 問題が解決しない場合は、ホスト環境のLogtailマシングループに関連するエラーのトラブルシューティングを行うにはどうすればよいですか?
Logtail設定を作成し、[次へ] をクリックします。 Simple Log Serviceは、Logtail設定の作成後にログの収集を開始します。
説明Logtail設定を有効にするには、最大3分かかります。
インデックスの作成とプレビュー 次に、[次へ] をクリックします。 デフォルトでは、Simple Log Serviceでフルテキストインデックスが有効になっています。 手動モードまたは自動モードで収集したログに基づいてフィールドインデックスを設定することもできます。 自動モードでフィールドインデックスを設定するには、[自動インデックス生成] をクリックします。 これにより、Simple Log Serviceは自動的にフィールドインデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。
重要ログのすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することを推奨します。 特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することを推奨します。 これは、インデックストラフィックを減らすのに役立ちます。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。
[クエリログ] をクリックします。 次に、Logstoreのクエリと分析ページにリダイレクトされます。
インデックスが有効になるまで約1分待つ必要があります。 次に、収集したログを [生ログ] タブで表示できます。 詳細については、「ログの照会と分析」をご参照ください。
環境変数
1. アプリケーション作成時のSimple Log Serviceの設定
ACKコンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページで、[名前空間] ドロップダウンリストから名前空間を選択します。 次に、ページの右上隅にある [画像から作成] をクリックします。
[基本情報] ウィザードページで、[名前] 、[レプリカ] 、および [タイプ] を指定します。 次に、[次へ] をクリックして、コンテナーウィザードページに移動します。
次のセクションでは、Simple Log Serviceに関連するパラメーターのみについて説明します。 その他のアプリケーションパラメーターの詳細については、「デプロイの作成」をご参照ください。
[ログ] セクションで、ログ収集パラメーターを設定します。
[コレクション設定] を設定します。
プラス記号 ([+]) をクリックして設定エントリを追加します。 各設定エントリは、Logstoreとコンテナーのログパス (stdoutに設定可能) パラメーターで構成されます。
Logstore: 収集したログデータの保存に使用するLogstoreの名前を指定します。 Logstoreが存在しない場合、ACKはACKクラスターに関連付けられているSimple Log ServiceプロジェクトにLogstoreを自動的に作成します。
説明Logstoreのデフォルトのログ保存期間は90日です。
コンテナー内のログパス (stdoutに設定可能): ログデータを収集するパス。 /usr/local/tomcat/logs/catalina.*.logの値は、Tomcatアプリケーションのログファイルが収集されていることを示します。
説明値をstdoutに設定すると、stdoutとstderrが収集されます。
すべての設定は、対応するLogstoreに設定エントリとして追加されます。 デフォルトでは、ログはシンプルモード (行単位) で収集されます。 他の方法を使用してログデータを収集する場合は、「Simple log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」および「DaemonSetモードでKubernetesコンテナからstdoutとstderrを収集する」をご参照ください。
[カスタムタグ] を設定します。
プラス記号 ([+]) をクリックしてカスタムタグを追加します。 各タグは、収集されたログデータに追加されるキーと値のペアです。 カスタムタグを使用して、ログデータをマークできます。 たとえば、タグを使用してアプリケーションのバージョンを示すことができます。
パラメーターを設定したら、[次へ] をクリックして詳細設定を設定します。
後続の手順の詳細については、「デプロイの作成」をご参照ください。
YAMLテンプレートの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページで、[名前空間] ドロップダウンリストから名前空間を選択します。 次に、ページの右上隅にある [YAMLから作成] をクリックします。
YAMLテンプレートを設定します。
YAMLテンプレートは、Kubernetes構文に準拠しています。
env
を使用して、ログ収集設定とカスタムタグを定義できます。volumeMounts
およびvolumes
パラメーターも設定する必要があります。 次のサンプルコードは、ポッド設定の例を示しています。apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: # Specify environment variables. - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 # Configure volume mounting. volumeMounts: - name: volumn-sls-mydemo mountPath: /var/log # If the pod is repetitively restarted, you can add a sleep command to the startup parameters of the pod. command: ["sh", "-c"] # Run commands in the shell. args: ["sleep 3600"] # Make the pod sleep 3,600 seconds (1 hour). volumes: - name: volumn-sls-mydemo emptyDir: {}
ビジネス要件に基づいて、次の手順を順番に実行します。
説明他のログ収集要件がある場合は、2をご参照ください。 環境変数を使用して詳細設定を構成します。
環境変数を使用して、ログ収集設定とカスタムタグを追加します。 ログ収集に関連するすべての環境変数は、プレフィックスとして
aliyun_logs_
を使用する必要があります。環境変数を次の形式で追加します。
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log
上記の例では、次の形式の2つの環境変数がログ収集設定に追加されています。
aliyun_logs_{key}
。 環境変数の{keys}
は、log-stdout
とlog-varlog
です。aliyun_logs_log-stdout
環境変数は、log-stdout
という名前のLogstore
が作成され、コンテナーから収集されたstdout
を格納することを示します。 収集設定の名前はlog-stdout
です。 これにより、コンテナーのstdoutがlog-stdout
という名前のLogstore
に収集されます。aliyun_logs_log-varlog
環境変数は、コンテナーから収集された /var/log/*.logファイルを格納するために、log-varlog
という名前のLogstore
が作成されることを示します。 収集設定の名前はlog-varlog
です。 これにより、/var/log/*.logファイルは、log-varlog
という名前のLogstore
に収集されます。
次の形式でカスタムタグを追加します。
- name: aliyun_logs_mytag1_tags value: tag1=v1
タグが追加されると、タグはコンテナから収集されたログデータに自動的に追加されます。
mytag1
は、アンダースコアなしのタグ名 (_)
を指定します。
stdout以外のログファイルを収集するログパスを指定する場合は、
volumeMounts
パラメーターを設定する必要があります。上記のYAMLテンプレートでは、
volumeMounts
のmountPathフィールドは /var/logに設定されています。 これにより、Logtailは /var/log/*.logファイルからログデータを収集できます。
YAMLテンプレートを変更した後、[作成] をクリックして設定を送信します。
2. 環境変数を使用して詳細設定を構成する
コンテナー環境変数を設定して、ログ収集をカスタマイズできます。 環境変数を使用して、ログ収集要件を満たすように詳細設定を構成できます。
エッジコンピューティングシナリオでは、環境変数を使用してログ収集を構成することはできません。
変数 | 説明 | 例 | 補足 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | この変数はオプションです。 この変数は、ログデータにタグを追加するために使用されます。 値は {tag-key }={ tag-value} の形式である必要があります。 |
| 非該当 |
aliyun_logs_{key}_project | この変数はオプションです。 変数は、Simple Log Serviceのプロジェクトを指定します。 デフォルトのプロジェクトは、クラスターの作成時に指定したプロジェクトです。 |
| プロジェクトはLogtailと同じリージョンにデプロイする必要があります。 |
aliyun_logs_{key}_logstore | この変数はオプションです。 この変数は、Simple Log ServiceのLogstoreを指定します。 デフォルトでは、Logstoreの名前は {key} です。 |
| 非該当 |
aliyun_logs_{key}_shard | この変数はオプションです。 この変数は、Logstoreのシャードの数を指定します。 有効な値: 1 ~ 10。 デフォルト値:2 説明 指定したLogstoreが既に存在する場合、この変数は有効になりません。 |
| 非該当 |
aliyun_logs_{key}_ttl | この変数はオプションです。 変数は、ログの保持期間を指定します。 有効な値: 1 ~ 3650
説明 指定したLogstoreが既に存在する場合、この変数は有効になりません。 |
| 非該当 |
aliyun_logs_{key}_machinegroup | この変数はオプションです。 この変数は、アプリケーションがデプロイされるノードグループを指定します。 デフォルトのノードグループは、Logtailがデプロイされているノードグループです。 変数の使用方法の詳細については、「シナリオ2: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにログデータを保存する」をご参照ください。 |
| 非該当 |
aliyun_logs_{key}_logstoremode | この変数はオプションです。 この変数は、Logstoreのタイプを指定します。 デフォルト値: standard。 有効な値: 説明 指定したLogstoreが既に存在する場合、この変数は有効になりません。
|
| この変数を使用するには、logtail-dsイメージのバージョンが1.3.1以降であることを確認します。 |
シナリオ1: 複数のアプリケーションからログデータを収集し、同じログストアにデータを保存する
このシナリオでは、aliyun_logs_{key}_logstore変数を設定します。 次の例は、2つのアプリケーションからstdoutを収集し、出力をstdout-logstoreに格納する方法を示しています。
アプリケーション1の
{key}
はapp1-stdout
に設定されています。 アプリケーション2の{key}
はapp2-stdout
に設定されています。アプリケーション1の次の環境変数を設定します。
# Specify environment variables. - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore
アプリケーション2の次の環境変数を設定します。
# Specify environment variables. - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore
シナリオ2: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにデータを保存する
このシナリオでは、次の手順を実行します。
各プロジェクトにマシングループを作成し、次の形式でマシングループのカスタム識別子を設定します。
k8s-group-{cluster-id}
({cluster-id}
はクラスターのID) 。 カスタムマシングループ名を指定できます。各アプリケーションの環境変数に、プロジェクト、Logstore、およびマシングループを指定します。 マシングループの名前は、前の手順で作成したものと同じです。
次の例では、アプリケーション1の
{key}
がapp1-stdout
に設定されています。 アプリケーション2の{key}
はapp2-stdout
に設定されています。 2つのアプリケーションが同じACKクラスターにデプロイされている場合、アプリケーションに同じマシングループを使用できます。アプリケーション1の次の環境変数を設定します。
# Specify environment variables. - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group
アプリケーション2の次の環境変数を設定します。
# Specify environment variables for Application 2. - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_project value: app2-project - name: aliyun_logs_app2-stdout_logstore value: app2-logstore - name: aliyun_logs_app2-stdout_machinegroup value: app1-machine-group
ステップ3: ログの照会と分析
Logtailによって収集されたコンテナログは、Simple Log ServiceのLogstoreに保存されます。 ログは、Simple Log ServiceコンソールまたはACKコンソールで表示できます。 クエリ構文の詳細については、「ログ検索の概要」をご参照ください。
ACKコンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[ログセンター] ページで、[アプリケーションログ] タブをクリックし、フィルター条件を指定します。 次に、[Logstoreの選択] をクリックして、コンテナーのログを表示します。
Simple Log Serviceコンソール
Simple Log Service コンソールにログインします。
[プロジェクト] セクションで、Kubernetesクラスターに関連付けられているプロジェクトをクリックし、[ログストア] タブに移動します。 デフォルトでは、プロジェクト名はk8s-log-{KubernetesクラスターID} の形式です。
Logstoreリストで、ログ収集の設定時に指定されたLogstoreを見つけます。 Logstore名の上にポインタを移動し、アイコンをクリックします。 次に、[検索と分析] をクリックします。
この例では、Tomcatアプリケーションのstdoutとコンテナーのテキストログファイルを表示できます。 また、収集したログデータにカスタムタグが追加されていることも確認できます。
コンテナテキストログのデフォルトフィールド
次の表に、各コンテナテキストログにデフォルトで含まれるフィールドを示します。
フィールド名 | 説明 |
__タグ __:__ ホスト名__ | コンテナーホストの名前。 |
__tag __:__ path__ | コンテナー内のログファイルのパス。 |
__tag __:_ container_ip_ | コンテナーのIPアドレス。 |
__タグ __:_ image_name_ | コンテナーで使用されるイメージの名前。 |
__tag __:_ pod_name_ | ポッドの名前。 |
__tag __:_ 名前空間_ | ポッドが属する名前空間。 |
__tag __:_ pod_uid_ | ポッドの一意識別子 (UID) 。 |
関連ドキュメント
サイドカーコンテナを使用してコンテナログを収集する方法の詳細については、「sidecarモードでのKubernetesコンテナからのテキストログの収集」をご参照ください。
コンテナーからstdoutを収集する方法の詳細については、「DaemonSetモードでKubernetesコンテナーからstdoutとstderrを収集する」をご参照ください。
ログベースのアラートルールを追加する方法の詳細については、「アラートモニタリングルールの管理」をご参照ください。
ログ収集エラーのトラブルシューティング方法の詳細については、Logtailを使用してログを収集するときにエラーが発生した場合はどうすればよいですか?
Logtailを使用してAlibaba Cloudアカウント全体のコンテナログを収集する方法の詳細については、「Logtailを使用してAlibaba Cloudアカウント全体のコンテナログを収集する」をご参照ください。
ログ保存期間の変更やログ収集の無効化など、Logstoreに関する質問がある場合は、「Logstoreに関するよくある質問」をご参照ください。