Simple Log Service では、DaemonSet モードまたは Sidecar モードで Logtail をインストールし、Logtail を使用して Kubernetes クラスターからテキストログを収集できます。モード間の違いの詳細については、「Kubernetes クラスターからログを収集するために Logtail をインストールする」をご参照ください。このトピックでは、DaemonSet モードで Logtail をインストールし、Logtail を使用して自己管理型 Kubernetes クラスターからテキストログを収集する方法について説明します。
前提条件
Simple Log Service が有効化されている。
Kubernetes 1.6 以降のクラスターが利用可能である。
kubectl コマンドラインツールが Kubernetes クラスターにインストールされている。
使用上の注意
Kubernetes クラスターから stdout と stderr を収集できます。詳細については、「自己管理型 Kubernetes クラスターから stdout と stderr を収集するために DaemonSet モードで Logtail をインストールする(旧バージョン)」をご参照ください。
Container Service for Kubernetes (ACK) クラスターからテキストログを収集できます。詳細については、「ACK クラスターからテキストログを収集するために DaemonSet モードで Logtail をインストールする」をご参照ください。
ソリューションの概要
以下の手順を実行して、DaemonSet モードで Logtail をインストールし、Logtail を使用して自己管理型 Kubernetes クラスターからテキストログを収集できます。
Logtail コンポーネントのインストール: Kubernetes クラスターに Logtail コンポーネントをインストールします。Logtail コンポーネントには、DaemonSet logtail-ds、ConfigMap alibaba-log-configuration、および Deployment alibaba-log-controller が含まれます。Logtail コンポーネントがインストールされると、Simple Log Service は Logtail 構成を Logtail に配信し、Logtail を使用して Kubernetes クラスターからログを収集できます。
Logtail 構成の作成: Logtail 構成が作成されると、Logtail は Logtail 構成に基づいて増分ログを収集し、収集されたログを処理して作成された Logstore にアップロードします。CRD - AliyunPipelineConfig または CRD - AliyunLogConfig を使用するか、Simple Log Service コンソールで Logtail 構成を作成できます。CRD - AliyunPipelineConfig をお勧めします。
ログのクエリと分析: Logtail 構成が作成されると、Simple Log Service は収集されたログを格納する Logstore を自動的に作成します。Logstore 内のログを表示できます。
ステップ 1: Logtail をインストールする
alibaba-log-controller コンポーネントは、Kubernetes 1.6 以降でのみ使用できます。
コマンドを実行するマシンに kubectl コマンドラインツールがインストールされていることを確認してください。
Simple Log Service コンソールにログインします。 プロジェクトを作成します。詳細については、「プロジェクトを作成する」をご参照ください。
k8s-log-で始まる名前のプロジェクトを作成することをお勧めします。例:k8s-log-${your_k8s_cluster_id}。Kubernetes クラスターにログインし、次のコマンドを実行して Logtail と必要な依存コンポーネントをインストールします。
インストールパッケージをダウンロードして解凍します。
中国本土
wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh中国本土以外
wget https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh
./alibaba-cloud-log-all/values.yaml構成ファイルを修正します。# ===================== Required settings ===================== # The name of the project. SlsProjectName: # The ID of the region where the project resides. Region: # The ID of the Alibaba Cloud account to which the project belongs. You must enclose the ID in double quotation marks (""). AliUid: "11**99" # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or Resource Access Management (RAM) user. The RAM user must have the AliyunLogFullAccess permission. AccessKeyID: AccessKeySercret: # The custom ID of the cluster. The ID can contain only letters, digits, and hyphens (-). ClusterID: # ========================================================== # Specifies whether to enable metric collection for the related components. Valid values: true and false. Default value: true. SlsMonitoring: true # The network type. Valid values: Internet and Intranet. Default value: Internet. Net: Internet # Specifies whether the container runtime of the cluster is containerd. Valid values: true and false. Default value: false. SLS_CONTAINERD_USED: true次の表は、上記のコマンドに含まれるパラメーターについて説明しています。ビジネス要件に基づいてパラメーターを構成できます。
パラメーター
説明
SlsProjectName作成されたプロジェクトの名前。
Regionプロジェクトが存在するリージョンの ID。たとえば、中国 (杭州) リージョンの ID は
cn-hangzhouです。詳細については、「サポートされているリージョン」をご参照ください。AliUidプロジェクトが属する Alibaba Cloud アカウントの ID。ID は二重引用符 ("") で囲む必要があります。例:
AliUid: "11**99"。詳細については、「Simple Log Service プロジェクトが属する Alibaba Cloud アカウントの ID を取得する」をご参照ください。AccessKeyIDプロジェクトが属する Alibaba Cloud アカウントの AccessKey ID。RAM ユーザーの AccessKey ペアを使用し、RAM ユーザーに AliyunLogFullAccess ポリシーをアタッチすることをお勧めします。詳細については、「RAM ユーザーを作成し、RAM ユーザーに Simple Log Service へのアクセスを承認する」をご参照ください。
AccessKeySercretプロジェクトが属する Alibaba Cloud アカウントの AccessKey シークレット。RAM ユーザーの AccessKey ペアを使用し、RAM ユーザーに AliyunLogFullAccess ポリシーをアタッチすることをお勧めします。詳細については、「RAM ユーザーを作成し、RAM ユーザーに Simple Log Service へのアクセスを承認する」をご参照ください。
ClusterIDクラスターのカスタム ID。ID には、文字、数字、およびハイフン (-) のみを含めることができます。このパラメーターは、以下の操作の
${your_k8s_cluster_id}変数に対応します。重要異なる Kubernetes クラスターに同じクラスター ID を指定しないでください。
SlsMonitoring関連コンポーネントのメトリック収集を有効にするかどうかを指定します。有効な値:
true (デフォルト)
false
Netネットワークタイプ。有効な値:
インターネット (デフォルト)
イントラネット
SLS_CONTAINERD_USEDクラスターのコンテナーランタイムが containerd かどうかを指定します。有効な値:
true
false (デフォルト)
重要コンテナーランタイムが containerd である自己管理型 Kubernetes クラスターのパラメーター設定を有効にしないと、Logtail がログを収集できない場合があります。
Logtail と必要なコンポーネントをインストールします。
説明コマンド
echo "$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m)"を実行して、ホストの OS アーキテクチャを確認します。k8s-custom-install.shは、linux-386、linux-amd64、linux-arm、linux-arm64、linux-ppc64le、linux-s390x、および darwin-amd64 の OS アーキテクチャをサポートしています。その他の要件がある場合は、チケットを送信してください。bash k8s-custom-install.sh; kubectl apply -R -f result
次の表は、Logtail と必要なコンポーネントをインストールした後に自動的に作成される Simple Log Service リソースについて説明しています。
自己管理型 Kubernetes クラスターに Logtail と必要な依存コンポーネントをインストールすると、Logtail に
privileged権限が自動的に付与されます。これにより、他のポッドが削除されたときに発生する可能性のあるcontainer text file busyエラーを防ぎます。詳細については、Bug 1468249、Bug 1441737、および Issue 34538 を参照してください。
リソースタイプ | リソース名 | 説明 | 例 |
マシングループ | k8s-group- | ログ収集シナリオで使用される logtail-daemonset のマシングループ。 | k8s-group-my-cluster-123 |
k8s-group- | メトリック収集シナリオで使用される logtail-statefulset のマシングループ。 | k8s-group-my-cluster-123-statefulset | |
k8s-group- | 単一インスタンスのマシングループ。単一インスタンスの Logtail 構成を作成するために使用されます。 | k8s-group-my-cluster-123-singleton | |
Logstore | config-operation-log | Logstore は、alibaba-log-controller コンポーネントのログを格納するために使用されます。Logstore の Logtail 構成を作成しないことをお勧めします。Logstore を削除できます。Logstore が削除されると、システムは alibaba-log-controller コンポーネントの操作ログを収集しなくなります。Logstore には、通常の Logstore と同じ方法で課金されます。詳細については、「従量課金制の課金対象項目」をご参照ください。 | なし |
ステップ 2: Logtail 構成を作成する
次の表は、Logtail 構成を作成するために使用できる方法について説明しています。1 つの方法のみを使用して Logtail 構成を管理することをお勧めします。
構成方法 | 構成の説明 | シナリオ |
CRD - AliyunPipelineConfig (推奨) | Kubernetes CRD である AliyunPipelineConfig CRD を使用して、Logtail 構成を管理できます。 | この方法は、複雑な収集と処理、および自己管理型 Kubernetes クラスターの Logtail 構成と Logtail コンテナー間のバージョンの整合性が必要なシナリオに適しています。 説明 Logtail コンポーネントのバージョンは 0.5.1 以降である必要があります。Logtail のアップデートの詳細については、「Logtail をアップデートする」をご参照ください。 |
Simple Log Service コンソール | 迅速なデプロイと構成に基づいて、GUI で Logtail 構成を管理できます。 | この方法は、Logtail 構成を管理するために簡単な設定が必要なシナリオに適しています。この方法を使用して Logtail 構成を管理する場合、特定の高度な機能とカスタム設定は使用できません。 |
CRD - AliyunLogConfig | 古いバージョンの CRD である AliyunLogConfig CRD を使用して、Logtail 構成を管理できます。 | この方法は、古いバージョンの CRD を使用して Logtail 構成を管理できる既知のシナリオに適しています。 より優れた拡張性と安定性を得るために、AliyunLogConfig CRD を AliyunPipelineConfig CRD に徐々に置き換える必要があります。CRD - AliyunPipelineConfig メソッドと CRD - AliyunLogConfig メソッドの違いの詳細については、「CRD」をご参照ください。 |
CRD - AliyunPipelineConfig (推奨)
Logtail 構成を作成するには、AliyunPipelineConfig CRD からカスタムリソース (CR) を作成するだけです。CR が作成されると、Logtail 構成が有効になります。
CR を作成して Logtail 構成を作成し、Logtail 構成を変更する場合、CR のみ変更できます。Simple Log Service コンソールで Logtail 構成を変更しても、新しい設定は CR に同期されません。
Kubernetes クラスターにログインします。
example-k8s-file.yaml という名前のファイルを作成します。
Logtail 構成ジェネレーターを使用して、シナリオの Logtail 構成を作成するために使用される YAML スクリプトを生成できます。詳細については、「Logtail 構成ジェネレーター」をご参照ください。または、次の例に基づいて YAML スクリプトを手動で記述することもできます。
次のコードは、
k8s-log-testプロジェクトで自動的に作成されたk8s-fileLogstore に、複数行モードでデフォルトの名前空間のapp: ^(.*test.*)$でラベル付けされたポッドの/data/logs/app_1ディレクトリにあるtest.LOGファイルからテキストログを収集するために使用される YAML ファイルの例を示しています。ビジネス要件に基づいて、YAML ファイルの次のパラメーターを変更できます。project: 例:k8s-log-test。Simple Log Service コンソール にログインします。Logtail がインストールされた後に生成されたプロジェクトの名前を確認します。ほとんどの場合、プロジェクト名は
k8s-log-<YOUR_CLUSTER_ID>形式です。IncludeK8sLabel: ポッドをフィルタリングするために使用されるラベル。例:app: ^(.*test.*)$。この例では、ラベルキーが app でラベル値に test が含まれるポッドのログが収集されます。説明クラスター内で名前が test を含むポッドのログを収集する場合は、IncludeK8sLabel パラメーターを K8sContainerRegex パラメーターに置き換え、ワイルドカードを使用して K8sContainerRegex パラメーターの値を指定できます。例:
K8sContainerRegex: ^(.test.)$。FilePaths: 例:/data/logs/app_1/**/test.LOG。詳細については、「コンテナーのファイルパス マッピング」をご参照ください。EndpointとRegion: Endpoint パラメーターの例:cn-hangzhou.log.aliyuncs.com。Region パラメーターの例:cn-hangzhou。
configパラメータの値には、入力、出力、および処理プラグインの種類とコンテナフィルタリング方法が含まれます。詳細については、「PipelineConfig」を参照してください。YAML ファイル内の完全なパラメータの詳細についは、「CRパラメーター」を参照してください。apiVersion: telemetry.alibabacloud.com/v1alpha1 kind: ClusterAliyunPipelineConfig metadata: # リソースの名前を指定します。名前は、現在の Kubernetes クラスター内で一意である必要があります。名前は、作成された Logtail 構成の名前と同じです。リソース名が既に存在する場合、名前は有効になりません。 name: example-k8s-file spec: # プロジェクトの名前を指定します。 project: name: k8s-log-test logstores: # k8s-file という名前のログストアを作成します。 - name: k8s-file # Logtail 構成を作成します。 config: # サンプルログを入力します。このパラメーターは空のままにすることができます。 sample: | 2024-06-19 16:35:00 INFO test log line-1 line-2 end # 入力プラグインを指定します。 inputs: # input_file プラグインを使用して、コンテナーから複数行のテキストログを収集します。 - Type: input_file # コンテナー内のファイルパスを指定します。 FilePaths: - /data/logs/app_1/**/test.LOG # コンテナー検出機能を有効にします。 EnableContainerDiscovery: true # 条件を追加してコンテナーをフィルタリングします。複数の条件は論理 AND を使用して評価されます。 CollectingContainersMeta: true ContainerFilters: # 必要なコンテナーが属するポッドの名前空間を指定します。正規表現マッチングがサポートされています。 K8sNamespaceRegex: default # 必要なコンテナーの名前を指定します。正規表現マッチングがサポートされています。 IncludeK8sLabel: app: ^(.*app.*)$ # 複数行ログ収集を有効にします。単一行ログを収集する場合は、このパラメーターを削除します。 Multiline: # カスタムモードを指定して、正規表現に基づいてログの最初の行の先頭を照合します。 Mode: custom # ログの最初の行の先頭を照合するために使用される正規表現を指定します。 StartPattern: '\d+-\d+-\d+\s\d+:\d+:\d+' # 処理プラグインを指定します。 processors: # processor_parse_regex_native プラグインを使用して、指定された正規表現に基づいてログを解析します。 - Type: processor_parse_regex_native # 元のフィールドの名前を指定します。 SourceKey: content # 解析に使用する正規表現を指定します。キャプチャグループを使用してフィールドを抽出します。 Regex: (\d+-\d+-\d+\s\S+)(.*) # 抽出するフィールドを指定します。 Keys: ["time", "detail"] # 出力プラグインを指定します。 flushers: # flusher_sls プラグインを使用して、ログを特定のログストアに配信します。 - Type: flusher_sls # ログストアが存在することを確認します。 Logstore: k8s-file # エンドポイントが有効であることを確認します。 Endpoint: cn-beijing.log.aliyuncs.com Region: cn-beijing TelemetryType: logskubectl apply -f example.yamlコマンドを実行します。example.yamlは、作成した YAML ファイルの名前に置き換えます。その後、Logtail によってコンテナーのテキストログが Simple Log Service に収集されます。
CRD - AliyunLogConfig
AliyunLogConfig CRD から CR を作成して、Logtail 構成を作成できます。CR が作成されると、Logtail 構成が有効になります。
CR を作成して Logtail 構成を作成し、Logtail 構成を変更する場合、CR のみ変更できます。Simple Log Service コンソールで Logtail 構成を変更しても、新しい設定は CR に同期されません。
Kubernetes クラスターにログインします。
example-k8s-file.yaml という名前のファイルを作成します。
次のコードは、
example-k8s-fileという名前の Logtail 構成を作成するために使用される YAML ファイルの例を示しています。この Logtail 構成を使用すると、シンプルモードでクラスター内のappで始まる名前のコンテナーの/data/logs/app_1ディレクトリにあるtest.LOGファイルからテキストログを収集し、k8s-log-<YOUR_CLUSTER_ID>プロジェクト内の自動的に作成されたk8s-fileLogstore に送信できます。ビジネス要件に基づいて、サンプルのログファイル パスを変更できます。詳細については、「コンテナーのファイルパス マッピング」をご参照ください。
logPath: ログファイルパス。例:/data/logs/app_1。filePattern: ログを収集するファイルの名前。例:test.LOG。
logtailConfig パラメーターは、入力、出力、処理プラグインの種類、およびコンテナーのフィルタリング方法を含む、Logtail の詳細を指定します。詳細については、「AliyunLogConfigDetail」をご参照ください。 YAML ファイルの完全なパラメーターの詳細については、「CR パラメーター」をご参照ください。
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # リソースの名前を指定します。名前は、現在の Kubernetes クラスター内で一意である必要があります。 name: example-k8s-file # リソースが属する名前空間を指定します。 namespace: kube-system spec: # プロジェクトの名前を指定します。このパラメーターを空のままにすると、k8s-log-<your_cluster_id> という名前のプロジェクトが使用されます。 # project: k8s-log-test # Logstore の名前を指定します。指定された Logstore が存在しない場合、Simple Log Service は自動的に Logstore を作成します。 logstore: k8s-file # Logtail 構成を作成します。 logtailConfig: # データソースのタイプを指定します。テキストログを収集する場合は、値を file に設定します。 inputType: file # LoongCollector 構成の名前を指定します。名前は、metadata.name で指定されたリソース名と同じである必要があります。 configName: example-k8s-file inputDetail: # LoongCollector がシンプルモードでテキストログを収集できるようにする設定を指定します。 logType: common_reg_log # ログファイルのパスを指定します。 logPath: /data/logs/app_1 # ログファイル名を指定します。ログファイル名を指定するときに、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。例: log_*.log。 filePattern: test.LOG # コンテナーからテキストログを収集する場合は、値を true に設定します。 dockerFile: true # 複数行のログ収集を有効にします。単一行のログを収集する場合は、このパラメーターを削除します。 # ログの最初の行の先頭と一致する正規表現を指定します。 logBeginRegex: \d+-\d+-\d+.* # コンテナーをフィルタリングする条件を指定します。 advanced: k8s: K8sPodRegex: '^(app.*)$'kubectl apply -f example.yamlコマンドを実行します。example.yamlは、作成した YAML ファイルの名前に置き換えます。その後、Logtail によってコンテナーのテキストログが Simple Log Service に収集されます。
シンプルな Log Service コンソール
この方法は、Kubernetes クラスターにログインせずに Logtail 構成を管理するためにシンプルな設定が必要なシナリオに適しています。この方法では、Logtail 構成を一括作成することはできません。
シンプルな Log Service コンソール にログインします。
[プロジェクト] セクションで、Logtail コンポーネントのインストールに使用するプロジェクトをクリックします。例:
k8s-log-<your_cluster_id>。表示されたページで、管理するログストアをクリックし、[Logtail 構成] をクリックします。[Logtail 構成] ページで、[Logtail 構成の追加] をクリックします。[クイックデータインポート] ダイアログボックスで、[Kubernetes - ファイル] カードを見つけて [今すぐ統合] をクリックします。
データインポートウィザードの [マシングループ構成] ステップで、[シナリオ] パラメーターを [Kubernetes クラスター] に設定し、[デプロイ方法] パラメーターを [ACK Daemonset] に設定し、k8s-group-${your_k8s_cluster_id} マシングループを選択し、> アイコンをクリックして、マシングループを [ソースマシングループ] セクションから [適用済みサーバーグループ] セクションに移動し、[次へ] をクリックします。

