专栏首页A周立SpringCloudSkywalking系列博客4-Java Agent配置

Skywalking系列博客4-Java Agent配置

点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达!

TIPS 本文基于Skywalking 6.6.0编写,除特别注明的小节外,理论支持Skywalking 6.0+。

本文详细探讨Java Agent的配置。

Java Agent支持的配置属性

TIPS 本表格基于Skywalking 6.6.0,官方文档详见:https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md ,其他版本配置项不完全相同,请自行将链接中的 v6.6.0 修改成你所使用的版本。

属性名

描述

默认值

agent.namespace

命名空间,用于隔离跨进程传播的header。如果进行了配置,header将为HeaderName:Namespace.

未设置

agent.service_name

在SkyWalking UI中展示的服务名。5.x版本对应Application,6.x版本对应Service。建议:为每个服务设置个唯一的名字,服务的多个服务实例为同样的服务名

Your_ApplicationName

agent.sample_n_per_3_secs

负数或0表示不采样,默认不采样。SAMPLE_N_PER_3_SECS表示每3秒采样N条。

未设置

agent.authentication

鉴权是否开启取决于后端的配置,可查看application.yml的详细描述。对于大多数的场景,需要后端对鉴权进行扩展。目前仅实现了基本的鉴权功能。

未设置

agent.span_limit_per_segment

单个segment中的span的最大个数。通过这个配置项,Skywalking可评估应用程序内存使用量。

300

agent.ignore_suffix

如果这个集合中包含了第一个span的操作名,这个segment将会被忽略掉。

未设置

agent.is_open_debugging_class

如果为true,skywalking会将所有经Instrument转换过的类文件保存到/debugging文件夹下。Skywalking团队会要求你提供这些类文件以解决兼容性问题。

未设置

agent.active_v2_header

是否默认使用v2版本的header。

true

agent.instance_uuid

实例id。skywalking会将实例id相同的看做一个实例。如果为空,skywalking agent会生成一个32位的uuid。

""

agent.instance_properties[key]=value

添加服务实例的定制属性。

未设置

agent.cause_exception_depth

agent记录的异常时,代理进入的深度

5

agent.active_v1_header

是否默认使用v1版本的header。

false

agent.cool_down_threshold

收到reset命令后,代理应等待多久(以分钟为单位)才能重新注册到OAP服务器。

10

agent.force_reconnection_period

根据grpc_channel_check_interval强制重新连接grpc。

1

agent.operation_name_threshold

operationName最大长度,不建议将此值设置为> 500。

500

collector.grpc_channel_check_interval

检查grpc的channel状态的时间间隔。

30

collector.app_and_service_register_check_interval

检查应用和服务的注册状态的时间间隔。

3

collector.backend_service

接收skywalking trace数据的后端地址

127.0.0.1:11800

collector.grpc_upstream_timeout

grpc客户端向上游发送数据时的超时时间,单位秒。

30 秒

logging.level

日志级别。默认为debug。

DEBUG

logging.file_name

日志文件名

skywalking-api.log

logging.output

日志输出,默认FILE。CONSOLE表示输出到stdout。

FILE

logging.dir

日志目录。默认为空串,表示使用”system.out”输出日志。

""

logging.pattern

日志记录格式。所有转换说明符:* %level 表示日志级别。* %timestamp 表示现在的时间,格式yyyy-MM-dd HH:mm:ss:SSS。* %thread 表示当前线程的名称。* %msg 表示消息。* %class 表示TargetClass的SimpleName。* %throwable 表示异常。* %agent_name 表示agent.service_name

%level %timestamp %thread %class : %msg %throwable

logging.max_file_size

日志文件的最大大小。当日志文件大小超过这个数,归档当前的日志文件,将日志写入到新文件。

300 * 1024 * 1024

logging.max_history_files

最大历史记录日志文件。发生翻转时,如果日志文件超过此值,则最早的文件将被删除。默认情况下,负数或零表示关闭。

-1

jvm.buffer_size

收集JVM信息的buffer的大小。

60 * 10

buffer.channel_size

buffer的channel大小。

5

buffer.buffer_size

buffer的大小

300

dictionary.service_code_buffer_size

The buffer size of application codes and peer

10 * 10000

dictionary.endpoint_name_buffer_size

The buffer size of endpoint names and peer

1000 * 10000

plugin.peer_max_length

Peer最大描述限制

200

plugin.mongodb.trace_param

如果为true,记录所有访问MongoDB的参数信息。默认为false,表示仅记录操作名,不记录参数信息。

false

plugin.mongodb.filter_length_limit

如果设为正数,WriteRequest.params 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。

256

plugin.elasticsearch.trace_dsl

如果为true,记录所有访问ElasticSearch的DSL信息。默认为false。

false

plugin.springmvc.use_qualified_name_as_endpoint_name

如果为true,endpoint的name为方法的全限定名,而不是请求的URL。默认为false。

false

plugin.toolit.use_qualified_name_as_operation_name

如果为true,operation的name为方法的全限定名,而不是给定的operation name。默认为false。

false

plugin.mysql.trace_sql_parameters

