当前位置: 首页 > news >正文

go-zero接入skywalking链路追踪

文章目录

  • Skywalking本地测试搭建
  • 项目引入
  • dockerfile打包引入
  • 最后效果图

Skywalking本地测试搭建

这里用Docker搭建

#数据存储用ES,搭建ES
docker run -d -p 9200:9200 -p 9300:9300 --name es -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx256m" elasticsearch:7.16.3# 搭建skywalking-oap服务,这里用的是8.9.1版本,oap服务需要关联ES
docker run --name skywalking-oap \
--restart always \
-p 11800:11800 -p 12800:12800 -d \
-e TZ=Asia/Shanghai \
-e SW_ES_USER= \
-e SW_ES_PASSWORD= \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.1.234:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:8.9.1# 搭建skywalking-ui界面,需要关联oap服务
docker run -d \
--name skywalking-ui \
--restart always \
-p 8090:8080 \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.9.1

搭建完成,打开ip:8090查看skywalking界面
在这里插入图片描述

项目引入

go get github.com/apache/skywalking-go//在main包中引入
import (_ "github.com/apache/skywalking-go"
)

接下来,请从官方 SkyWalking 网站下载Go Agent 程序 。当你使用 go build 命令进行编译时,请在 bin 目录中找到与当前操作系统匹配的代理程序,并添加 -toolexec=“/path/to/go-agent” -a 参数。例如,请使用以下命令:

go build -toolexec=“/path/to/go-agent” -a -o test .

在skywalking-go/bin路径下生成可执行文件。
不同的操作系统对应的可执行文件不同。例如,mac系统需选择skywalking-go-agent–darwin-amd64。(亲测相应文件在window系统执行会报错,在linux和mac系统正常)
在这里插入图片描述

dockerfile打包引入

相应的Agent程序skywalking-go-agent放在项目./doc/tool/目录下,并设置环境变量,具体看dockerfile

ENV SW_AGENT_NAME=go-${param}
ENV SW_AGENT_REPORTER_GRPC_BACKEND_SERVICE=skywalking-oap.skywalking.svc.cluster.local:11800
ENV SW_AGENT_REPORTER_GRPC_CDS_FETCH_INTERVAL=-1
FROM golang:1.22-alpine AS builderLABEL stage=gobuilderENV GOPROXY https://goproxy.cn,direct
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesRUN apk update --no-cache && apk add --no-cache tzdata# 设置工作目录
WORKDIR /build# 加载依赖
ADD go.mod .
ADD go.sum .
RUN go mod download# 复制源代码
COPY . .# 静态编译Go程序
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -toolexec="/build/doc/tool/skywalking-go-agent" -a -o app ./service/${struct_name}Service/${param}.go# 第二阶段:运行时镜像,使用空镜像scratch或者alpine
FROM alpineCOPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt# 设置工作目录
WORKDIR /app# 复制编译好的二进制文件到运行时镜像
COPY --from=builder /build/app .
COPY --from=builder /build/i18n /app/i18n
COPY --from=builder /build/key/google_play_service_account_key.json /etc/ssl/certs/google_play_service_account_key.json
COPY --from=builder /build/key/SubscriptionKey_23HSTRGFC3.p8 /etc/ssl/certs/SubscriptionKey_23HSTRGFC3.p8# 设置 SkyWalking Agent 的配置
ENV SW_AGENT_NAME=go-${param}
ENV SW_AGENT_REPORTER_GRPC_BACKEND_SERVICE=skywalking-oap.skywalking.svc.cluster.local:11800
ENV SW_AGENT_REPORTER_GRPC_CDS_FETCH_INTERVAL=-1# 运行程序
ENTRYPOINT ["./app"]
# 设置CMD指令来指定参数,默认测试环境的etcd
CMD ["16.162.220.93:2379"]

最后效果图

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言高手参考手册:函数进阶技巧
  • C++基础面试题 | C++中值传递和引用传递的区别?
  • 基于Kotlin Multiplatform的鸿蒙跨平台开发实践
  • Leetcode 2760.最长奇偶子数组
  • Linux:Linux多线程
  • 前端打字效果
  • 基于langchain的prompt指令代码编写
  • 为什么企业跨国组网建议用SD-WAN?
  • 10分钟搞懂,Python接口自动化测试-接口依赖-实战教程
  • keepalived与lvs
  • 每日一问:深入理解C++中的访问控制机制——private、protected和public
  • Unified 阻抗控制 architecture、framework、approach
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • golang(go语言)打包成带图标的 exe 可执行文件
  • WPS宏实现Sheet页拆分功能
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • CSS 专业技巧
  • emacs初体验
  • ES6系列(二)变量的解构赋值
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java程序员幽默爆笑锦集
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP 的 SAPI 是个什么东西
  • ReactNativeweexDeviceOne对比
  • tensorflow学习笔记3——MNIST应用篇
  • 猴子数据域名防封接口降低小说被封的风险
  • 理清楚Vue的结构
  • 扑朔迷离的属性和特性【彻底弄清】
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • mysql面试题分组并合并列
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​Linux·i2c驱动架构​
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #php的pecl工具#
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (70min)字节暑假实习二面(已挂)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (day 12)JavaScript学习笔记(数组3)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (LeetCode C++)盛最多水的容器
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (生成器)yield与(迭代器)generator
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)详解PHP处理密码的几种方式
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • ../depcomp: line 571: exec: g++: not found
  • .NET CF命令行调试器MDbg入门(三) 进程控制