为避免 LogCollector 过度消耗服务器的资源,从而影响其他服务的正常运行,日志服务对 LogCollector 采集性能做了限制。当您需要提高 LogCollector 采集性能时,可调整允许 LogCollector 使用的 CPU 阈值和内存阈值。本文介绍如何设置 LogCollector 启动参数。
遇到以下场景时,可修改 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 |
修改配置文件。
文件路径说明如下表所示:
Logcollector 版本 | 安装场景 | 文件路径 |
---|---|---|
Logcollector v2.2.0 及后续版本 | 宿主机场景 |
|
容器场景 | 通过修改 configmap 来修改 LogCollector 配置文件。
| |
Logcollector v2.2.0 之前版本 | 宿主机场景 |
|
容器场景 | 通过修改 configmap 来修改 LogCollector 配置文件。
|
说明
如何查看 LogCollector 版本,请参考查看软件版本。
根据需求设置启动参数。
启动参数示例如下:
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 阈值。
|
|
max_mem | string | 允许 LogCollector 使用的内存阈值。
|
|
log_max_bytes | string | 每条日志读取的最大长度。
|
|
autodiscover | autodiscover | 容器发现模块。详细说明,请参考下表。 |
|
autodiscover
参数 | 类型 | 说明 |
---|---|---|
Providers | Array of Object | 容器发现的具体提供者。目前仅支持 kubernetes。详细说明,请参考下表。 |
kubernetes
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
cleanup_timeout | string | Pod 结束之后延迟结束采集的时间。默认为 15s。 |
|