全部產品
Search
文件中心

Simple Log Service:【推薦】使用AliyunPipelineConfig管理採集配置

更新時間:Jul 11, 2024

AliyunPipelineConfig是Log Service自訂的一類CRD,您可以通過配置YAML檔案建立對應的CR,從而管理iLogtail採集配置。本文主要介紹通過AliyunPipelineConfig管理iLogtail採集配置的操作步驟。

前提條件

  • 已安裝iLogtail組件。具體操作,請參見安裝Logtail組件(阿里雲Kubernetes叢集)

  • AliyunPipelineConfig需要alibaba-log-controller Deployment的鏡像版本號碼不低於0.5.0。

  • 目標容器持續產生日誌。

    重要

    iLogtail只採集增量日誌。如果下發iLogtail配置後,記錄檔無更新,則iLogtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌

使用限制

因為alibaba-log-controller定期會同步AliyunPipelineConfig所定義的iLogtail採集配置到服務端,所以對於通過CR建立的iLogtail採集配置,其修改只能通過更新相應的CR來實現。直接在Log Service控制台對iLogtail採集配置進行修改不會影響CR本身,並且所有控制台上的更改都將在下一次同步時被CR中的配置覆蓋。因此,為保證iLogtail採集配置的一致性,請始終通過CR來對iLogtail採集配置進行管理。

配置步驟

建立iLogtail採集配置

您需要建立AliyunPipelineConfig的CR,alibaba-log-controller會根據CR自動建立iLogtail採集配置。建立完成後,系統自動應用該iLogtail採集配置。

建立步驟:

  1. 擷取叢集KubeConfig並通過kubectl工具串連叢集

  2. 執行如下命令建立cube.yaml檔案,請根據實際情況替換檔案名稱。

vim cube.yaml
  1. 在YAML檔案中輸入如下指令碼,並根據實際情況設定其中的參數。CR結構的詳細參數請參見CR參數說明

apiVersion: telemetry.alibabacloud.com/v1alpha1 # 使用預設值,無需修改。
kind: ClusterAliyunPipelineConfig               # 使用預設值,無需修改。
metadata:
  name: test-config                             # 設定資源名,在當前Kubernetes叢集內唯一。
spec:
  project:                                      # 設定目標Project名稱。
    name: k8s-your-project                      
  config:                                       # 設定iLogtail採集配置。
    inputs:                                     # 設定iLogtail採集配置裡的輸入外掛程式
      ...
    flushers:                                   # 設定iLogtail採集配置裡的輸出外掛程式
      ...
  1. 執行如下命令建立AliyunPipelineConfig的CR,alibaba-log-controller會根據該CR自動建立iLogtail採集配置,從而使iLogtail採集配置生效。iLogtail採集配置生效後,Logtail開始採集資料,並發送到Log Service中。cube.yaml為檔案名稱,請根據實際情況替換。

kubectl apply -f cube.yaml

查看iLogtail採集配置

  • 查看當前Kubernetes叢集中所有由AliyunPipelineConfig建立的iLogtail採集配置。

    您可以執行以下命令,查看所有由AliyunPipelineConfig建立的iLogtail採集配置。

    kubectl get clusteraliyunpipelineconfigs
  • 查看由AliyunPipelineConfig建立的iLogtail採集配置的詳細資料和狀態。

    您可以執行以下命令進行查看。其中,<config_name>AliyunPipelineConfig的名稱,請根據實際情況替換。

    kubectl get clusteraliyunpipelineconfigs <config_name> -o yaml

    返回結果參考如下所示,可以根據status查看iLogtail採集配置的應用情況。

    apiVersion: telemetry.alibabacloud.com/v1alpha1
    kind: ClusterAliyunPipelineConfig
    metadata:
      creationTimestamp: null
      finalizers:
        - finalizer.pipeline.alibabacloud.com
      name: example-config
    # 預期的配置
    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
    # 應用狀態
    status:
      # CR 是否應用成功
      success: true
      # CR 當前的狀態資訊
      message: success
      # 當前 status 的更新時間
      lastUpdateTime: "2024-06-13T12:02:19.133422+08:00"
      # 上次成功應用的配置資訊,該配置資訊為填充預設值後實際生效的配置
      lastAppliedConfig:
        # 上次成功應用的時間
        appliedTime: "2024-06-13T12:02:19.133422+08:00"
        # 上次成功應用的配置詳情
        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

更新iLogtail採集配置

