You need to enable JavaScript to run this app.
导航
设置LogCollector启动参数
最近更新时间:2025.01.15 10:25:42首次发布时间:2024.02.27 14:19:48

为避免 LogCollector 过度消耗服务器的资源,从而影响其他服务的正常运行,日志服务对 LogCollector 采集性能做了限制。当您需要提高 LogCollector 采集性能时,可调整允许 LogCollector 使用的 CPU 阈值和内存阈值。本文介绍如何设置 LogCollector 启动参数。

设置场景

遇到以下场景时,可修改 LogCollector 的资源配置。

  • 需要采集的日志文件数目大(例如同时采集的文件数超过 100 个),占用大量内存。
  • 日志数据流量大,导致 LogCollector CPU 占用率高。
  • 查询日志时,发现存在采集延迟。
  • LogCollector 部分限制不满足您的要求。

推荐参数值

根据实际经验推荐如下参数配置,适用于普通 JSON 文件的采集场景。完整正则模式和分隔符模式性能与JSON模式接近,单行全文和多行全文模式性能为 JSON 模式的 2 倍。由于数据的复杂度、采集的文件数量都会对 CPU、内存消耗产生影响,请参照下述表格并结合实际情况按需调整。

  • 宿主机环境

    参数

    默认采集速率

    采集速率大于 20MB/s

    采集速率大于 40MB/s

    采集速率大于 60MB/s

    max_procs

    1

    2

    3

    4

    max_mem

    1GiB

    2GiB

    3GiB

    4GiB

  • 容器环境

    参数

    默认采集速率

    采集速率大于 20MB/s

    采集速率大于 40MB/s

    采集速率大于 60MB/s

    max_procs

    1

    2

    3

    4

    max_mem

    1GiB

    2GiB

    3GiB

    4GiB

    resources.limits.cpu

    1000MB

    2000MB

    3000MB

    4000MB

    resources.limits.memory

    1GiB

    2GiB

    3GiB

    4GiB

    LogCollector 性能极限如下表所示。

    说明

    因测试环境与生产环境不同,实际采集性能可能存在差异。

    采集模式

    性能极限

    单行全文模式

    300 MB/s

    多行全文模式

    200 MB/s

    JSON 模式

    150 MB/s

    分隔符模式

    120 MB/s

    单行完整正则模式

    100 MB/s

    多行完整正则模式

    100 MB/s

设置启动参数

  1. 修改配置文件。
    文件路径说明如下表所示:

    Logcollector 版本

    安装场景

    文件路径

    Logcollector v2.2.0 及后续版本

    宿主机场景

    /usr/local/logcollector/etc/logcollector.yml

    容器场景

    通过修改 configmap 来修改 LogCollector 配置文件。

    kubectl edit configmap -n kube-syetem logcollector-config
    

    Logcollector v2.2.0 之前版本

    宿主机场景

    /usr/local/filebeat-7.12.0/etc/filebeat.yml

    容器场景

    通过修改 configmap 来修改 LogCollector 配置文件。

    kubectl edit configmap -n kube-syetem logcollector-config
    

    说明

    如何查看 LogCollector 版本,请参考查看软件版本

  2. 根据需求设置启动参数。
    启动参数示例如下:

    daemonset_mode: true
    autodiscover:
    providers:
     - type: kubernetes
     cleanup_timeout: 15s
    
    max_procs: 1
    max_mem: 1GiB
    log_max_bytes: 512KiB
    ...
    

    说明

    下表只列出您需要关注的常用启动参数,未列出的启动参数,保持默认配置即可。

    配置项

    类型

    说明

    示例

    max_procs

    int

    允许 LogCollector 使用的 CPU 阈值。

    • 取值范围:1 ~ 当前机器的 CPU 核心数。
    • 默认值:1。

    max_procs 为软限制,实际 LogCollector 占用的 CPU 可能会超过限制值。

    max_procs: 1

    max_mem

    string

    允许 LogCollector 使用的内存阈值。

    • 取值范围:256MiB ~ 8GiB
    • 默认值:1024MiB

    max_mem 为软限制,实际 LogCollector 占用的内存可能超过限制值。

    max_mem: 1GiB

    log_max_bytes

    string

    每条日志读取的最大长度。

    • 取值范围:16KiB ~ 8MiB
    • 默认值:512KiB

    log_max_bytes: 512KiB

    autodiscover

    autodiscover

    容器发现模块。详细说明,请参考下表。

    autodiscover:
      providers:
        - type: kuberbetes
          cleanup_timeout: 15s
    
    • autodiscover

      参数

      类型

      说明

      Providers

      Array of Object

      容器发现的具体提供者。目前仅支持 kubernetes。详细说明,请参考下表。

    • kubernetes

      参数

      类型

      说明

      示例

      cleanup_timeout

      string

      Pod 结束之后延迟结束采集的时间。默认为 15s。

      cleanup_timeout: 15s