Simple Log Serviceは、AliyunPipelineConfigという名前のCustomResourceDefinition (CRD) を定義します。YAMLファイルを構成して、CRDからCustomResource (CR) を作成し、Logtail構成を管理できます。 このトピックでは、AliyunPipelineConfigを使用してLogtail構成を管理する方法について説明します。
前提条件
LogtailコンポーネントV0.5.1以降は、自己管理Kubernetesクラスターにインストールされます。 詳細については、「自己管理KubernetesクラスターへのLogtailコンポーネントのインストール」をご参照ください。
説明現在、Container Service for Kubernetes (ACK) クラスターにインストールされているLogtailコンポーネントは、AliyunPipelineConfigをサポートしていません。
alibaba-log-controller DeploymentのイメージバージョンはV0.5.0以降です。
ログを収集するコンテナーは、継続的にログを生成します。
重要Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
制限事項
Logtail構成を作成するには、AliyunPipelineConfig CRDからCRを作成します。 alibaba-log-controllerコンポーネントは、このタイプのLogtail設定をSimple Log Serviceに定期的に同期します。 このタイプのLogtail設定を変更する場合は、関連するCRを変更する必要があります。 Simple Log ServiceコンソールでLogtail設定を変更しても、関連するCRは影響を受けず、次回コンポーネントがLogtail設定を同期するときに変更が上書きされます。 Logtail構成の一貫性を確保するために、常にCRを使用してLogtail構成を管理することを推奨します。
手順
Logtail設定の作成
AliyunPipelineConfig
CRDからCRを作成する必要があります。 次に、alibaba-log-controller
コンポーネントは、CRに基づいてLogtail設定を自動的に作成します。 Logtail設定が作成されると、自動的に適用され、LogtailはLogtail設定に基づいてSimple Log Serviceへのログの収集を開始します。
次のコマンドを実行して、
cube. YAML
という名前のyamlファイルを作成します。 ビジネス要件に基づいて別のファイル名を指定できます。
vim cube.yaml
YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。 CRパラメーターの詳細については、「CRパラメーター」をご参照ください。
apiVersion: telemetry.alibabacloud.com/v1alpha1 # The default value is used. You do not need to modify this parameter.
kind: ClusterAliyunPipelineConfig # The default value is used. You do not need to modify this parameter.
metadata:
name: test-config # The name of the resource. The name must be unique in the current Kubernetes cluster.
spec:
project: # The name of the Logstore.
name: k8s-your-project
config: # The Logtail configuration.
inputs: # The input plug-ins of the Logtail configuration.
...
flushers: # The output plug-ins of the Logtail configuration.
...
次のコマンドを実行して、
AliyunPipelineConfig
CRDからCRを作成します。alibaba-log-controller
コンポーネントは、CRに基づいてLogtail設定を作成します。 次に、Logtail設定が自動的に適用されます。 Logtail設定が適用されると、LogtailはSimple Log Serviceへのログの収集を開始します。 次のコマンドで、cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。
kubectl apply -f cube.yaml
Logtail設定の表示
AliyunPipelineConfig
CRDのCRに基づいて、現在のKubernetesクラスターで作成されたすべてのLogtail設定を表示します。次のコマンドを実行して、Logtail設定を表示できます。
kubectl get clusteraliyunpipelineconfigs
AliyunPipelineConfig
CRDのCRに基づいて作成されたLogtail構成の詳細な設定とステータスを表示します。次のコマンドを実行して、Logtail設定を表示できます。 このコマンドでは、
<config_name>
は必要なCRの名前です。 ビジネス要件に基づいて別の名前を指定できます。kubectl get clusteraliyunpipelineconfigs <config_name> -o yaml
次のコードに似た情報が返されます。 statusパラメーターに基づいて、Logtail設定が適用されているかどうかを確認できます。
apiVersion: telemetry.alibabacloud.com/v1alpha1 kind: ClusterAliyunPipelineConfig metadata: creationTimestamp: null finalizers: - finalizer.pipeline.alibabacloud.com name: example-config # The expected configuration. spec: config: flushers: - Endpoint: cn-hangzhou-intranet.log.aliyuncs.com Logstore: example-config-logstore Region: cn-hangzhou TelemetryType: logs Type: flusher_sls inputs: - FilePaths: - /var/log/*.log Type: input_file processors: - SourceKey: content Type: processor_parse_json_native logstores: - name: example-config-logstore project: name: k8s-log-clusterid # The application status. status: # Whether the Logtail configuration is applied. success: true # The status message. message: success # The update time of the current status. lastUpdateTime: "2024-06-13T12:02:19.133422+08:00" # The Logtail configuration that was previously applied. Default values are used in the Logtail configuration. lastAppliedConfig: # The point in time at which the Logtail configuration was previously applied. appliedTime: "2024-06-13T12:02:19.133422+08:00" # The detailed settings of the Logtail configuration that was previously applied. config: configTags: sls.crd.cluster: clusterid sls.crd.kind: ClusterAliyunPipelineConfig sls.logtail.channel: CRD flushers: - Endpoint: cn-hangzhou-intranet.log.aliyuncs.com Logstore: example-config-logstore Region: cn-hangzhou TelemetryType: logs Type: flusher_sls global: null inputs: - FilePaths: - /var/log/*.log Type: input_file name: example-config processors: - SourceKey: content Type: processor_parse_json_native logstores: - appendMeta: true autoSplit: true encryptConf: {} maxSplitShard: 64 name: example-config-logstore shardCount: 2 ttl: 30 machineGroups: - name: k8s-group-clusterid project: description: k8s log project, created by alibaba cloud log controller endpoint: cn-hangzhou.log.aliyuncs.com name: k8s-log-clusterid
Logtail設定の更新
Logtail設定を更新するには、関連するCRの作成に使用されるYAMLファイルを変更し、新しいファイルを適用するだけです。
CRの作成に使用するYAMLファイルを変更します。 次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。
vim cube.yaml
YAMLファイルのパラメーターを変更します。
次のコマンドを実行して、新しいファイルを適用します。 次のコマンドで、
cube.yaml
はサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。
kubectl apply -f cube.yaml
Logtail設定の削除
Logtail設定を削除するには、Logtail設定の作成に基づいてCRを削除するだけです。 次のコマンドでは、<config_name>
が必要なCRの名前です。 ビジネス要件に基づいて別の名前を指定できます。
kubectl delete clusteraliyunpipelineconfigs <config_name>
Logtail設定が削除されると、関連するCRがリリースされます。
CRパラメーター
apiVersion
値は
telemetry.alibabacloud.com/v1alpha1
のように固定されます。種類
値は
ClusterAliyunPipelineConfig
として固定されています。metadata
項目
データ型
必須
説明
name
String
必須
CRの一意の識別子。 値はLogtail設定の名前と同じです。
注:
このフィールドの値は、Logtail設定の名前として使用されます。 名前は、Logtail構成が属するプロジェクト内で一意である必要があります。 Logtail設定の作成後、設定の名前を変更することはできません。 値は次の要件を満たす必要があります。
値には、小文字、数字、ハイフン (-) 、およびアンダースコア (_) のみを使用できます。
値の先頭と末尾は小文字または数字である必要があります。
値は2 ~ 128文字である必要があります。
Spec
項目
データ型
必須
説明
project
必須
プロジェクトに関する情報。
説明CRの作成後、プロジェクトフィールドの値を変更することはできません。 別のプロジェクトを使用するには、別のCRを作成する必要があります。
config
必須
Logtail設定の詳細設定。
ログストア
任意
Logstore。 複数のLogstoreを作成できます。
説明e metadata.nameフィールドを除くすべてのフィールドは、Logstoreを作成した場合にのみ有効になります。
このフィールドの値は、Logtail設定に基づいてログを収集するLogstoreを指定しません。 この値は、作成されるLogstoreを指定します。 config.flushersフィールドの値は、Logtail設定に基づいてログを収集するLogstoreを指定します。 指定されたLogstoreが存在する場合、このフィールドは空のままにできます。
このフィールドは、Logstoreを追加または削除する場合にのみ設定できます。 既存のLogstoreは変更できません。
machineGroups
任意
Logtail構成に関連付けられているマシングループ。
logtail-ds
コンポーネントをインストールすると、Simple Log Serviceは自動的にk8s-group-${your_k8s_cluster_id}
という名前のマシングループを作成します。 デフォルトでは、k8s-group-${your_k8s_cluster_id} マシングループが使用されます。説明alibaba-log-controllerコンポーネントは、Logtail設定がmachineGroupsフィールドで指定されたマシングループにのみ関連付けられるようにします。 他のマシングループはLogtail構成から関連付けられていません。
enableUpgradeOverride
bool
任意
デフォルト値:false AliyunLogConfig CRDのCRとAliyunPipelineConfig CRDのCRは、同じクラスター内の同じLogtail構成を指すことができます。 このフィールドはこのシナリオ用に設計されています。 有効な値:
true: alibaba-log-controllerコンポーネントは、AliyunLogConfig CRDのCRに基づいて作成されたLogtail設定を上書きして更新します。
false: Logtail設定の競合が発生し、AliyunPipelineConfig CRDのCRに基づいて作成されたLogtail設定の適用に失敗します。
説明次の条件が満たされている場合、システムはCRが同じLogtail構成を指していると見なします。
ログが収集されるのと同じプロジェクトが使用されます。
AliyunLogConfig CRDの場合、CRのプロジェクトはspec.projectフィールドで指定されます。 AliyunPipelineConfig CRDの場合、CR内のプロジェクトはe spec.project.nameフィールドで指定されます。
同じLogtail設定名が使用されます。
AliyunLogConfig CRDの場合、CRの名前はspec.logtailConfig.configNameフィールドで指定されます。 AliyunPipelineConfig CRDの場合、CR内の名前はe metadata.nameフィールドによって指定されます。
コンポーネントは、次のプロセスでLogtail設定を上書きして更新します。
このコンポーネントは、AliyunPipelineConfig CRDのCRに基づいて作成されたLogtail設定の適用を試みます。
Logtail設定が適用された後、コンポーネントはクラスタからAliyunLogConfig CRDのCRを削除します。
プロセスは完了です。
PipelineProject
説明CRの作成後、プロジェクトフィールドの値を変更することはできません。 別のプロジェクトを使用するには、別のCRを作成する必要があります。
項目
データ型
必須
説明
name
String
必須
プロジェクトの名前。
説明指定されたプロジェクトが存在しない場合、Simple Log Serviceは自動的にプロジェクトを作成します。
説明
String
任意
プロジェクトの説明。
説明このフィールドは、プロジェクトを作成するときにのみ有効になります。
endpoint
String
任意
プロジェクトのエンドポイント。 詳細については、「エンドポイント」をご参照ください。 デフォルトでは、現在のクラスターが存在するリージョンのエンドポイントが使用されます。 プロジェクトとクラスターが異なるリージョンにある場合は、このフィールドを設定する必要があります。
説明このフィールドは、Logtail設定が存在するリージョンのエンドポイントを指定します。 Logtailを使用してエンドポイントに基づいてプロジェクトにログを収集するには、Logtailのconfig_server_addressフィールドとdata_server_listフィールドも設定する必要があります。 詳細については、「Logtail設定ファイルとレコードファイル」をご参照ください。
uid
String
任意
アカウントの ID です。 デフォルトでは、現在のクラスターが属するアカウントが使用されます。 アカウント間でログを収集する場合は、このフィールドを設定し、
ALICLOUD_LOG_ACCOUNT_INFOS={"<uid>":{"accessKeyID":"<your_access_key_id>" 、"accessKeySecret":"<your_access_key_secret>"}
を環境変数のalibaba-logコンポーネントに含めます。説明このフィールドは、プロジェクトが属するアカウントを指定します。 Logtailを使用してアカウントにログを収集するには、Logtailのユーザー識別子を設定する必要があります。 詳細については、「ユーザー識別子の設定」をご参照ください。
PiplineConfig
CreateLogtailinePipelineConfigで提供されている手順に基づいて、次のフィールドを設定する必要があります。configNameフィールドは、e metadata.nameフィールドの値を使用します。 configNameフィールドを個別に設定することはできません。
項目
データ型
必須
説明
サンプル
String
任意
サンプルログ。 複数のサンプルログを指定できます。 値が1,500バイトを超えないようにしてください。
global
object
任意
グローバル設定。 詳細は、「リクエストパラメーター」をご参照ください。
入力
オブジェクトリスト
必須
入力プラグイン。 プラグインの詳細とパラメーターの詳細については、「リクエストパラメーター」をご参照ください。
説明設定できる入力プラグインは1つだけです。
プロセッサ
オブジェクトリスト
任意
処理プラグイン。 プラグインの詳細とパラメーターの詳細については、「リクエストパラメーター」をご参照ください。
アグリゲーター
オブジェクトリスト
任意
集約プラグイン。 プラグインの詳細とパラメーターの詳細については、「リクエストパラメーター」をご参照ください。
flushers
オブジェクトリスト
必須
出力プラグイン。 プラグインの詳細とパラメーターの詳細については、「リクエストパラメーター」をご参照ください。
説明設定できる出力プラグインは1つだけです。
configTags
Map
任意
Logtail設定を識別するために追加されるカスタムタグ。
PipelineLogstore
説明e metadata.nameフィールドを除くすべてのフィールドは、Logstoreを作成した場合にのみ有効になります。
項目
データ型
必須
説明
name
String
必須
ログストアの名前
queryMode
String
任意
Logstoreのタイプ。 詳細については、「Logstoreタイプ」をご参照ください。 デフォルト値: standard。 有効な値:
query: Logstoreのクエリ
標準: 標準Logstore
ttl
int
任意
Logstore内のログの保存期間。 単位:日 詳細については、「データ保持期間」をご参照ください。 デフォルト値:30。 有効な値: 1 ~ 3650 このフィールドを3650に設定すると、ログは永続的に保存されます。
hotTtl
int
任意
Logstoreのホットストレージ層のログの保持期間。 単位:日 詳細については、「インテリジェント階層ストレージ」をご参照ください。 デフォルト値:0 このフィールドの値は、ttlフィールドの値より小さく、7以上でなければなりません。
shardCount
int
任意
Logstore内のシャードの数。 詳細については、「Logstore の管理」をご参照ください。 デフォルト値:2 設定可能な値は 1~100 です。
maxSplitShard
int
任意
Logstore内の既存のシャードを自動的に分割できるシャードの最大数。 詳細については、「自動シャーディング」をご参照ください。 デフォルト値: 64。 有効な値: 1 ~ 256
autoSplit
bool
任意
Logstoreの自動シャーディングを有効にするかどうかを指定します。 詳細については、「自動シャーディング」をご参照ください。 デフォルト値:true
telemetryType
String
任意
Logstore内の観測可能なデータのタイプ。 詳細については、「telemetryType」をご参照ください。 デフォルト値 : なし。 有効な値:
なし: ログデータ
Metrics: メトリックデータ
appendMeta
bool
任意
LogstoreのパブリックIPアドレスを記録するかどうかを指定します。 詳細については、「ログパブリックIP」をご参照ください。 デフォルト値:true
enableTracking
bool
任意
Logstoreのwebトラッキング機能を有効にするかどうかを指定します。 詳細については、「WebTracking」をご参照ください。 デフォルト値:false
encryptConf
object
任意
Logstoreの暗号化設定。 詳細については、「共通データ構造」をご参照ください。 このフィールドはデフォルトでは空です。
meteringMode
String
任意
Logstoreの課金モード。 詳細については、「課金モード」をご参照ください。 このフィールドはデフォルトでは空です。 有効な値:
ChargeByFunction: 機能課金モード
ChargeByDataIngest: 取り込みデータ課金モード
説明queryModeフィールドをクエリに設定する場合、このフィールドをChargeByFunctionに設定する必要があります。
ご利用のアカウントでデータ課金課金モードが無効になっている場合、このフィールドはChargeByFunctionにのみ設定できます。
PipelineMachineGroup
項目
データ型
必須
説明
name
String
必須
Logtail構成に関連付けられているマシングループの名前。
説明マシングループが存在しない場合、alibaba-log-controllerコンポーネントは自動的に識別子ベースのマシングループを作成します。 マシングループの名前は、識別子にちなんで付けられます。 詳細については、「カスタム識別子ベースのマシングループの作成」をご参照ください。 この操作は、マシングループを作成した場合にのみ有効です。