您只需要修改已有的AliyunPipelineConfig的YAML檔案並重新應用,就可以更新iLogtail採集配置。

  1. 擷取叢集KubeConfig並通過kubectl工具串連叢集

  2. 編輯已有的AliyunPipelineConfig檔案。cube.yaml為檔案名稱,請根據實際情況替換。

vim cube.yaml
  1. 在YAML檔案中修改配置參數。

  2. 執行如下命令使iLogtail採集配置生效。cube.yaml為檔案名稱,請根據實際情況替換。

kubectl apply -f cube.yaml

刪除iLogtail採集配置

如果您要刪除iLogtail採集配置,只需刪除對應的CR即可。其中,<config_name>AliyunPipelineConfig的名稱,請根據實際情況替換。

kubectl delete clusteraliyunpipelineconfigs <config_name>
重要
  • 在iLogtail採集配置成功刪除後,CR會釋放。

  • 如果iLogtail採集配置刪除失敗,CR不會被釋放,可以查看CR的status中的報錯資訊。如果想忽略報錯直接刪除CR,可以手動刪除Cr metadata中的finalizers欄位。

CR參數說明

  • ApiVersion

    固定為telemetry.alibabacloud.com/v1alpha1

  • Kind

    固定為ClusterAliyunPipelineConfig

  • Metadata

    參數

    資料類型

    是否必填

    說明

    name

    string

    CR的唯一標識,同時也是建立出的iLogtail採集配置的名字。

    注意:

    該參數會作為iLogtail採集配置名稱使用,在所屬Project內唯一,且建立成功後無法修改。需要滿足以下條件:

    只能包括小寫字母、數字、-和_。

    必須以小寫字母或數字開頭和結尾。

    長度必須在2~128字元之間。

  • Spec

    參數

    資料類型

    是否必填

    說明

    project

    PipelineProject

    目標Project的資訊。

    說明

    project欄位在CR建立後不允許更改,如需切換project請建立新的CR。

    config

    PiplineConfig

    定義iLogtail 採集配置詳情。

    logstores

    PipelineLogstore

    需要建立的Logstore列表,支援建立多個Logstore。

    說明
    • name以外的所有參數僅在建立logstore時生效。

    • 該列表並不指定iLogtail採集配置的發送目標,只會按需建立Logstore。iLogtail採集配置的發送目標,由config中的flusher外掛程式決定。如果 iLogtail 採集配置中指定的目標 Logstore 已存在,此處可不填寫。

    • 該列表只可以在logstores列表中新增/刪除logstore定義,不支援修改已定義的Logstore。

    machineGroups

    PipelineMachineGroup

    需要與iLogtail採集配置關聯的機器組列表。安裝logtail-ds組件時,Log Service會自動建立名為k8s-group-${your_k8s_cluster_id}的機器組,預設值為僅包含該機器組的列表。

    說明

    alibaba-log-controller會保證iLogtail採集配置關聯的機器組嚴格等於machineGroups指定的機器組,不在machineGroups中的機器組會被解除關聯。

    enableUpgradeOverride

    bool

    預設值為false。當叢集中存在AliyunLogConfig定義的採集配置、且與當前的AliyunPipelineConfig指向同一個iLogtail採集配置時,可以:

    • 開啟此開關:alibaba-log-controller會對已有的AliyunLogConfig定義的採集配置進行覆蓋升級。

    • 不開啟此開關:採集配置存在衝突,AliyunPipelineConfig應用失敗。

    說明
    • 指向同一個iLogtail採集配置的定義:

      • 目標project相同。

        AliyunLogConfig中為叢集預設的project或spec.project,參見參數說明。AliyunPipelineConfig中為spec.project.name。

      • 目標iLogtail採集配置名相同。

        AliyunLogConfig中為spec.logtailConfig.configName,參見參數說明。AliyunPipelineConfig中為metadata.Name。

    • 覆蓋升級的定義:

      首先,AliyunPipelineConfig生效,並更新iLogtail採集配置。

      然後,如果AliyunPipelineConfig成功生效,會刪除叢集內指向同一個iLogtail採集配置的AliyunLogConfig。

      最終,覆蓋更新完成。

    • PipelineProject

      說明

      project欄位在CR建立後不允許更改,如需切換project請建立新的CR。

      參數

      資料類型

      是否必填

      說明

      name

      string

      目標 Project 的名稱。

      說明

      如果您所指定的Project不存在,Log Service會自動建立。

      description

      string

      目標 Project 的描述。

      說明

      該參數僅在建立Project時生效。

      endpoint

      string

      目標Project的服務入口。更多資訊,請參見服務入口。預設為當前叢集所在的地區,如果目標 Project 與叢集不在同一地區,需要配置該參數。

      說明

      該參數僅控制採集配置所在的region,iLogtail資料投遞到該region需要另外配置iLogtail的config_server_address、data_server_list,參考Logtail設定檔和記錄檔案

      uid

      string

      目標帳號的uid。預設使用當前叢集所屬帳號。如果需要跨帳號投遞日誌,請配置該參數,並在 alibaba-log-controller 的環境變數中配置ALICLOUD_LOG_ACCOUNT_INFOS={"<uid>":{"accessKeyID":"<your_access_key_id>","accessKeySecret":"<your_access_key_secret>"}}

      說明

      該參數僅控制project所屬的帳號,iLogtail資料投遞到該帳號需要另外配置iLogtail的使用者標識,參考配置使用者標識

    • PiplineConfig

      配置中的各項參數要求與CreateLogtailPipelineConfig介面一致。configName會使用CR的metadata.Name,不可單獨配置。

      參數

      資料類型

      是否必填

      說明

      sample

      string

      日誌範例。支援多條日誌,總長度不超過1500位元組。

      global

      object

      全域配置。詳細資料,請參見請求參數

      inputs

      object列表

      輸入外掛程式列表。詳細資料與外掛程式參數,參見請求參數

      說明

      目前,只允許配置 1 個輸入外掛程式。

      processors

      object列表

      處理外掛程式列表。詳細資料與外掛程式參數,請參見請求參數

      aggregators

      object列表

      彙總外掛程式列表。詳細資料與外掛程式參數,請參見請求參數

      flushers

      object列表

      輸出外掛程式列表。詳細資料與外掛程式參數,請參見請求參數

      說明

      目前,只允許存在 1 個 flusher_sls 外掛程式。

      configTags

      map

      用於標記iLogtail採集配置的自訂標籤。

    • PipelineLogstore

      說明

      name以外的所有參數僅在建立logstore時生效。

      參數

      資料類型

      是否必填

      說明

      name

      string

      需要建立的Logstore的名稱。

      queryMode

      string

      目標Logstore的類型。更多資訊,請參見Logstore類型。預設值為standard,可選值:

      • query:查詢型Logstore。

      • standard:標準型Logstore。

      ttl

      int

      目標Logstore的資料存放區的時間(以天為單位)。更多資訊,請參見資料儲存時間。預設值為30,取值範圍為1~3650,如果配置為3650,表示永久儲存。

      hotTtl

      int

      1. 目標Logstore的熱資料存放區的時間(以天為單位)。更多資訊,請參見智能儲存分層。預設值為0,需要小於ttl且大於等於 7。

      shardCount

      int

      目標Logstore的Shard數量。更多資訊,請參見Shard數目。預設值為2,取值範圍為1~100。

      maxSplitShard

      int

      目標 Logstore 的最大自動分裂Shard數量。更多資訊,請參見自動分裂Shard。預設值為64,取值範圍為1~256。

      autoSplit

      bool

      目標Logstore是否開啟自動拆分Shard功能。更多資訊,請參見自動分裂Shard。預設值為true。

      telemetryType

      string

      目標 Logstore 的可觀測資料類型。更多資訊,請參見telemetryType。預設值為None,可選值:

      • None:日誌類型。

      • Metrics:Metrics 類型。

      appendMeta

      bool

      目標Logstore是否開通記錄外網IP功能。更多資訊,請參見記錄外網IP。預設值為true。

      enableTracking

      bool

      目標Logstore是否啟用Web Tracking。更多資訊,請參見WebTracking。預設值為false。

      encryptConf

      object

      目標Logstore的加密配置資訊。更多資訊,請參見通用資料結構。預設值為空白。

      meteringMode

      string

      目標Logstore的計費模式。更多資訊,請參見計費模式。預設值為空白,可選值:

      • ChargeByFunction:按功能計費

      • ChargeByDataIngest:按寫入量計費。

      說明

      如果Logstore的queryMode為query,只支援按功能計費。

      如果帳號未開通寫入量計費,無法配置為ChargeByDataIngest。

    • PipelineMachineGroup

      參數

      資料類型

      是否必填

      說明

      name

      string

      需要與iLogtail採集配置關聯的機器組名。

      說明

      如果機器組不存在,alibaba-log-controller會自動建立同名的標識型機器組,標識與機器組名相同。詳細資料,參見建立使用者自訂標識機器組。該行為僅在建立機器組時生效。