Logtail 構成を作成します。データインポートウィザードの [Logtail 構成] ステップで、必要なパラメーターを構成し、[次へ] をクリックします。Logtail 構成の作成には約 1 分かかります。
次のリストは、主要なパラメーター設定について説明しています。詳細については、「Logtail 構成を作成する」をご参照ください。
グローバル構成
[グローバル構成] セクションで、[構成名] パラメーターを構成します。

入力構成
Logtail デプロイモード:Logtail デプロイモード。 [DaemonSet] を選択します。
ファイルパスの種類:ログの収集に使用するファイルパスの種類。有効な値:コンテナー内のパスとホストパス。 hostPath ボリュームがコンテナーにマウントされていて、コンテナーホスト上のマップされたファイルパスに基づいてファイルからログを収集する場合、このパラメーターを [ホストパス] に設定します。その他のシナリオでは、このパラメーターを [コンテナー内のパス] に設定します。
ファイルパス:収集するログを格納するために使用されるディレクトリ。ファイルパスはスラッシュ (/) で始まる必要があります。この例では、[ファイルパス] パラメーターを
/data/wwwlogs/main/**/*.Logに設定します。これは、/data/wwwlogs/mainディレクトリにある .Log で終わるファイルからログが収集されることを示します。[最大ディレクトリ監視深度] パラメーターを構成して、監視するサブディレクトリの最大レベル数を指定できます。サブディレクトリは、指定したログファイルディレクトリにあります。このパラメーターは、[ファイルパス] パラメーターの値で**ワイルドカード文字が一致できるサブディレクトリのレベルを指定します。値 0 は、指定されたログファイルディレクトリのみが監視されることを指定します。
インデックスの作成 と データのプレビュー。デフォルトでは、Log Service ではフルテキストインデックスが有効になっています。この場合、フルテキストインデックスが作成されます。インデックスに基づいてログ内のすべてのフィールドをクエリできます。収集されたログに基づいて、フィールドのインデックスを手動で作成することもできます。または、[自動インデックス生成] をクリックすることもできます。その後、Log Service はフィールドのインデックスを生成します。フィールドインデックスに基づいて、正確な方法でデータをクエリできます。これにより、インデックス作成コストが削減され、クエリの効率が向上します。詳細については、「インデックスを作成する」をご参照ください。

