- 欢迎使用 SkyWalking
- 观测分析语言 Observability Analysis Language, OAL
- 仪表系统
- 设计目标
- 为什么 SkyWalking 体系中没有使用 MQ?
- 探针简介
- 观测分析平台
- 可视化
- 选择接收器
- 服务自动打点代理
- 手动打点 SDK
- 服务网格探针
- SkyWalking Java 代理支持列表
- 设置
- 协议
- 作用域 Scopes 和字段 Fields
- 概念与设计
- Backend 启动
- Backend 存储
- 安装 Java agent
- Open Fetcher
- 概念与设计总览
- 设置开发环境
- 组件库设置
- 插件自动测试框架
- 使用命令行导出
- 操作名称分组规则
- Spring 注解插件
- Oracle 和 Resin 插件
- 支持忽略自定义的 trace
- 支持自定义增强
- 配置覆盖
- 支持传输层安全性协议(TLS)
- 命名空间
- 令牌认证
- 令牌认证
- 兼容 OpenTracing 的 Skywalking tracer
- 安装 log4j
- 安装 log4j2
- logback 插件
- 应用程序工具包跟踪
- 跨线程追踪
- 通过系统属性动态定义 agent 配置文件
- 插件开发指南
- 在 Kubernetes 中部署
- 通过 ALS 观测服务网格
- UI
- 与 Istio 协作
- 配置 Envoy 来向 SkyWalking 发送度量指标
- 快速入门
- V6 升级
- SkyWalking 跨进程传播的头部协议
- OAP server 支持 gPRC SSL 传输
- 贡献指南
- 数据存储扩展
- 启动模式
- 设置的覆盖
- IP 和端口设置
- 初始化模式
- 集群管理
- 服务器端的跟踪采样
- 慢 SQL 语句设置
- 官方 OAL 脚本
- 告警
- 高级部署
- Metrics Exporter
- TTL
- 动态配置
- 无法打点的网关/代理
- 应用性能指数
- 端点分组参数化
- 后台遥测数据
- Apache SkyWalking 代码提交者
- 如何构建项目
- 新度量指标的源和范围扩展
- 后端存储实体扩展
- 线程转储归并机制
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
支持自定义增强
支持自定义增强
apm-customize-enhance-plugin
为可选插件
介绍
SkyWalking提供了Java agent插件开发指南帮助开发者们构建新的插件。
这个插件不是为替代某个插件而设计,而是为了用户使用方便。这个插件的行为跟@Trace toolkit很相似, 但是不需要对代码进行修改,而且功能更强大,比如提供了tag和log。
如何配置
实现对类的自定义增强需要以下几步。
- 激活插件,将插件从
optional-plugins/apm-customize-enhance-plugin.jar
移动到plugin/apm-customize-enhance-plugin.jar
。 - 在agent.config中配置
plugin.customize.enhance_file
,指明增强规则文件,比如/absolute/path/to/customize_enhance.xml
。 - 在
customize_enhance.xml
中配置增强规则。<?xml version="1.0" encoding="UTF-8"?> <enhanced> <class class_name="test.apache.skywalking.testcase.customize.service.TestService1"> <method method="staticMethod()" operation_name="/is_static_method" static="true"/> <method method="staticMethod(java.lang.String,int.class,java.util.Map,java.util.List,[Ljava.lang.Object;)" operation_name="/is_static_method_args" static="true"> <operation_name_suffix>arg[0]</operation_name_suffix> <operation_name_suffix>arg[1]</operation_name_suffix> <operation_name_suffix>arg[3].[0]</operation_name_suffix> <tag key="tag_1">arg[2].['k1']</tag> <tag key="tag_2">arg[4].[1]</tag> <log key="log_1">arg[4].[2]</log> </method> <method method="method()" static="false"/> <method method="method(java.lang.String,int.class)" operation_name="/method_2" static="false"> <operation_name_suffix>arg[0]</operation_name_suffix> <tag key="tag_1">arg[0]</tag> <log key="log_1">arg[1]</log> </method> <method method="method(test.apache.skywalking.testcase.customize.model.Model0,java.lang.String,int.class)" operation_name="/method_3" static="false"> <operation_name_suffix>arg[0].id</operation_name_suffix> <operation_name_suffix>arg[0].model1.name</operation_name_suffix> <operation_name_suffix>arg[0].model1.getId()</operation_name_suffix> <tag key="tag_os">arg[0].os.[1]</tag> <log key="log_map">arg[0].getM().['k1']</log> </method> </class> <class class_name="test.apache.skywalking.testcase.customize.service.TestService2"> <method method="staticMethod(java.lang.String,int.class)" operation_name="/is_2_static_method" static="true"> <tag key="tag_2_1">arg[0]</tag> <log key="log_1_1">arg[1]</log> </method> <method method="method([Ljava.lang.Object;)" operation_name="/method_4" static="false"> <tag key="tag_4_1">arg[0].[0]</tag> </method> <method method="method(java.util.List,int.class)" operation_name="/method_5" static="false"> <tag key="tag_5_1">arg[0].[0]</tag> <log key="log_5_1">arg[1]</log> </method> </class> </enhanced>
文件中的配置说明。
配置 说明 class_name 要被增强的类 method 类的拦截器方法 operation_name 如果进行了配置,将用它替代默认的operation_name operation_name_suffix 表示在operation_name后添加动态数据 static 方法是否为静态方法 tag 将在local span中添加一个tag。key的值需要在XML节点上表示。 log 将在local span中添加一个log。key的值需要在XML节点上表示。 arg[x] 表示输入的参数值。比如args[0]表示第一个参数。 .[x] 当正在被解析的对象是Array或List,你可以用这个表达式得到对应index上的对象。 .['key'] 当正在被解析的对象是Map, 你可以用这个表达式得到map的key。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论