OpenTelemetry Go Auto Instrumentation

414
下载
opentelemetry-go-auto-instrumentation 是阿里巴巴开源的基于OpenTelemetry规范的Golang应用无侵入编译时注入监控方案,可以在用户完全不修改业务代码的情况下对用户的Golang应用进行监控。

如何debug本项目


如何debug本项目

opentelemetry-go-auto-instrumentation 提供了一些方便用户混合插桩二进制程序的方法。

1. 进行混合编译前设置-debug选项

$ ./otel set -debug

使用 -debug 编译选项时,工具将编译未优化的二进制文件,同时保留所有生成的临时文件,如 otel_rules。你可以查看这些文件,了解工具注入了哪些代码。

2. 查看<font style="color:rgb(31, 35, 40);">.otel-build</font>目录

即使不使用 -debug 选项,该工具也会在 <font style="color:rgb(31, 35, 40);">.otel-build</font> 中保留必要的修改文件副本,其结构如下:

.otel-build
├── instrument
│ ├── baggage
│ │ ├── otel_inst_file_context.go
│ │ ├── otel_inst_file_ot_baggage_linker.go
│ │ └── otel_inst_file_ot_baggage_util.go
│ ├── grpc
│ │ ├── clientconn.go
│ │ ├── otel_trampoline.go
│ │ └── server.go
│ ├── http
│ │ ├── otel_trampoline.go
│ │ ├── roundtrip.go
│ │ └── server.go
│ ├── log
│ │ ├── log.go
│ │ └── otel_trampoline.go
│ ├── otel
│ │ └── otel_inst_file_trace.go
│ ├── runtime
│ │ ├── otel_inst_file_runtime_linker.go
│ │ ├── otel_trampoline.go
│ │ ├── proc.go
│ │ └── runtime2.go
│ ├── slog
│ │ ├── logger.go
│ │ └── otel_trampoline.go
│ └── trace
│ ├── otel_inst_file_ot_trace_context.go
│ ├── otel_inst_file_ot_trace_context_linker.go
│ ├── otel_inst_file_span.go
│ └── otel_inst_file_tracer.go
└── preprocess
├── backups
│ ├── app2.go.bk
│ ├── go.mod.bk
│ └── go.sum.bk
├── dry_run.log
├── otel_rules
│ ├── grpc72047
│ │ ├── ...
│ ├── http02075
│ │ ├── client_setup.go
│ │ ├── ...
│ ├── log09344
│ │ └── setup.go
│ ├── otel_setup_inst.go
│ ├── otel_setup_sdk.go
│ └── slog54146
│ └── setup.go
├── otel_user
│ ├── app2.go
│ ├── go.mod
│ └── go.sum
├── rule_bundle.json
└── rule_cache
└── ...

术语 “预处理 ”和 “代码插桩 ”代表在两个不同阶段生成的文件。有关这两个阶段的信息,请参阅本文档。例如,instrument/grpc/clientconn.go 表示代码注入后的 clientconn.go 文件。 rule_bundle.json 包含匹配的规则,几乎所有与调试相关的重要文件都将保留在此目录中。

3. 使用delve来进行debug

在混合编译过程中,使用 -debug 选项不会进行任何优化。用户可以使用 delve 轻松调试二进制文件。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32