ステップ 3: ログのクエリと分析
Simple Log Service コンソール にログオンします。
[プロジェクト] セクションで、管理するプロジェクトをクリックして、プロジェクトの詳細ページに移動します。

左側のナビゲーションウィンドウで、管理するログストアの
アイコンをクリックします。 ドロップダウンリストで、[検索と分析] を選択して、Kubernetes クラスターから収集されたログを表示します。
コンテナテキストログのデフォルトフィールド
次の表は、各コンテナテキストログにデフォルトで含まれるフィールドについて説明しています。
フィールド名 | 説明 |
__tag__:__hostname__ | コンテナホストの名前。 |
__tag__:__path__ | コンテナ内のログファイルパス。 |
__tag__:_container_ip_ | コンテナの IP アドレス。 |
__tag__:_image_name_ | コンテナで使用されるイメージの名前。 |
__tag__:_pod_name_ | ポッドの名前。 |
__tag__:_namespace_ | ポッドが属する名前空間。 |
__tag__:_pod_uid_ | ポッドの一意の識別子 (UID)。 |
参照資料
ログを収集した後、Simple Log Service のクエリおよび分析機能を使用して、収集されたログに関する情報を取得できます。詳細については、「ログクエリと分析のガイド」をご参照ください。
ログを収集した後、Simple Log Service の可視化機能を使用して、統計を収集し、ログを表示できます。詳細については、「ダッシュボードの作成」をご参照ください。
ログを収集した後、Simple Log Service のアラート機能を使用して、ログの例外に対してアラートを自動的に生成できます。詳細については、「Simple Log Service でのアラート ルールの構成」をご参照ください。
Simple Log Service は増分ログのみを収集します。履歴ログも収集できます。詳細については、「ログファイルからの履歴ログのインポート」をご参照ください。
Simple Log Service がログを収集するときに発生するエラーのトラブルシューティングを行うことができます。詳細については、以下のトピックをご参照ください。
Simple Log Service がログを収集するときに発生する可能性のある一般的なエラーのトラブルシューティング方法
Simple Log Service コンソールにエラー メッセージが表示されるかどうかを確認できます。詳細については、「Logtail 収集エラーの表示方法」をご参照ください。
Logtail を使用してログを収集するときにエラーが発生したが、Simple Log Service コンソールにエラー メッセージが表示されない場合は、マシン グループと Logtail 構成のハートビート ステータスを確認できます。詳細については、「コンテナーからログを収集するときにエラーが発生した場合の対処方法」をご参照ください。