ログ収集設定を Kubernetes カスタムリソース定義 (CRD) として定義することで、Container Service for Kubernetes (ACK) や自己管理型クラスターを含むすべてのクラスターで管理を統一できます。このアプローチは、一貫性がなくエラーが発生しやすい手動プロセスを、kubectl と CI/CD パイプラインによるバージョン管理された自動化に置き換えます。LoongCollector に組み込まれたホットリロード機能により、再起動なしで変更が即座に適用され、運用効率とシステムの保守性が直接的に向上します。
レガシーの AliyunLogConfig CRD はメンテナンスされなくなりました。代わりに新しい AliyunPipelineConfig CRD を使用してください。新旧バージョンの比較については、CRD タイプをご参照ください。CRD を使用して作成された収集設定は、対応する CRD を更新することによってのみ変更できます。Simple Log Service (SLS) コンソールで行われた変更は CRD に同期されず、有効になりません。
注意事項
動作環境:
ACK (マネージド版および専用版) および自己管理型 Kubernetes クラスターをサポートします。
Mount propagation: HostToContainerをサポートする Kubernetes バージョン 1.16.0 以降。コンテナーランタイム (Docker および Containerd のみ)
Docker:
docker.sock へのアクセス権限が必要です。
標準出力の収集は、JSON ログドライバーのみをサポートします。
overlay および overlay2 ストレージドライバーのみをサポートします。他のタイプの場合は、ログディレクトリを手動でマウントする必要があります。
Containerd:containerd.sock へのアクセス権限が必要です。
リソース要件:LoongCollector (Logtail) は `system-cluster-critical` の高い優先度で実行されます。クラスターリソースが不十分な場合はデプロイしないでください。ノード上の既存の Pod を退去させる可能性があります。
CPU:少なくとも 0.1 コアを予約してください。
メモリ:収集コンポーネントには少なくとも 150 MB、コントローラーコンポーネントには少なくとも 100 MB が必要です。
実際の使用量は、収集レート、監視対象のディレクトリとファイルの数、および送信ブロックの程度によって異なります。実際の使用量が設定された制限の 80% 未満であることを確認してください。
権限:デプロイに使用する Alibaba Cloud アカウントまたは RAM ユーザーには、
AliyunLogFullAccess権限が必要です。カスタムポリシーを作成するには、AliyunCSManagedLogRolePolicy システムポリシーをご参照ください。このポリシーから権限をコピーし、ターゲットの RAM ユーザーまたはロールに付与して、詳細な権限を設定します。
収集設定のワークフロー
LoongCollector のインストール:LoongCollector を DaemonSet としてデプロイし、クラスター内の各ノードで収集コンテナーが実行されるようにします。これにより、そのノード上のすべてのコンテナーからログを統一的に収集できます。
Logstore の作成:Logstore はログデータのストレージユニットです。1 つのプロジェクトに複数の Logstore を作成できます。
収集設定 YAML ファイルの作成:kubectl を使用してクラスターに接続します。次の 2 つの方法のいずれかで収集設定ファイルを作成します。
方法 1:収集設定ジェネレーターの使用
SLS コンソールの収集設定ジェネレーターを使用して、視覚的にパラメーターを入力し、標準の YAML ファイルを自動的に生成します。
方法 2:YAML ファイルの手動作成
このトピックの例とワークフローに基づいて YAML ファイルを作成します。最小構成から始め、徐々に処理ロジックと詳細設定を追加していきます。
このトピックでカバーされていない複雑なユースケースや、詳細なカスタマイズが必要なフィールドについては、フィールド、値のルール、プラグイン機能の完全なリストについてAliyunPipelineConfig パラメーターをご参照ください。
完全な収集設定は通常、次の部分で構成されます。
最小構成 (必須):クラスターから SLS へのデータトンネルを構築します。これには 2 つの部分が含まれます。
入力
(inputs):ログのソースを定義します。コンテナーログには次の 2 つのログソースが含まれます。MySQL クエリ結果など、他の種類のログを収集するには、入力プラグインをご参照ください。コンテナーの標準出力 (stdout および stderr):コンテナープログラムがコンソールに出力するログコンテンツ。
テキストログファイル:コンテナー内の指定されたパスに書き込まれるログファイル。
出力
(flushers):ログのターゲットを定義します。収集されたログを指定された Logstore に送信します。ターゲットのプロジェクトまたは Logstore が存在しない場合、システムは自動的に作成します。事前にプロジェクトとLogstore を手動で作成することもできます。
一般的な処理設定 (任意):
processorsフィールドを定義して、生ログに対して構造化解析 (正規表現やデリミタ解析など)、マスキング、またはフィルタリングを実行します。このトピックでは、一般的なログ処理のユースケースをカバーするネイティブ処理プラグインのみを説明します。その他の機能については、拡張処理プラグインをご参照ください。
その他の詳細設定 (任意):複数行ログの収集やログタグのエンリッチメントなどの機能を実装して、より詳細な収集要件を満たします。
構造例:
apiVersion: telemetry.alibabacloud.com/v1alpha1 # デフォルト値を使用します。変更しないでください。 kind: ClusterAliyunPipelineConfig # デフォルト値を使用します。変更しないでください。 metadata: name: test-config # リソース名を設定します。Kubernetes クラスター内で一意である必要があります。 spec: project: # ターゲットプロジェクトの名前を設定します。 name: k8s-your-project config: # Logtail 収集設定を設定します。 inputs: # Logtail 収集設定の入力プラグインを設定します。 ... processors: # Logtail 収集設定の処理プラグインを設定します。 ... flushers: # Logtail 収集設定の出力プラグインを設定します。 ...設定の適用
kubectl apply -f <your_yaml>
LoongCollector (Logtail) のインストール
LoongCollector は、SLS が提供する新世代のログ収集エージェントです。これは Logtail のアップグレード版であり、両者は共存できません。Logtail をインストールするには、Logtail のインストールと設定をご参照ください。
このトピックでは、LoongCollector の基本的なインストール手順のみを説明します。詳細なパラメーターについては、インストールと設定をご参照ください。すでに LoongCollector または Logtail をインストールしている場合は、このステップをスキップして、収集したログを保存するためのLogstore の作成に進んでください。
ACK クラスター
Container Service for Kubernetes (ACK) コンソールから LoongCollector をインストールします。デフォルトでは、ログは現在の Alibaba Cloud アカウント下の SLS プロジェクトに送信されます。
Container Service for Kubernetes (ACK) コンソール にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
[クラスター] ページで、ターゲットクラスターの名前をクリックして詳細ページを開きます。
左側のナビゲーションウィンドウで、[アドオン] をクリックします。
[ログとモニタリング] タブで、loongcollector を見つけて [インストール] をクリックします。
説明新しいクラスターの場合、[詳細オプション] セクションで [Log Service を有効にする] を選択します。次に、[プロジェクトの作成] または [プロジェクトの選択] を行います。
インストールが完了すると、SLS は ACK クラスターが存在するリージョンに関連リソースを自動的に作成します。Simple Log Service コンソールにログインして表示します。
リソースタイプ
リソース名
機能
プロジェクト
k8s-log-${cluster_id}異なるサービスのログを分離するためのリソース管理ユニット。
より柔軟なログリソース管理のためにプロジェクトを作成するには、プロジェクトの作成をご参照ください。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクション。
重要LoongCollector は config-operation-log という名前の Logstore を作成しません。この名前の Logstore が既に存在する場合、LoongCollector はその Logstore へのログ書き込みを停止します。
自己管理型クラスター
Kubernetes クラスターに接続し、ご利用のリージョンに対応するコマンドを実行して、LoongCollector とその依存コンポーネントをダウンロードします。
中国のリージョン:
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh中国以外のリージョン:
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shloongcollector-custom-k8s-packageディレクトリに移動し、./loongcollector/values.yaml設定ファイルを変更します。# ===================== 必須パラメーター ===================== # 収集されたログを管理するプロジェクトの名前。例:k8s-log-custom-sd89ehdq。 projectName: "" # プロジェクトのリージョン。例 (上海):cn-shanghai region: "" # プロジェクトを所有する Alibaba Cloud アカウントの UID。UID を引用符で囲みます。例:"123456789" aliUid: "" # ネットワークタイプ。オプションのパラメーター:Internet (パブリックネットワーク) および Intranet (内部ネットワーク)。デフォルト値:Internet。 net: Internet # Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。アカウントまたはユーザーには AliyunLogFullAccess システムポリシーが必要です。 accessKeyID: "" accessKeySecret: "" # カスタムクラスター ID。ID には、大文字、小文字、数字、ハイフン (-) のみを含めることができます。 clusterID: ""loongcollector-custom-k8s-packageディレクトリで、次のコマンドを実行して LoongCollector とその他の依存コンポーネントをインストールします。bash k8s-custom-install.sh installインストールが完了したら、コンポーネントの実行状態を確認します。
Pod の起動に失敗した場合は、values.yaml の設定が正しいか、関連するイメージが正常にプルされたかを確認してください。
# Pod の状態を確認します。 kubectl get po -n kube-system | grep loongcollector-dsSLS はまた、以下のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示します。
リソースタイプ
リソース名
機能
プロジェクト
values.yaml ファイルで定義された
projectNameの値異なるサービスのログを分離するためのリソース管理ユニット。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクション。
重要LoongCollector は config-operation-log という名前の Logstore を作成しません。この名前の Logstore が既に存在する場合、LoongCollector はその Logstore へのログ書き込みを停止します。
Logstore の作成
すでに Logstore を作成している場合は、このステップをスキップして収集の設定に進んでください。
Simple Log Service コンソールにログインし、ターゲットプロジェクトの名前をクリックします。
左側のナビゲーションウィンドウで、
を選択し、[+] をクリックします。[Logstore の作成] ページで、次のコアパラメーターを設定します。
[Logstore 名]:プロジェクト内で一意の名前を設定します。この名前は作成後に変更できません。
[Logstore タイプ]:仕様を比較して、標準またはクエリを選択します。
課金モード:
[機能課金]:ストレージ、インデックス、読み書き操作など、各リソースに対して個別に課金されます。小規模なユースケースや、機能の使用量が不確かな場合に適しています。
[従量課金 (データ量)]:取り込まれた生データの量によってのみ課金されます。30 日間の無料ストレージ期間と、データ変換や配信などの無料機能を提供します。コストモデルはシンプルで、ストレージ期間が 30 日に近い場合や、データ処理パイプラインが複雑な場合に適しています。
[データ保持期間]:ログを保持する日数を設定します。値の範囲は 1〜3650 日です。値 3650 は永続的なストレージを示します。デフォルトは 30 日です。
他の設定はデフォルトのままにして、[OK] をクリックします。他の設定の詳細については、Logstore の管理をご参照ください。
最小構成
spec.config で、入力 (inputs) および出力 (flushers) プラグインを設定して、コアログ収集パス (ログのソースとそのターゲット) を定義します。
コンテナーの標準出力 - 新バージョン
目的:コンソールに直接出力されるコンテナーの標準出力ログ (stdout/stderr) を収集します。
収集設定の開始点。ログソースを定義します。現在、1 つの入力プラグインのみ設定できます。
| 例 |
|
コンテナーのテキストファイルの収集
目的:コンテナー内の特定のファイルパスに書き込まれたログ (従来の access.log や app.log ファイルなど) を収集します。
収集設定の開始点。ログソースを定義します。現在、1 つの入力プラグインのみ設定できます。
| 例 |
|
一般的な処理設定
最小構成を完了した後、処理プラグインを追加して、生ログに対して構造化解析、マスキング、またはフィルタリングを実行します。
コア構成:spec.config に processors を追加して、処理プラグインを設定します。複数のプラグインを同時に追加できます。
このトピックでは、一般的なログ処理のユースケースをカバーするネイティブ処理プラグインのみを説明します。その他の機能については、拡張処理プラグインをご参照ください。
Logtail 2.0 以降のバージョンおよび LoongCollector コンポーネントでは、次のプラグインの組み合わせルールに従うことを推奨します。
まずネイティブプラグインを使用します。
ネイティブプラグインで要件を満たせない場合は、ネイティブプラグインの後に拡張プラグインを設定します。
ネイティブプラグインは拡張プラグインの前にのみ使用できます。
構造化設定
正規表現解析
正規表現を使用してログフィールドを抽出し、ログをキーと値のペアに解析します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
Regex ログに一致する正規表現。 | |
Keys 抽出されたフィールドのリスト。 | |
KeepingSourceWhenParseFail 解析に失敗した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
KeepingSourceWhenParseSucceed 解析に成功した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
RenamedSourceKey ソースフィールドを保持する場合、これはソースフィールドを格納するために使用されるフィールド名です。デフォルトでは、名前は変更されません。 |
デリミタ解析
デリミタを使用してログコンテンツを構造化し、複数のキーと値のペアに解析します。単一文字および複数文字のデリミタをサポートします。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
Separator フィールドセパレーター。たとえば、CSV はカンマ (,) を使用します。 | |
Keys 抽出されたフィールドのリスト。 | |
Quote カンマなどの特殊文字を含むフィールドコンテンツを囲むために使用される引用符。 | |
AllowingShortenedFields 抽出されたフィールドの数がキーの数より少なくなることを許可するかどうかを指定します。デフォルト値: | |
OverflowedFieldsTreatment 抽出されたフィールドの数がキーの数より多い場合の動作を指定します。デフォルト値:
| |
KeepingSourceWhenParseFail 解析に失敗した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
KeepingSourceWhenParseSucceed 解析に成功した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
RenamedSourceKey ソースフィールドを保持する場合、これはソースフィールドを格納するために使用されるフィールド名です。デフォルトでは、名前は変更されません。 |
標準 JSON 解析
オブジェクトタイプの JSON ログを構造化し、キーと値のペアに解析します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
KeepingSourceWhenParseFail 解析に失敗した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
KeepingSourceWhenParseSucceed 解析に成功した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
RenamedSourceKey ソースフィールドを保持する場合、これはソースフィールドを格納するために使用されるフィールド名です。デフォルトでは、名前は変更されません。 |
ネストされた JSON 解析
展開深度を指定して、ネストされた JSON ログをキーと値のペアに解析します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
ExpandDepth JSON の展開深度。デフォルト値:0。
| |
ExpandConnector JSON 展開時のフィールド名のコネクタ。デフォルト値:アンダースコア (_)。 | |
Prefix 展開された JSON フィールド名にプレフィックスを指定します。 | |
IgnoreFirstConnector 最初のコネクタを無視するかどうか、つまりトップレベルフィールドの前にコネクタを追加するかどうかを指定します。デフォルト値: | |
ExpandArray 配列タイプを展開するかどうかを指定します。デフォルト値:
説明 このパラメーターは Logtail 1.8.0 以降のバージョンでサポートされています。 | |
KeepSource 解析されたログに生フィールドを保持するかどうかを指定します。デフォルト値:
| |
NoKeyError 指定された生フィールドが生ログに見つからない場合にシステムがエラーを報告するかどうかを指定します。デフォルト値:
| |
UseSourceKeyAsPrefix すべての展開された JSON フィールド名のプレフィックスとして生フィールド名を使用するかどうかを指定します。 | |
KeepSourceIfParseError 解析に失敗した場合に生ログを保持するかどうかを指定します。デフォルト値:
|
JSON 配列解析
json_extract 関数を使用して JSON 配列から JSON オブジェクトを抽出します。JSON 関数の詳細については、JSON 関数をご参照ください。
キーフィールド | 例 |
Type プラグインのタイプ。SPL プラグインのタイプは | |
Script SPL スクリプトのコンテンツ。content フィールドの JSON 配列から要素を抽出するために使用されます。 | |
TimeoutMilliSeconds スクリプトのタイムアウト期間。値の範囲:0〜10000。単位:ミリ秒。デフォルト値:1000。 |
NGINX ログ解析
log_format の定義に基づいてログコンテンツを構造化し、複数のキーと値のペアに解析します。デフォルトのコンテンツが要件を満たさない場合は、カスタムフォーマットを使用します。
キーフィールド | 例 |
Type プラグインのタイプ。Nginx ログ解析のプラグインタイプは | |
SourceKey ソースフィールド名。 | |
Regex 正規表現。 | |
Keys 抽出されたフィールドのリスト。 | |
Extra
| |
KeepingSourceWhenParseFail 解析に失敗した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
KeepingSourceWhenParseSucceed 解析に成功した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
RenamedSourceKey ソースフィールドを保持する場合、これはソースフィールドを格納するために使用されるフィールド名です。デフォルトでは、名前は変更されません。 |
Apache ログ解析
Apache ログ設定ファイルの定義に基づいてログコンテンツを構造化し、複数のキーと値のペアに解析します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
Regex 正規表現。 | |
Keys 抽出されたフィールドのリスト。 | |
Extra
| |
KeepingSourceWhenParseFail 解析に失敗した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
KeepingSourceWhenParseSucceed 解析に成功した場合にソースフィールドを保持するかどうかを指定します。デフォルト値: | |
RenamedSourceKey ソースフィールドを保持する場合、これはソースフィールドを格納するために使用されるフィールド名です。デフォルトでは、名前は変更されません。 |
データマスキング
processor_desensitize_native プラグインを使用して、ログ内の機密データをマスキングします。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
Method マスキング方法。サポートされている値は次のとおりです。
| |
ReplacingString 機密コンテンツを置き換えるために使用される定数文字列。これは | |
ContentPatternBeforeReplacedString 機密コンテンツのプレフィックスの正規表現。 | |
ReplacedContentPattern 機密コンテンツの正規表現。 | |
ReplacingAll 解析が成功した後に元のフィールドを保持するかどうかを指定します。デフォルト値は |
コンテンツフィルタリング
processor_filter_regex_native プラグインを設定して、正規表現に基づいてログフィールドの値を照合し、条件を満たすログのみを保持します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
FilterRegex ログフィールドに一致する正規表現。 | |
FilterKey 一致させるログフィールドの名前。 |
時刻解析
processor_parse_timestamp_native プラグインを設定して、ログ内の時刻フィールドを解析し、解析結果をログの __time__ フィールドとして設定します。
キーフィールド | 例 |
Type プラグインのタイプ。 | |
SourceKey ソースフィールド名。 | |
SourceFormat 時刻フォーマット。ログ内の時刻フィールドのフォーマットと完全に一致する必要があります。 | |
SourceTimezone ログ時刻のタイムゾーン。デフォルトでは、マシンのタイムゾーンが使用されます。これは、LoongCollector プロセスが配置されている環境のタイムゾーンです。 フォーマット:
|
その他の詳細設定
より高度なユースケースについては、次の設定を検討してください。
複数行ログ収集の設定:例外スタックトレースなど、単一のログエントリが複数行にまたがる場合、複数行モードを有効にし、行の開始を示す正規表現を設定してログの開始を照合する必要があります。これにより、複数行のエントリが収集され、SLS Logstore に単一のログとして保存されます。
ログトピックタイプの設定:異なるログストリームに異なるトピックを設定して、ログデータを整理および分類します。これにより、関連するログをより適切に管理および取得できます。
収集対象コンテナーの指定 (フィルタリングとブラックリスト):ホワイトリストとブラックリストの設定を含め、収集対象の特定のコンテナーとパスを指定します。
ログタグのエンリッチメント:環境変数と Pod ラベルに関連するメタデータを拡張フィールドとしてログに追加します。
複数行ログ収集の設定
複数行にまたがるログエントリ (Java スタックトレースなど) を正しく解析するには、複数行モードを有効にします。これにより、定義された開始パターンに基づいて関連する行が単一のログエントリにグループ化されます。
コア構成:spec.config.inputs 設定で、Multiline パラメーターを追加します。
キーフィールド | 例 |
Multiline 複数行ログ収集を有効にします。
| |
ログトピックタイプの設定
コア構成:spec.config で、global パラメーターを追加してトピックを設定します。
キーフィールド | 例 |
TopicType トピックタイプ。オプションの値:
| マシングループトピックファイルパス抽出カスタム |
TopicFormat トピックフォーマット。これは TopicType が filepath または custom に設定されている場合に必須です。 |
収集対象コンテナーの指定 (フィルタリングとブラックリスト)
フィルタリング
指定された条件を満たすコンテナーからのみログを収集します。複数の条件は論理 AND で結合されます。空の条件は無視されます。条件は正規表現をサポートします。
コア構成:spec.config.inputs で、コンテナーフィルタリングのために ContainerFilters パラメーターを設定します。
キーフィールド | 例 |
ContainerFilters コンテナーフィルタリング
すべての正規表現は Go の RE2 正規表現エンジンに基づいています。これには PCRE などのエンジンと比較していくつかの制限があります。正規表現を記述する際は、付録:コンテナーフィルタリングにおける正規表現の制限をご参照ください。 | |
ブラックリスト
指定された条件を満たすファイルを除外するには、必要に応じて YAML ファイルの config.inputs の下にある次のパラメーターを使用します。
キーフィールドの詳細 | 例 |
ExcludeFilePaths ファイルパスのブラックリスト。指定された条件を満たすファイルを除外します。パスは絶対パスである必要があり、* ワイルドカードをサポートします。 | |
ExcludeFiles ファイル名のブラックリスト。指定された条件を満たすファイルを除外します。* ワイルドカードをサポートします。 | |
ExcludeDirs ディレクトリのブラックリスト。指定された条件を満たすファイルを除外します。パスは絶対パスである必要があり、* ワイルドカードをサポートします。 |
ログタグのエンリッチメント
コア構成:spec.config.inputs で ExternalEnvTag と ExternalK8sLabelTag を設定することにより、コンテナーの環境変数と Pod ラベルに関連するタグをログに追加します。
キーフィールド | 例 |
ExternalEnvTag 指定された環境変数の値をタグフィールドにマッピングします。フォーマット: | |
ExternalK8sLabelTag Kubernetes Pod ラベルの値をタグフィールドにマッピングします。フォーマット: |
設定例
NGINX アクセスログを収集し、構造化フィールドに解析する
NGINX ログを解析し、log_format の定義に基づいてログコンテンツを複数のキーと値のペアに構造化します。
複数行ログの収集と処理
複数行モードを有効にして、定義された開始パターンに基づいて関連する行が単一のログエントリにグループ化されるようにします。以下に例を示します。
よくある質問
複数ターゲット配信設定を管理する方法
複数ターゲット配信設定は複数の Logstore に関連付けられています。これらの設定は、プロジェクトレベルの管理ページから管理します。
Simple Log Service コンソールにログインし、ターゲットプロジェクトの名前をクリックします。
プロジェクトページで、左側のナビゲーションウィンドウから
を選択します。説明このページでは、プロジェクト内のすべての収集設定を一元管理できます。これには、関連する Logstore が誤って削除された後も残っている設定も含まれます。
ACK クラスターから別の Alibaba Cloud アカウントのプロジェクトにログを送信する方法
ACK クラスターに LoongCollector (Logtail) を手動でインストールし、ターゲットの Alibaba Cloud アカウント ID または AccessKey で設定します。これにより、コンテナーログを別の Alibaba Cloud アカウントの SLS プロジェクトに送信できます。
ユースケース:組織構造、権限の分離、または統一された監視などの理由で、ACK クラスターから別の Alibaba Cloud アカウントの SLS プロジェクトにログデータを収集します。アカウント間の設定には、LoongCollector (Logtail) を手動でインストールします。
手順:以下の手順では、LoongCollector の手動インストールを例として使用します。Logtail のインストール方法については、Logtail のインストールと設定をご参照ください。
Kubernetes クラスターに接続し、ご利用のリージョンに対応するコマンドを実行して、LoongCollector とその依存コンポーネントをダウンロードします。
中国のリージョン:
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh中国以外のリージョン:
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shloongcollector-custom-k8s-packageディレクトリに移動し、./loongcollector/values.yaml設定ファイルを変更します。# ===================== 必須パラメーター ===================== # 収集されたログを管理するプロジェクトの名前。例:k8s-log-custom-sd89ehdq。 projectName: "" # プロジェクトのリージョン。例 (上海):cn-shanghai region: "" # プロジェクトを所有する Alibaba Cloud アカウントの UID。UID を引用符で囲みます。例:"123456789" aliUid: "" # ネットワークタイプ。オプションのパラメーター:Internet (パブリックネットワーク) および Intranet (内部ネットワーク)。デフォルト値:Internet。 net: Internet # Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。アカウントまたはユーザーには AliyunLogFullAccess システムポリシーが必要です。 accessKeyID: "" accessKeySecret: "" # カスタムクラスター ID。ID には、大文字、小文字、数字、ハイフン (-) のみを含めることができます。 clusterID: ""loongcollector-custom-k8s-packageディレクトリで、次のコマンドを実行して LoongCollector とその他の依存コンポーネントをインストールします。bash k8s-custom-install.sh installインストールが完了したら、コンポーネントの実行状態を確認します。
Pod の起動に失敗した場合は、values.yaml の設定が正しいか、関連するイメージが正常にプルされたかを確認してください。
# Pod の状態を確認します。 kubectl get po -n kube-system | grep loongcollector-dsSLS はまた、以下のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示します。
リソースタイプ
リソース名
機能
プロジェクト
values.yaml ファイルで定義された
projectNameの値異なるサービスのログを分離するためのリソース管理ユニット。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクション。
重要LoongCollector は config-operation-log という名前の Logstore を作成しません。この名前の Logstore が既に存在する場合、LoongCollector はその Logstore へのログ書き込みを停止します。
同じログファイルまたはコンテナーの標準出力を、複数の収集設定で同時に収集する方法
デフォルトでは、各ログソースはデータの重複を防ぐために一度しか収集されません。複数の設定が同じソースから収集できるようにするには、Logtail 設定で対応するオプションを有効にします。
Simple Log Service コンソールにログインし、ターゲットプロジェクトに移動します。
ナビゲーションウィンドウで、
[Logstores] を選択し、ターゲットの Logstore を見つけます。その名前の前にある
アイコンをクリックして Logstore を展開します。[Logtail 構成] をクリックします。設定リストで、ターゲットの Logtail 構成を見つけ、[操作] 列の [Logtail 構成の管理] をクリックします。
[Logtail 構成] ページで、[編集] をクリックし、[入力設定] セクションまでスクロールします。
テキストファイルログを収集する場合:[ファイルの複数回収集を許可] を有効にします。
コンテナーの標準出力を収集する場合:[異なる Logtail 構成による収集を許可] を有効にします。
付録:コンテナーフィルタリングにおける正規表現の制限
コンテナーフィルタリングの正規表現は、Go RE2 エンジンに基づいています。このエンジンは、PCRE などの他のエンジンと比較していくつかの構文上の制限があります。正規表現を記述する際には、以下の制限に注意してください。
1. 名前付きグループ構文の違い
Go は名前付きグループに (?P<name>...) 構文を使用します。PCRE で使用される (?<name>...) 構文はサポートしていません。
正しい例:
(?P<year>\d{4})不正な構文:
(?<year>\d{4})
2. サポートされていない正規表現機能
以下の一般的で複雑な正規表現機能は RE2 では利用できません。
アサーション:
(?=...)、(?!...)、(?<=...)、(?<!...)条件式:
(?(condition)true|false)再帰マッチング:
(?R)、(?0)サブルーチン参照:
(?&name)、(?P>name)アトミックグループ:
(?>...)
3. 推奨事項
Regex101 などのツールで正規表現をデバッグする際は、互換性を確保するために Golang (RE2) モードを選択してください。サポートされていない構文を使用すると、プラグインは式を正しく解析または照合できません。