Collector配置

Collector容量规划

部署Collector的主机推荐配置如下:

  • CPU:4 Core及以上
  • 物理内存:8GB及以上

单个Collector每秒可以处理的trace数量和trace内span的数量有关系,单个trace内span数量越多,需要的计算资源就越多。部署在4 Core、8GB机器上的Collector通常可以承受4000TPS的trace数据。

CPU使用情况还和Collector相关的应用实例数量有关系,应用实例数量越多,需要的计算资源就越多。

在实践中,我们推荐按照以下公式计算需要部署的Collector数量:

Collector数量 = Max(应用实例总数/100, 一天内TPS的峰值/4000) + 1

禁用/启用Collector

Collector中包含APM Collector和Infra Collector两个大的组件,在特殊场景下,您可能不需要使用APM Collector或 Infra Collector的功能,此时可以将其禁用。

  1. 将Collector根目录下的env.sh文件中的APM_ENABLEDINFRA_ENABLED改为false

    ## 是否启用INFRA
    export INFRA_ENABLED=true
    
    ## 是否启用APM
    export APM_ENABLED=true
    
  2. 执行 restart.sh 重启Collector。

说明

  • 仅3.6.6.2及以上版本支持禁用或启用APM Collector或Infra Collector。
  • 禁用Infra Collector将会导致APM Collector无法自动升级。

APM Collector配置

APM Collector的JVM参数在Collector根目录下的 ./apm/ops-env.sh文件中。当Collector的可用内存超过8GB时,可以按比例提高COLLECTOR_ARGS中的参数。

export COLLECTOR_ARGS="-Xms1g -Xmx5g -XX:MaxDirectMemorySize=1g"

APM Collector的配置在Collector根目录下的 ./apm/collector.properties 文件中。

当Collector的可用CPU超过4 Core时,建议将 trace.consumer_worker 设置为CPU核数。

#
# Collector 所在的机房名称。
# 默认值: default
# collector.idc=default
#
# Collector 服务的监听端口。
# 默认值: 7665
# collector.listen=7665
#
# Collector 服务对探针的IP。
# 当自动获取的IP不满足要求时,需要配置此项。
# 默认值: 自动获取网卡的第一个非回环IP,多网卡时自动获取的IP可能不满足要求。
# collector.ip=
#
# Collector 服务对探针的端口。
# docker容器内使用 -p 映射端口时, 需要配置此项。
# 默认值: 和 collector.listen 一致
# collector.port=
#
# 是否以https方式向DC发送数据。
# 当 dc.ssl 设置为 true 时,Collector将以HTTPS方式向DC发送数据。
# 默认值: false
# dc.ssl=false
#
# 是否启用数据审计模式。
# 这项设置是动态的,更改它您不需要重启Collector。
# 当 audit_mode 设置为 true 时, 会将所有进出Collector的数据记录到日志文件。
# 此功能比较消耗CPU,生产环境需要关闭此配置。
# 默认: false。
# collector.audit_mode=true
#
# 日志输出级别。
# 这项设置是动态的,更改它您不需要重启Collector。
# 日志级别: TRACE, DEBUG, INFO, WARN, ERROR, OFF。
# 默认值:INFO
# log.level=INFO
#
#
# 单个日志文件最大尺寸。
# 当日志文件大于该限制时,日志将滚动操作。
# 单位: (M)
# 默认值: 64
# log.file_size=64
#
# 日志文件数量。
# 当日志文件数量大于该该限制,将会删除最早的日志文件。
# 默认值: 8
# log.file_count=8
#
# 处理Trace的线程数量。
# 该项配置推荐设置为CPU核数, 但不能超过CPU核数的4倍。
# 默认值: 4
# trace.consumer_worker=4
#
# 接收Trace的缓冲池容量。
# 默认值: 256
# 注意: 该配置必须是2的n次方,n为整数。
# trace.input_size=256
#
# 每个Trace消费线程对应的发送Trace的缓冲池数量。
# 当后端接收能力变差时,数据会积累到缓冲池,当缓冲池满后,会将数据落盘。
# 当数据在缓冲池停留时间过长,会导致JVM将数据从YONG区移入OLD区,进而发生FULL GC。
# SaaS场景下建议将此值调小为8,减少FULL GC的次数。
# 默认值: 64
# trace.output_bucket_count=64
#
# 每个Trace消费线程对应的发送Trace的每个缓冲池容纳的trace数。
# 默认值: 128
# trace.output_bucket_size=128
#
# 每个Trace消费线程对应的发送Trace的最大线程数。
# 默认每个Trace消费线程启动2个发送线程,当后端接收能力变差时,会启动更多的发送线程。
# 极端情况下,进程内发送线程总数会达到trace.consumer_worker*trace.send_worker。
# 默认值: 8
# trace.send_worker=8
#
# 发送Trace的数据包大小(KB)。
# 默认值: 512
# trace.send_chunk_size=512
#
# 事务追踪详情中调用栈的保留方式。
# 这项设置是动态的,更改它您不需要重启Collector。
# All:  保留所有请求的调用栈
# Slow: 仅保留慢或错误的调用栈
# 在Collector和DC之间网络带宽不足或需要节省DC存储空间时,请设置此项为Slow。
# 默认值: All
# trace.retain_calltree=All
#
# Collector所在分区最小保留的磁盘空间。
# 当可用空间小于此限制时,将不再落盘。
# 单位: (GB)
# 默认值: 4
# saver.min_free_space=4
#
# 落盘文件最长保留时间。
# 当文件超过此限制时,将被自动清理。
# 默认值: 60
# saver.max_keep_minutes=60
#
# 探针断线清理周期. 超过此分钟数无心跳会将此实例从缓存移除。
# 默认值: 5
# agent.expire_minutes=5
#
# netty线程数
# 默认值: 4
# netty.child_thread=4
#
# 代理
# 仅支持http代理,不支持sock代理,address格式为ip:port,例如 proxy.address=192.168.5.43:8000
# proxy.address=
# proxy.username=
# proxy.password=
#
# SQL ID化的最大数量(每个探针)
# 此功能是为了减少探针和collector之间的传输数据量, 但此功能会占用collector内存,请谨慎设置。
# 默认值: 0
# operation.max_count=0
#
# 超过此长度的SQL才需要ID化
# 默认值: 500
# operation.min_length=500
#
# 全栈快照 ID化的最大数量(每个探针)
# 此功能是为了减少探针和collector之间的传输数据量, 但此功能会占用collector内存,请谨慎设置。
# 默认值: 10000
# snapshot.name_max_count=10000
#
# 与其他APM探针数据融合协议
# 可选协议: skywalking w3c zipkin jaeger
# Opentelemety探针默认使用w3c协议,也可以手工配置切换到zipkin协议。
# 默认值: 空
# tracing.vendor=

results matching ""

    No results matching ""