自訂Kubernetes監控代理

在IBM Cloud Monitoring中,您可以自訂監控代理程式配置以設定日誌等級、封鎖連接埠、包含或排除指標資料、新增或刪除事件以及過濾容器。

若要自訂 Kubernetes 監視代理程式,您需要配置 sysdig-agent-configmap.yaml 檔案。

有兩種您可以用來修改配置檔的方法:

  • 方法 1:直接在執行代理程式的叢集上修改檔案。
  • 方法 2:在本端修改檔案,並將變更套用至叢集。

使用 kubectl edit 編輯Kubernetes監控代理程式配置

完成以下步驟來編輯Kubernetes監控代理程式設定:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    

    進行變更。 **附註:**請參閱 vi 編輯器指示,以瞭解如何進行變更。

    儲存變更。 會自動套用變更。

使用 kubectl apply 編輯Kubernetes監控代理程式配置

如果您已在來源控制系統中儲存及管理配置 yaml 檔,請使用此方法。

完成以下步驟來編輯Kubernetes監控代理程式設定:

  1. 從來源控制器取得每一個檔案的最新副本。

    若要使用在叢集裡部署的配置來建立本端檔案,您也可以執行下列指令:

    kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml
    
  2. 編輯配置。

  3. 使用下列指令來套用變更:

    kubectl apply -f sysdig-agent-configmap.yaml
    

在 Kubernetes 跨叢集裡的所有節點推送變更之後,執行中代理程式會自動取得新配置。

為從Kubernetes監控代理程式收集的資料添加更多標籤

完成以下步驟,將更多標籤新增至已部署的Kubernetes監控代理程式設定:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 **附註:**請參閱 vi 編輯器指示,以瞭解如何進行變更。

    apiVersion: v1
      data:
        dragent.yaml:
            k8s_cluster_name: mycluster
            collector: ingest.us-south.monitoring.cloud.ibm.com
            collector_port: 6443
            ssl: true
            sysdig_capture_enabled: false
            new_k8s: true
            tags: department:finance,region:us-south
      ...
    
  4. 儲存變更。

會自動套用變更。

對於提供的範例,您將獲得標籤 agent.tag.departmentagent.tag.region。 您可以使用它們來定義警示、自訂範圍等。

收集一組 Kubernetes 事件

Monitoring 支援與 Kubernetes的事件整合。Monitoring 代理程式會自動探索這些服務並從中收集事件資料。 您可以編輯代理程式配置檔來變更其預設行為,以及包括或排除事件資料。

依預設,只會收集有限的一組事件。 如需依預設收集之事件的相關資訊,請參閱 事件類型

若要新增或移除事件,您必須自訂 sysdig-agent-configmap.yaml 檔,並指定要包括哪些事件,以及要過濾掉哪些事件。 **附註:**sysdig-agent-configmap.yaml 中的區段項目會置換預設配置中的整個區段。

若要從 Kubernetes Pod 中過濾事件,請完成下列步驟:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 events 區段或更新區段。

    **附註:**請參閱 vi 編輯器指示,以瞭解如何進行變更。

    例如,您可能想要收集 Kubernetes Pod 取回事件,並過濾掉其他依預設收集的 Pod 事件。 您仍然想要收集節點和 replicationController 的預設 Kubernetes 事件。

    events:
      kubernetes:
        pod:
          - Pulling
    
  4. 儲存變更。

會自動套用變更。

另一個您可以在其中查看如何收集 Kubernetes 事件子集的範例:您只想要監視 Pod 的取回中、已取回及失敗事件。

  • 選項 1:將項目上的順序定義為項目符號清單:

    events:
      kubernetes:
        pod:
          - Pulling
          - Pulled
          - Failed
    
  • 選項 2:在以方括弧括住的單一行上定義項目上的順序:

    events:
      kubernetes:
        pod: [Pulling, Pulled, Failed]
    

如需如何使用自訂事件的相關資訊,請參閱 自訂事件

停用事件的收集

若要禁止監控代理程式收集Kubernetes事件,您必須修改sysdig-agent-configmap.yaml檔案。 將 events 區段中的 Kubernetes 項目設為 none

