- 欢迎使用 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 代码提交者
- 如何构建项目
- 新度量指标的源和范围扩展
- 后端存储实体扩展
- 线程转储归并机制
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
应用程序工具包跟踪
- 使用maven或gradle引入toolkit依赖。
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>${skywalking.version}</version>
</dependency>
- 使用
TraceContext.traceId()
API得到traceId
import TraceContext;
...
modelAndView.addObject("traceId", TraceContext.traceId());
仅为示例代码
在你想追踪的方法上添加
@Trace
注解。添加后,你就可以在方法调用栈中查看到span的信息。如果标签处没有有效跨度,则用@Tag注释的方法将尝试使用给定键(
Tag#key()
)和(Tag#value()
)标记当前有效跨度。 若有,此注释不起作用。可以重复使用@Tag,并且可以与@Trace结合使用,请参见下面的示例。 “标签”的“值”与自定义增强跟踪中支持的值相同。在跟踪方法的上下文中添加自定义标签,
ActiveSpan.tag("key", "val")
.ActiveSpan.error()
将当前跨度标记为错误状态。ActiveSpan.error(String errorMsg)
将当前跨度标记为错误状态,并设置错误消息提示。ActiveSpan.error(Throwable throwable)
将当前跨度标记为错误状态,并抛出Throwable异常。ActiveSpan.debug(String debugMsg)
在当前范围中添加调试级别日志消息。ActiveSpan.info(String infoMsg)
在当前范围中添加信息级别日志消息。ActiveSpan.setOperationName(String operationName)
自定义操作名称。
ActiveSpan.tag("my_tag", "my_value");
ActiveSpan.error();
ActiveSpan.error("Test-Error-Reason");
ActiveSpan.error(new RuntimeException("Test-Error-Throwable"));
ActiveSpan.info("Test-Info-Msg");
ActiveSpan.debug("Test-debug-Msg");
/**
* The codes below will generate a span,
* and two types of tags,
one type tag: keys are `tag1` and `tag2`, values are the passed-in parameters, respectively,
the other type tag: keys are `username` and `age`, values are the return value in User, respectively
*/
@Trace
@Tag(key = "tag1", value = "arg[0]")
@Tag(key = "tag2", value = "arg[1]")
@Tag(key = "username", value = "returnedObj.username")
@Tag(key = "age", value = "returnedObj.age")
public User methodYouWantToTrace(String param1, String param2) {
// ActiveSpan.setOperationName("Customize your own operation name, if this is an entry span, this would be an endpoint name");
// ...
}
- 使用
TraceContext.putCorrelation()
API将自定义数据放入跟踪上下文。
Optional<String> previous = TraceContext.putCorrelation("customKey", "customValue");
当值为null
或为空时,CorrelationContext将删除该项目。
- 使用
TraceContext.getCorrelation()
获取自定义数据的API。
Optional<String> value = TraceContext.getCorrelation("customKey");
可以在代理配置文件中找到CorrelationContext配置描述,前缀为correlation.
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论