IBM Cloud Docs
定制Kubernetes监控代理

定制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 文件中的 blacklisted_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* 中生成日志条目。

  • 日志文件在大小达到 10 MB 时会循环。
  • 将保留 10 个最近的日志文件。 附加到文件名的日期戳记用于确定要保留的文件。

下表列出了一些常见场景以及必须在其中每个场景中设置的值:

日志章节条目
用例 Log 部分条目 缺省值
对代理程序行为进行故障诊断 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 控制从代理程序发送的事件类型
  • 默认日志级别为信息。 这意味着只传输信息和严重程度较高的事件。
  • 有效级别为: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 included/excluded(包括/不]*包括度量)以人类可读的方式表示是否包括或不包括该度量。

    • metric.name 指示度量名称。

    • (过滤器:[metric.filter]) provides information about any filters that are defined in the 指标过滤器 section in the sysdig-agent-configmap.yaml file.

日志条目示例如下

-[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. 保存更改。

更改会自动应用。

样本配置映射 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:
...