請完成下列步驟:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 events 區段或更新區段。

    events:
      kubernetes: none
    
  4. 儲存變更。

會自動套用變更。

包括及排除度量值

若要過濾自訂度量值,您必須自訂 sysdig-agent-configmap.yaml 檔中的 metrics_filter 區段。 您可以配置 includeexclude 過濾參數,來指定要包括哪些度量值,以及要過濾掉哪些度量值。

過濾規則順序設定如下:套用符合度量值的第一個規則。 忽略該度量值的後續規則。

請完成下列步驟:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 metrics_filter 區段或更新區段。

    例如,如果監控代理程式的metrics_filter部分如下所示:

    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
      - include: haproxy.backend.*
      - exclude: haproxy.*
      - exclude: metricC.*
    
    • 您正在設定監控代理程式以收集以metricAmetricBhaproxy.backend開頭的指標中的所有資料。

    • 您正在過濾掉開頭為 metricC 的度量值,以及其他開頭為 haproxy 的度量值。

    • 忽略 exclude: metricA.* 項目。

  4. 儲存變更。

會自動套用變更。

過濾從中收集資料的 kubernetes 物件及容器

Kubernetes監控代理程式會自動從叢集中偵測到的所有容器收集指標,包括Prometheus、StatsD, JMX、應用程式檢查和內建指標。

您可以自訂監控代理程式以從指標收集中排除容器。

排除容器時,請考量下列資訊:

  • 您可以減少代理程式和後端負載。
  • 您只會從要監視的容器中收集資料。
  • 您可以透過報告重要容器,以及過濾掉不必要或不重要的容器來控制成本。

若要啟用監控代理程式過濾容器的功能,您必須自訂sysdig-agent-configmap.yaml檔案。 將 containers 區段中的 use_container_filter 項目設為 true。 **附註:**預設會關閉此特性。 然後,定義包含一個以上的條件且您要套用的規則。

下表概述您可以定義以在叢集裡設定過濾規則的參數:

用於定義容器條件的參數
參數 條件
container.image 容器映像檔名稱
container.name 容器名稱
container.label.* 容器標籤
kubernetes.object.* Kubernetes 物件。 物件可以是 Pod、名稱空間等。
kubernetes.object.annotation.* Kubernetes 物件註釋
kubernetes.object.label.* Kubernetes 物件標籤
all 用來指定所有物件的預設規則

請考慮以下有關監視代理程式如何應用您在 container_filter 部分中定義的規則的資訊:

  • 您可以定義條件,方法為使用 includeexclude 過濾參數來配置它們。
  • 清單中的第一個相符規則決定包括還是排除容器。
  • 條件由索引鍵名稱及值組成。 如果容器的給定索引鍵符合該值,則會套用規則。
  • 當一個規則包含多個條件時,需要符合all the conditions,才能套用規則。

完成以下步驟以過濾掉監控代理程式在叢集中監控的容器:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 use_container_filter 項目和 container_filter 區段,或更新現有項目。

    例如,請參閱配置對映的下列摘要:

    # Enable the feature
    use_container_filter: true
    #
    # Include or exclude conditions
    container_filter:
      - include:
            container.image: appdomain/my-app-image
      - include:
            container.name: my-java-app
      - exclude:
            kubernetes.namespace.name: kube-system
    
  4. 儲存變更。

會自動套用變更。

封鎖埠

若要封鎖來自網路埠的網路資料流量及度量值,您必須自訂 sysdig-agent-configmap.yaml 檔案中的 blacklited_ports 區段。 您必須列出要從中過濾掉任何資料的埠。

埠 53 (DNS) 一律在封鎖清單中,且不需要在 blacklisted_ports 中指定。

請完成下列步驟:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 metrics_filter 區段或更新區段。

    例如,以下範例顯示如何設定監控代理程式的blacklisted_ports部分以排除來自連接埠 6666 和 6379 的資料:

    blacklisted_ports:
      - 6666
      - 6379
    
  4. 儲存變更。

會自動套用變更。

變更日誌配置

若要設定日誌配置,您必須自訂sysdig-agent-configmap.yaml檔案中的日誌部分。

