SkyWalking Agent配置

Stella981
• 阅读 2275

版本: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_paramsplugin.springmvc.collect_http_params.

false

plugin.http.http_params_length_threshold

启用“ COLLECT_HTTP_PARAMS”后,要保留多少个字符并将其发送到OAP后端,请使用负值保留并发送完整的参数,NB。添加此配置项是为了提高性能.

1024

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这