SkyWalking Go Agent 快速开始指南
本文演示如何将应用程序与 SkyWalking Go 集成,并在 SkyWalking UI 中查看结果。
以前,如果你想要在 SkyWalking 中监控 Golang 应用程序,需要将项目与 go2sky 项目集成,并手动编写各种带有 go2sky 插件的框架。现在,我们有一个全新的项目(Skywalking Go ),允许你将 Golang 项目集成到 SkyWalking 中,几乎不需要编码,同时提供更大的灵活性和可扩展性。
在本文中,我们将指导你快速将 skywalking-go 项目集成到 Golang 项目中。
演示包括以下步骤:
- 部署 SkyWalking:这涉及设置 SkyWalking 后端和 UI 程序,使你能够看到最终效果。
- 使用 SkyWalking Go 编译 Golang:在这里,你将把 SkyWalking Go Agent 编译到要监控的 Golang 程序中。
- 应用部署:你将导出环境变量并部署应用程序,以促进你的服务与 SkyWalking 后端之间的通信。
- 在 SkyWalking UI 上可视化:最后,你将发送请求并在 SkyWalking UI 中观察效果。
部署 SkyWalking
请从官方 SkyWalking 网站下载 SkyWalking APM 程序 。然后执行以下两个命令来启动服务:
# 启动 OAP 后端
> bin/oapService.sh
# 启动 UI
> bin/webappService.sh
接下来,你可以访问地址 http://localhost:8080/
。此时,由于尚未部署任何应用程序,因此你将看不到任何数据。
使用 SkyWalking GO 编译 Golang
这里有一个简单的业务应用程序,启动了一个 HTTP 服务。
package main
import "net/http"
func main() {
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("Hello World"))
})
err := http.ListenAndServe(":8000", nil)
if err != nil {
panic(err)
}
}
在项目的根目录中执行以下命令。此命令将下载 skywalking-go 所需的依赖项:
go get github.com/apache/skywalking-go
接下来,请将其包含在项目的 main
包中。包含之后,代码将会更新为:
package main
import (
"net/http"
_ "github.com/apache/skywalking-go"
)
func main() {
http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
writer.Write([]byte("Hello World"))
})
err := http.ListenAndServe(":8000", nil)
if err != nil {
panic(err)
}
}
接下来,请从官方 SkyWalking 网站下载 Go Agent 程序 。当你使用 go build
命令进行编译时,请在 bin 目录中找到与当前操作系统匹配的代理程序,并添加 -toolexec="/path/to/go-agent" -a
参数。例如,请使用以下命令:
go build -toolexec="/path/to/go-agent" -a -o test .
应用部署
在开始部署应用程序之前,你可以通过环境变量更改 SkyWalking 中当前应用程序的服务名称。你还可以更改其配置,例如服务器端的地址。有关详细信息,请参阅文档 。
在这里,我们只是将当前服务的名称更改为 demo
。
接下来,你可以启动应用程序:
export SW_AGENT_NAME=demo
./test
在 SkyWalking UI 上可视化
现在,向应用程序发送请求并在 SkyWalking UI 中观察结果。
几秒钟后,重新访问 http://localhost:8080
的 SkyWalking UI。能够在主页上看到部署的 demo
服务。
此外,在追踪页面上,可以看到刚刚发送的请求。
总结
在本文中,我们指导你快速开发 demo
服务,并将其与 SkyWalking Go Agent 集成。这个过程也适用于你自己的 Golang 服务。最终,可以在 SkyWalking 服务中查看显示效果。如果你有兴趣了解 SkyWalking Go 代理当前支持的框架,请参阅此文档 。
将来,我们将继续扩展 SkyWalking Go 的功能,添加更多插件支持。所以,请继续关注!