OpenTelemetry Go Auto Instrumentation

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

快速开始


安装

通过 Bash 安装

对于 Linux 和 MacOS 用户,运行以下命令即可安装该工具

Terminal window
$ sudo curl -fsSL https://cdn.jsdelivr.net/gh/alibaba/opentelemetry-go-auto-instrumentation@main/install.sh | sudo bash

默认情况下,它将安装在 /usr/local/bin/otel中。

预编译二进制文件

请从RELEASE页面下载最新的预编译版本。

从源代码编译

通过运行以下命令查看源代码并构建工具:

Terminal window
$ make # build only
$ make install # build and install

开始

首先通过以下命令检查agent的版本:

Terminal window
$ otel version

go build 中添加 otel 前缀,以构建项目:

Terminal window
$ otel set -verbose # print verbose logs
$ otel set -log=/path/to/file.log # set log file
$ otel set -debug # enable debug mode
$ otel set -debug -verbose -rule=custom.json # set multiple configs
$ otel set -disabledefault -rule=custom.json # disable default rules, use custom rules only
$ otel set -rule=custom.json # use default and custom rules
$ otel set -rule=a.json,b.json # use default, a and b rules

工具本身的参数应放在 go build 之前:

Terminal window
$ otel go build
$ otel go build -o app cmd/app
$ otel go build -gcflags="-m" cmd/app

更详细的有关otel工具的用法可以参考文档

注意
如果你发现任何编译失败,而 go build 却能正常工作,这很可能是一个 bug。
请随时在
请随时在 GitHub Issues
以帮助我们改进本项目。

示例

你可以通过如下示例来尝试快速上手本项目,这些示例旨在全面介绍如何在不同场景中使用该工具。

此外,还有一些文档,您可能会发现它们对了解项目或为项目做出贡献非常有用。

支持的库

插件名称存储库网址最低支持版本最高支持版本
database/sqlhttps://pkg.go.dev/database/sql--
echohttps://github.com/labstack/echov4.0.0v4.12.0
elasticsearchhttps://github.com/elastic/go-elasticsearchv8.4.0v8.15.0
fasthttphttps://github.com/valyala/fasthttpv1.45.0v1.57.0
fiberhttps://github.com/gofiber/fiberv2.43.0v2.52.5
ginhttps://github.com/gin-gonic/ginv1.7.0v1.10.0
gorestfulhttps://github.com/emicklei/go-restfulv3.7.0v3.12.1
go-redishttps://github.com/redis/go-redisv9.0.5v9.5.1
go-redis v8https://github.com/redis/go-redisv8.11.0v8.11.5
gormhttps://github.com/go-gorm/gormv1.22.0v1.25.9
grpchttps://google.golang.org/grpcv1.44.0v1.68.2
hertzhttps://github.com/cloudwego/hertzv0.8.0v0.9.2
kitexhttps://github.com/cloudwego/kitexv0.5.1v0.11.3
kratoshttps://github.com/go-kratos/kratosv2.6.3v2.8.2
loghttps://pkg.go.dev/log--
logrushttps://github.com/sirupsen/logrusv1.5.0v1.9.3
mongodbhttps://github.com/mongodb/mongo-go-driverv1.11.1v1.15.2
muxhttps://github.com/gorilla/muxv1.3.0v1.8.1
nacoshttps://github.com/nacos-group/nacos-sdk-go/v2v2.0.0v2.2.7
net/httphttps://pkg.go.dev/net/http--
redigohttps://github.com/gomodule/redigov1.9.0v1.9.2
sloghttps://pkg.go.dev/log/slog--
zaphttps://github.com/uber-go/zapv1.20.0v1.27.0
zerologhttps://github.com/rs/zerologv1.10.0v1.33.0
irishttps://github.com/kataras/irisv12.2.0v12.2.11
gomicrohttps://github.com/micro/go-microv5.0.0v5.3.0

我们正在逐步开源我们支持的库,非常欢迎您的贡献💖!

重要事项
您期望的框架不在列表中?别担心,你可以轻松地将代码注入到任何官方不支持的框架/库中。

请参考 this document 开始使用。

社区

我们期待您的反馈和建议。您可以加入我们的 DingTalk 群组
与我们交流。


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