版本:7.0.0
官方文档位置
docs/en/setup/service-agent/java-agent/Setting-override.md
配置及覆盖说明
支持的配置形式
skywalking支持多种配置形式
- Config file: 相对skywalking-agent.jar位置的config/agent.config 文件的配置,或者使用
-Dskywalking_config=/path/to/agent.config
的形式更改默认配置文件路径 - System environment variables: 系统环境变量配置
- System.Properties(-D): JVM参数-D指定配置
- Agent Options: 在JVM参数中的javaagent程序路径之后添加属性
为什么skywalking需要支持多种配置形式? skywalking-agent跟踪不同服务时,主要需要变动的配置有两个:
- agent.service_name 服务名
- collector.backend_service 采集接收器后端服务地址
而我们的服务实例(虚拟机)上存在多个服务(微服务组)如果单纯的使用agent.config配置文件的形式加载配置,那么就需要多个skywalking-agent来支撑,添加了多种配置形式之后,我们只需要部署一个skywalking-agent然后配置不同的参数即可
Config file(文件配置)
文件配置是优先级最低的,配置(以服务名为例)如下
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
其中:
后面的Your_ApplicationName为默认配置 另外,配置支持占位符嵌套,例如$ {SW_AGENT_NAME:$ {ANOTHER_AGENT_NAME:Your_ApplicationName}}
。在这种情况下,如果环境变量SW_AGENT_NAME不存在,但环境变量ANOTHER_AGENT_NAME存在且其值为xxx,则这里的agent.service_name的值为覆盖为“ xxx”,否则它将设置为“ Your_ApplicationName”
System environment variables(系统环境变量)
系统环境变量配置的优先级高于文件配置,同样以服务名为例 比如,文件配置的的服务名为skywalking-agent-app
agent.service_name=${SW_AGENT_NAME:skywalking-agent-app}
而操作系统中存在环境变量“ SW_AGENT_NAME”,其值为“ skywalking-agent-demo”,则此处的“ agent.service_name”的值将被覆盖为“ skywalking-agent-demo”,否则,它将设置为“ skywalking-agent-app”。
System.Properties(-D)(JVM参数)
JVM参数配置的优先级是高于系统环境变量的 其参数键的构成规范: “skywalking.” +key
为什么需要这个前缀? skywalking-agent的JVM参数属性是与目标服务程序共享的,添加此前缀可以避免变量冲突。
以服务名为例,在配置文件中是
agent.service_name=${SW_AGENT_NAME:skywalking-agent-app}
而在JVM参数中应该指定为
-Dskywalking.agent.service_name=skywalking-demo
Agent Options(探针参数)
探针参数的优先级是最高的,其参数需要指定在skywalking-agent.jar
包的后面,其参数指定格式规范为:
-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]
# 如果在选项或值中使用分隔符(`,`或`=`),则应将其用引号引起来
# 如: -javaagent:/path/to/skywalking-agent.jar=agent.ignore_suffix='.jpg,.jpeg'
格式规范以服务名和忽略断点后缀为例
-javaagent:/path/to/skywalking-agent.jar=agent.service_name=skywalking-demo,agent.ignore_suffix='.jpg,.jpeg'
覆盖顺序
Agent Options > System.Properties(-D) > System environment variables > Config file
配置详解
config / agent.config
中支持的属性列表:
参数
描述
默认值
agent.namespace
此参数用以表明跨进程链路之中的header;不同的namespace在一次跨进程链路中会导致链路中断. HEADER name 为 HeaderName:Namespace
.
Not set
agent.service_name
一个项目的唯一标示(任一英文标识),用来展示在web之上. 建议:为每个服务设置一个唯一的名称,服务实例节点共享相同的代码
Your_ApplicationName
agent.sample_n_per_3_secs
每三秒收集的Trace的数量.采样收集,<=0表示不采样
Not set
agent.authentication
/与Coilector进行通信的token,需要与collector设置的一样,有关更多详细信息,请参见server-bootstrap的application.yml.
Not set
agent.span_limit_per_segment
单个trace中的最大span数。通过此配置项目,SkyWalking可以估算您的应用程序内存成本.
300
agent.ignore_suffix
如果第一个span的操作名称包含在该配置集合中,则应忽略此trace.
Not set
agent.is_open_debugging_class
是否保存增强后的字节码文件,配置为true则会将增强后的class文件输出到 /debugging
目录下,该流程影响性能,只在调试时使用.
Not set
agent.instance_uuid
实例uuid是实例的标识,SkyWalking会将同一实例uuid视为一个实例。如果为空,则SkyWalking代理将生成32位的uuid。使用“ NAME:”作为UUID前缀可以设置自定义实例名称。例如,将其设置为“ NAME:SVR-INSTANCE-A”,“ SVR-INSTANCE-A”是实例名称。否则,使用ServiceName
-pid:id
@hostname
作为实例名称.一般默认
""
agent.instance_properties[key]=value
添加服务实例的说明配置.
Not set
agent.cause_exception_depth
获取异常信息的深度.
5
agent.cool_down_threshold
收到复位命令后,agent应等待多长时间(以分钟为单位),然后才能重新注册到OAP服务器.
10
agent.force_reconnection_period
grpc的强制重新连接次数, 配置基于 grpc_channel_check_interval.
1
agent.operation_name_threshold
操作名的最大长度, 不允许大于500.
500
collector.grpc_channel_check_interval
grpc通道心跳的间隔.
30
collector.app_and_service_register_check_interval
应用或服务注册的心跳间隔.
3
collector.backend_service
collector公布的地址和端口,多个以逗号分隔.
127.0.0.1:11800
collector.grpc_upstream_timeout
grpc客户端向上游发送数据的超时时间.
30
seconds
collector.get_profile_task_interval
Sniffer get profile task list interval.
20
logging.level
日志级别,默认 debug.
DEBUG
logging.file_name
日志文件名.
skywalking-api.log
logging.output
日志输出,默认以文件的形式输出,CONSOLE
表示控制台输出.
FILE
logging.dir
Log files directory. Default is blank string, means, use "{theSkywalkingAgentJarDir}/logs " to output logs. {theSkywalkingAgentJarDir} is the directory where the skywalking agent jar file is located
""
logging.pattern
日志记录格式。有所有转换说明符:
%level
表示日志级别。
%timestamp
表示现在的时间,格式为yyyy-MM-dd HH:mm:ss:SSS
。
%thread表示当前线程的名称。<br>
%msg 表示用户记录的一些消息。 <br> *%class表示TargetClass的简单名称。 <br>
%throwable表示用户调用的可抛出对象。 <br> *
%agent_name表示
agent.service_name`
%level %timestamp %thread %class : %msg %throwable
logging.max_file_size
日志更换新文件的阈值.
300 * 1024 * 1024
logging.max_history_files
最大历史日志文件数. <=0表示关闭.
-1
jvm.buffer_size
jvm参数的通道缓存数量.
60 * 10
buffer.channel_size
用于发送至collector的内存通道的数量.
5
buffer.buffer_size
每个内存通道之中保存的traceSegment的数量.
300
profile.active
If true, skywalking agent will enable profile when user create a new profile task. Otherwise disable profile.
true
profile.max_parallel
并行监控trace数量
5
profile.duration
最大监视器trace时间(分钟),如果当前trace监视器时间超出限制,则将其停止.
10
profile.dump_max_stack_depth
最大转储线程堆栈深度
500
profile.snapshot_transport_buffer_size
快照传输到后端缓冲区的大小
50
plugin.peer_max_length
Peer的最大描述限制.
200
plugin.mysql.trace_sql_parameters
如果设置为true,则将mysql收集sql的参数(通常为java.sql.PreparedStatement).
false
plugin.mysql.sql_parameters_max_length
如果设置为正数,则db.sql.parameters将被截断为该长度,否则将被完全保存,这可能会导致性能问题.
512
plugin.postgresql.trace_sql_parameters
如果设置为true,则将postgresql收集sql的参数(通常为java.sql.PreparedStatement).
false
plugin.postgresql.sql_parameters_max_length
如果将其设置为正数,则db.sql.parameters将被截断为该长度,否则将被完全保存,这可能会导致性能问题.
512
plugin.solrj.trace_statement
如果为true,则在Solr查询请求中跟踪所有查询参数(包括deleteByIds和deleteByQuery),默认为false.
false
plugin.solrj.trace_ops_params
如果为true,则跟踪Solr请求中的所有操作参数,默认为false.
false
plugin.springtransaction.simplify_transaction_definition_name
如果为true,则将简化交易定义名称.
false
plugin.tomcat.collect_http_params
此配置项控制Tomcat插件是否应收集请求的参数.
false
plugin.springmvc.collect_http_params
这个配置项控制着当您的Spring应用程序基于Tomcat时,SpringMVC插件是否应该收集请求的参数,请考虑只设置plugin.tomcat.collect_http_params
或plugin.springmvc.collect_http_params
.
false
plugin.http.http_params_length_threshold
启用“ COLLECT_HTTP_PARAMS”后,要保留多少个字符并将其发送到OAP后端,请使用负值保留并发送完整的参数,NB。添加此配置项是为了提高性能.
1024