如果设置为true,则将收集sql的参数(通常为java.sql.PreparedStatement)。

false

plugin.mysql.sql_parameters_max_length

如果设置为正数,db.sql.parameters 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。

512

plugin.postgresql.trace_sql_parameters

如果设置为true,则将收集sql的参数(通常为java.sql.PreparedStatement)。

false

plugin.postgresql.sql_parameters_max_length

如果设置为正数,db.sql.parameters 将被截断为该长度,否则将被完全保存,这可能会导致性能问题。

512

plugin.solrj.trace_statement

如果为true,则在Solr查询请求中跟踪所有查询参数(包括deleteByIds和deleteByQuery)

false

plugin.solrj.trace_ops_params

如果为true,则跟踪Solr请求中的所有操作参数

false

plugin.light4j.trace_handler_chain

如果为true,请跟踪Light4J的请求的所有中间件/业务handler。

false

plugin.opgroup.*

支持操作名称自定义不同插件中的组的规则。详见 支持组规则的插件[1]

未设置

plugin.springtransaction.simplify_transaction_definition_name

设为true,则简化事务定义名称。

false

plugin.jdkthreading.threading_class_prefixes

将对名称与任意一个 THREADING_CLASS_PREFIXES (多个使用 , 分隔)匹配的线程化类( java.lang.Runnable 和 java.util.concurrent.Callable )及其子类进行 Instrument,请确保仅将窄前缀指定为您希望Instrument的前缀(安全考虑, java. 和 javax. 将被忽略)

未设置

Java Agent配置方式

agent配置有多种姿势,上面修改 agent.config 文件中的值,只是其中一种。下面专门探讨agent支持的配置方式。

系统属性(-D)

使用 -Dskywalking. + agent.config配置文件中的key 即可。例如:

agent.config 文件中有一个属性名为 agent.service_name ,那么如果使用系统属性的方式,则可以写成

java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=你想设置的值 -jar somr-spring-boot.jar

代理选项

在JVM参数中的代理路径之后添加属性即可。格式:

-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]

例如:

java -javaagent:/opt/agent/skywalking-agent.jar=agent.service_name=你想设置的值 -jar somr-spring-boot.jar

系统环境变量

agent.config 文件中默认的大写值,都可以作为环境变量引用。例如,agent.config 中有如下内容

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

这说明Skywalking会读取名为 SW_AGENT_NAME 的环境变量。

优先级

代理选项` > `系统属性(-D)` > `系统环境变量` > `配置文件

参考文档

https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md[2]

References

[1] 支持组规则的插件: https://github.com/apache/skywalking/blob/v6.5.0/docs/en/setup/service-agent/java-agent/op_name_group_rule.md [2]: https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/README.md

本文分享自微信公众号 - IT牧场(itmuch_com),作者:itmuch

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Skywalking系列博客2-Skywalking使用

    Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。

    用户1516716
  • Spring Cloud Gateway-路由谓词工厂详解(Route Predicate Factories)

    这一节来详细探讨Spring Cloud Gateway的路由谓词工厂(Route Predicate Factories),路由谓词工厂的作用是:符合Pred...

    用户1516716
  • Java new一个对象的过程中发生了什么?

    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。

    用户1516716
  • TensorFlow强化学习入门(5)—— 可视化Agent的“所思所想”

    在我的强化学习系列的文章中,我想要深入探究我们基于神经网络的agent在训练过程中习得的表达形式。尽管我们的直接目的是希望我们的agent能够获得更高的分数,或...

    ArrayZoneYour
  • VAIN:Attentional Multi-agent Predictive Modeling

    Hoshen Y. VAIN: Attentional Multi-agent Predictive Modeling[J]. arXiv preprint a...

    企鹅号小编
  • 新任务引介 | Embodied Question Answering

    本次分享的论文提出了一个新的任务 Embodied Question Answering (EQA)。在这个任务里面,一个agent在三维虚拟空间中进行随机出现...

    马上科普尚尚
  • 玩转Flume+Kafka原来也就那点事儿

    好久没有写分享了,继前一个系列进行了Kafka源码分享之后,接下来进行Flume源码分析系列,望大家继续关注,今天先进行开篇文章Flume+kafka的环境配置...

    小程故事多
  • 分布式链路追踪&应用监控APM软件-skywalking

    当企业应用进入分布式微服务时代,应用服务依赖会越来越多,skywalking可以很好的解决服务调用链路追踪的问题,而且基于java探针技术,基本对应用零侵入零耦...

    kl博主
  • 无人机送货充电包教包会!TensorFlow复合目标强化学习教程

    王瀚宸 编译自 O’reilly 原文作者:Arthur Juliani 量子位 出品 | 公众号 QbitAI 本文用到的所有python代码都在GitHub...

    量子位
  • FAA不同意无人机送货,亚马逊哭了,京东笑了…

    近日,美国联邦航空管理局FAA颁布了首部专门针对小型无人机的管理法则“Part107” ,并将于8月末生效。“Part107”适用于在美国领空内飞行的,重量低于...

    机器人网

扫码关注云+社区

领取腾讯云代金券