# 使用插桩库

LLMS index: [llms.txt](/llms.txt)

---


当你开发应用时，可能会使用第三方库和框架来加快开发进度。如果你随后使用 OpenTelemetry
对应用进行插桩，你可能希望避免额外花时间为所用的第三方库和框架手动添加链路、日志和指标。

许多库和框架已经原生支持 OpenTelemetry，或者通过 OpenTelemetry
的[插桩](/docs/concepts/instrumentation/libraries/)获得支持，
因此它们能够生成可导出到可观测性后端的遥测数据。

如果你正在为使用第三方库或框架的应用或服务进行插桩，
请按照以下说明学习如何为你的依赖项使用原生插桩库和插桩库。

## 使用原生插桩库 {#use-natively-instrumented-libraries}

如果某个库默认就支持 OpenTelemetry，你只需在应用中添加并配置 OpenTelemetry SDK，
就可以获取该库发出的链路、指标和日志。

该库可能需要一些额外的插桩配置。请查阅该库的文档以了解更多信息。
{{__hugo_ctx/}}






<div class="alert alert-secondary" role="alert"><div class="h4 alert-heading" role="heading">需要帮助！</div>



截至目前，我们还不知道有任何 Go 库已原生集成 OpenTelemetry。
如果你知道这样的库，[请告诉我们][let us know]。

</div>






[let us know]: https://github.com/open-telemetry/opentelemetry.io/issues/new/choose
{{__hugo_ctx/}}



## 使用插桩库{#use-instrumentation-libraries}

如果某个库本身没有集成 OpenTelemetry，你可以使用
[插桩库（instrumentation libraries）](/docs/specs/otel/glossary/#instrumentation-library)
为这个库或者框架生成遥测数据。

例如，
[`net/http` 的插桩库](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp)
会基于 HTTP 请求自动创建 [span](/docs/concepts/signals/traces/#spans) 和
[metrics](/docs/concepts/signals/metrics/)。

## 安装{#setup}

每个插桩库是一个独立的 Go 包。通常你需要使用 `go get` 获取相应的包。例如，如果要安装由
[Contrib repository](https://github.com/open-telemetry/opentelemetry-go-contrib)
维护的插桩库，可以运行以下命令：

```sh
go get go.opentelemetry.io/contrib/instrumentation/{import-path}/otel{package-name}
```

然后根据库的要求在代码中配置它。

[Getting Started](../getting-started/) 中展示了如何为一个 `net/http` 服务器设置插桩。

## 可用插桩库{#available-packages}

完整的可用插桩库列表见
[OpenTelemetry 支持库列表](/ecosystem/registry/?language=go&component=instrumentation).

## 后续步骤{#next-steps}

插桩库可以生成入站和出站 HTTP 请求的遥测数据，但不会对你的实际应用程序进行插桩。

你可以通过在代码中集成[自定义插桩](../instrumentation/)来丰富你的遥测数据。
这补充了标准库生成的遥测数据，并且可以让你更深入地了解正在运行的应用程序。
