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

Simple Log Service:[推奨] AliyunPipelineConfigを使用してLogtail設定を管理する

最終更新日:Sep 14, 2024

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へのログの収集を開始します。

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

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

vim cube.yaml
  1. 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.
      ...
  1. 次のコマンドを実行して、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ファイルを変更し、新しいファイルを適用するだけです。

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

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

vim cube.yaml
  1. YAMLファイルのパラメーターを変更します。

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

kubectl apply -f cube.yaml

Logtail設定の削除

Logtail設定を削除するには、Logtail設定の作成に基づいてCRを削除するだけです。 次のコマンドでは、<config_name> が必要なCRの名前です。 ビジネス要件に基づいて別の名前を指定できます。

kubectl delete clusteraliyunpipelineconfigs <config_name>
重要
  • Logtail設定が削除されると、関連するCRがリリースされます。

  • Logtail設定の削除に失敗した場合、関連するCRはリリースされません。 エラーメッセージは、CRのstatusパラメーターで表示できます。 エラーメッセージを無視してCRを直接解放する場合は、CRからmetadata.finalizersフィールドを手動で削除できます。

CRパラメーター

  • apiVersion

    値はtelemetry.alibabacloud.com/v1alpha1のように固定されます。

  • 種類

    値はClusterAliyunPipelineConfigとして固定されています。

  • metadata

    項目

    データ型

    必須

    説明

    name

    String

    必須

    CRの一意の識別子。 値はLogtail設定の名前と同じです。

    注:

    このフィールドの値は、Logtail設定の名前として使用されます。 名前は、Logtail構成が属するプロジェクト内で一意である必要があります。 Logtail設定の作成後、設定の名前を変更することはできません。 値は次の要件を満たす必要があります。

    値には、小文字、数字、ハイフン (-) 、およびアンダースコア (_) のみを使用できます。

    値の先頭と末尾は小文字または数字である必要があります。

    値は2 ~ 128文字である必要があります。

  • Spec

    項目

    データ型

    必須

    説明

    project

    PipelineProject

    必須

    プロジェクトに関する情報。

    説明

    CRの作成後、プロジェクトフィールドの値を変更することはできません。 別のプロジェクトを使用するには、別のCRを作成する必要があります。

    config

    PiplineConfig

    必須

    Logtail設定の詳細設定。

    ログストア

    PipelineLogstore

    任意

    Logstore。 複数のLogstoreを作成できます。

    説明
    • e metadata.nameフィールドを除くすべてのフィールドは、Logstoreを作成した場合にのみ有効になります。

    • このフィールドの値は、Logtail設定に基づいてログを収集するLogstoreを指定しません。 この値は、作成されるLogstoreを指定します。 config.flushersフィールドの値は、Logtail設定に基づいてログを収集するLogstoreを指定します。 指定されたLogstoreが存在する場合、このフィールドは空のままにできます。

    • このフィールドは、Logstoreを追加または削除する場合にのみ設定できます。 既存のLogstoreは変更できません。

    machineGroups

    PipelineMachineGroup

    任意

    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

      任意

      1. 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コンポーネントは自動的に識別子ベースのマシングループを作成します。 マシングループの名前は、識別子にちなんで付けられます。 詳細については、「カスタム識別子ベースのマシングループの作成」をご参照ください。 この操作は、マシングループを作成した場合にのみ有効です。