SkyWalking Go Agent 快速开始指南

2,427 阅读3分钟

本文演示如何将应用程序与 SkyWalking Go 集成,并在 SkyWalking UI 中查看结果。

By 刘晗 | Thursday, June 01, 2023

本文演示如何将应用程序与 SkyWalking Go 集成,并在 SkyWalking UI 中查看结果。

以前,如果你想要在 SkyWalking 中监控 Golang 应用程序,需要将项目与 go2sky 项目集成,并手动编写各种带有 go2sky 插件的框架。现在,我们有一个全新的项目(Skywalking Go),允许你将 Golang 项目集成到 SkyWalking 中,几乎不需要编码,同时提供更大的灵活性和可扩展性。

在本文中,我们将指导你快速将 skywalking-go 项目集成到 Golang 项目中。

演示包括以下步骤:

  1. 部署 SkyWalking:这涉及设置 SkyWalking 后端和 UI 程序,使你能够看到最终效果。
  2. 使用 SkyWalking Go 编译 Golang:在这里,你将把 SkyWalking Go Agent 编译到要监控的 Golang 程序中。
  3. 应用部署:你将导出环境变量并部署应用程序,以促进你的服务与 SkyWalking 后端之间的通信。
  4. 在 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 的功能,添加更多插件支持。所以,请继续关注!