監控代理程式在*/opt/draios/logs/draios.log*中產生日誌條目。

  • 日誌檔在大小達到 10MB 時即會替換。
  • 保留 10 個最近的日誌檔。 附加至檔名的日期戳記是用來決定要保留哪些檔案。

下表列出一些常用的情境,以及您必須在其中每一個情境中設定的值:

日誌部分條目
使用案例 日誌區段項目 預設值
疑難排解代理程式行為 file_priority: debug info
減少容器主控台輸出 console_priority: warning info
依嚴重性過濾事件 event_priority: warning information
驗證包括或排除哪些度量 metrics_excess_log: true false

變更記載層次

  • log 區段中的 file_priority 會控制寫入檔案 /opt/draios/logs/draios.log 的日誌項目類型。
  • log 區段中的 console_priority 會控制在執行儲存器化代理程式時寫入儲存器主控台輸出的日誌項目類型。
  • 預設日誌等級為 info,其中除了任何警告和錯誤的條目外,還會為每秒一次傳輸到後端伺服器的每個聚合指標建立一個日誌條目。
  • 有效的記載層次為:noneerrorwarninginfodebugtrace

依嚴重性過濾 Kubernetes 事件

  • log 區段中的 event_priority 會控制從代理程式傳送的事件類型
  • 預設日誌等級是information。 這意味著僅傳輸訊息和更高嚴重性的事件。
  • 有效層次為:emergencyalertcriticalerrorwarningnoticeinformationdebugnone附註:從高優先順序至低優先順序列出這些值。
  • 將層次設為 none 將會封鎖所有事件收集。

將包括或排除哪些度量值記載至檔案

  • log 區段中將 metrics_excess_log 設為 true,將會啟用所包含或排除之自訂度量值的記載。

  • 預設情況下禁用指標記錄。

  • 每隔 30 秒會在 INFO 層次進行記載,並持續 10 秒。

  • 需要 metricsfile 設定才能指定代理程式寫入度量值的位置。 metricsfile.location 值是 /opt/draios 目錄下的相對路徑。 附註: metricsfile 項目與 log 指定的層次相同 (不是 yaml 中的子項)

  • 記載資料的格式如下:

    +/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])
    
    • +/- 是一個符號,指出包括還是排除度量值。 加號 (+) 指出包括度量值。 減號 (-) 指出排除度量值。

    • [type]指定指標類型,例如statsd

    • *[包含/排除的測量]*以人類可讀的方式指示是否包含或排除該度量。

    • metric.name 指出度量值名稱。

    • (filter: +/- [metric.filter] )提供有關sysdig-agent-configmap.yaml檔案的 metrics_filter 部分中定義的任何過濾器的資訊。

範例日誌條目如下圖所示:

-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])

完成以下步驟來設定日誌設定:

  1. 設定叢集環境。 執行下列指令:

    首先,使用指令來設定環境變數,並下載 Kubernetes 配置檔。

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. 編輯 sysdig-agent-configmap.yaml 檔。

    執行下列指令:

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 進行變更。 新增 log 區段或更新該區段,並包含您要根據先前說明來修改的配置。

    例如:

    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
    
  4. 儲存變更。

會自動套用變更。

範例 configmap yaml 檔案

apiVersion: v1
data:
  dragent.yaml: |
    ### Agent tags
    # tags: linux:ubuntu,dept:dev,local:nyc

    ####
    # collector address
    # collector: 192.168.1.1
    # Collector TCP port
    # collector_port: 6666
    # Whether collector accepts ssl
    # ssl: true
    # collector certificate validation
    # ssl_verify_certificate: true
    #######################################
    #
    k8s_cluster_name: cluster12
    collector: ingest.us-south.monitoring.cloud.ibm.com
    collector_port: 6443
    ssl: true
    ssl_verify_certificate: true
    sysdig_capture_enabled: false
    new_k8s: true
    tags: type:mycluster,region:us-south
    blacklisted_ports:
      - 6666
      - 6379
    events:
      kubernetes:
        node:
          - Rebooted
    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
    use_container_filter: true
    container_filter:
      - exclude:
        kubernetes.namespace.name: kube-system
    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
kind: ConfigMap
metadata:
  annotations:
...