03.SkyWalking链路追踪选型对比及部署说明,适用于首次部署安装该系统

您所在的位置:网站首页 sleuth和skywalking 03.SkyWalking链路追踪选型对比及部署说明,适用于首次部署安装该系统

03.SkyWalking链路追踪选型对比及部署说明,适用于首次部署安装该系统

2024-06-20 15:14| 来源: 网络整理| 查看: 265

SkyWalking链路追踪 1.修订记录 日期修订版本修订描述作者审核者2022-02-17v1.0.0文档内容新建,编辑初稿云上凯歌 2.使用场景

SkyWalking链路追踪选型对比及部署说明,适用于首次部署安装该系统

3.选型对比 Sleuth+ZipkinSkyWalking链路追踪可视化有有聚合报表很少丰富服务依赖图简单依赖图展示形象直观监控买点方式侵入式,需要修改源码无侵入,采用Java Agent字节码增强Java VM指标监控不具备具备支持报警不支持有,可以自定义报警方式存储机制内存、Mysql、ES…ES、Mysql、H2…文档支持文档丰富,国外主流Apache支持,国内文档更新滞后国内案例京东、阿里定制但不开源…华为、小米、当地、微众银行…

通过比较我们可以发现,在易用性和使用体验上,SkyWalking 明显好于 Zipkin,功能更丰富的同时也更符合国人习惯

4.实体机部署SkyWalking 4.1 下载安装包

官网地址:https://skywalking.apache.org/downloads/

在这里插入图片描述

4.2 解压 4.3 修改配置

Elasticsearch的安装此处忽略

配置使用elasticsearch7,注意nameSpace要与elasticsearch的配置名字一致

# vim /usr/local/apache-skywalking-apm-bin/config/application.yml storage: selector: elasticsearch elasticsearch: nameSpace: ${SW_NAMESPACE:"与elasticsearch的配置名字一致"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}

当前不使用Elasticsearch也行,SkyWalking默认使用H2

4.4 修改端口号 # vim /usr/local/apache-skywalking-apm-bin/webapp/webapp.yml server: port: 8080 4.5 启动

如果配置了Elasticsearch,请保证已成功启动Elasticsearch

/usr/local/apache-skywalking-apm-bin/bin/startup.sh 启动后会产生两个 Java 进程: Skywalking-Collector 是数据收集服务,默认监听 11800(gRPC)与 12800(HTTP) 端口。 Skywalking-Webapp 是 SkyWalking UI,用于展示数据,默认监听 8080 端口。

访问:http://服务器IP:8080/ 如果看到SkyWalking UI 首页,则说明服务端配置成功。

5.容器化部署SkyWalking 5.1 启动Skywalking Server 默认使用H2存储,直接启动skywalking即可 sudo docker run --name oap -d -p 1234:1234 -p 11800:11800 -p 12800:12800 --restart always apache/skywalking-oap-server

如果使用elasticsearch存储

说明:使用最新版本的elasticsearch和skywalking-oap-server镜像,启动会有问题。

因此,必须指定一下版本才可以。

则需要先安装elasticsearch

docker run -d --name=es7 \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" elasticsearch:7.5.1

安装 ElasticSearch管理界面elasticsearch-hq

sudo docker run -d --name elastic-hq -p 5000:5000 --restart always elastichq/elasticsearch-hq

启动skywalking

docker run --name oap --restart always -d \ --restart=always \ -e TZ=Asia/Shanghai \ -p 12800:12800 \ -p 11800:11800 \ --link es7:es7 \ -e SW_STORAGE=elasticsearch \ -e SW_STORAGE_ES_CLUSTER_NODES=es7:9200 \ apache/skywalking-oap-server:6.6.0-es7

2 Skywalking管理系统

启动管理系统:

docker run -d --name skywalking-ui \ --restart=always \ -e TZ=Asia/Shanghai \ -p 8080:8080 \ --link oap:oap \ -e SW_OAP_ADDRESS=oap:12800 \ apache/skywalking-ui:6.6.0

访问:http://服务器IP:8080/ 如果看到SkyWalking UI 首页,则说明服务端配置成功。

6.监控java程序 6.1 实体机监控

下载源码包:

https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz

启动服务脚本:

java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxxtest -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar /opt/spring-boot-demo-0.0.1-SNAPSHOT.jar

说明:

-javaagent 指定agent包位置。这里我将apache-skywalking-apm-6.6.0.tar.gz解压到/opt目录了,因此路径为:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar

-Dskywalking.agent.service_name 指定服务名

-Dskywalking.collector.backend_service 指定skywalking oap地址,由于在本机,地址为:127.0.0.1:11800

-jar 指定jar包的路径,这里我直接放到/opt/目录了。

6.2 容器化监控

在agent镜像基础上构建服务镜像:

FROM apache/skywalking-java-agent:6.6.0-jdk8 # ... build your java application 7.监控Python程序 7.1 通过pip安装 # Install the latest version, using the default gRPC protocol to report data to OAP pip install "apache-skywalking" # Install the latest version, using the http protocol to report data to OAP pip install "apache-skywalking[http]" # Install the latest version, using the kafka protocol to report data to OAP pip install "apache-skywalking[kafka]" # Install a specific version x.y.z # pip install apache-skywalking==x.y.z pip install apache-skywalking==0.1.0 # For example, install version 0.1.0 no matter what the latest version is 7.2 设置Python代理

需要 SkyWalking 8.0+ 和 Python 3.5+

非侵入式(CLI)

​ 运行脚本 sw-python:

sw-python run python abc.py 或者 sw-python run program arg0 arg1

通过gRPC协议(默认)

配置collector_address (或环境变量SW_AGENT_COLLECTOR_BACKEND_SERVICES)到:11800,如127.0.0.1:11800:

from skywalking import agent, config config.init(collector_address='127.0.0.1:11800', service_name='yourService') agent.start()

通过HTTP协议报告数据

配置collector_address (或环境变量SW_AGENT_COLLECTOR_BACKEND_SERVICES)到:12800,例如127.0.0.1:12800:

​ 注意:需安装 pip install “apache-skywalking[http]”

from skywalking import agent, config config.init(collector_address='127.0.0.1:12800', service_name='yourService') agent.start() 8.监控Go程序 8.1 所需环境 名称链接描述go2skyhttps://github.com/SkyAPM/go2skygo agentgo2sky-pluginshttps://github.com/SkyAPM/go2sky-pluginstrace接入插件

go框架:gin 安装命令:

go get -u github.com/SkyAPM/go2sky go get -u github.com/SkyAPM/go2sky-plugins/gin/v3 8.2 代码集成

包引入:

import ( "github.com/SkyAPM/go2sky" "github.com/SkyAPM/go2sky/reporter" "github.com/gin-gonic/gin" v3 "github.com/SkyAPM/go2sky-plugins/gin/v3" )

gin中使用:

r := gin.New() //skywalking rp, err := reporter.NewGRPCReporter("192.168.99.12:11800", reporter.WithCheckInterval(time.Second)) if err != nil{ logging.Info("create gosky reporter failed!") } tracer, err := go2sky.NewTracer("test-demo", go2sky.WithReporter(rp)) #使用go2sky-plugins的middleware,就不用我们自己写span了,插件帮我们完成 r.Use(v3.Middleware(r, tracer)) gin.SetMode(setting.ServerSetting.RunMode)

插件span的处理:

func Middleware(engine *gin.Engine, tracer *go2sky.Tracer) gin.HandlerFunc { # 需要使用上层创建的tracer if engine == nil || tracer == nil { return func(c *gin.Context) { c.Next() } } return func(c *gin.Context) { # 创建span,这里使用的是EntrySpan span, ctx, err := tracer.CreateEntrySpan(c.Request.Context(), getOperationName(c), func(key string) (string, error) { return c.Request.Header.Get(key), nil }) if err != nil { c.Next() return } span.SetComponent(componentIDGINHttpServer) span.Tag(go2sky.TagHTTPMethod, c.Request.Method) span.Tag(go2sky.TagURL, c.Request.Host+c.Request.URL.Path) span.SetSpanLayer(agentv3.SpanLayer_Http) c.Request = c.Request.WithContext(ctx) #gin中请求继续执行 c.Next() if len(c.Errors) > 0 { span.Error(time.Now(), c.Errors.String()) } #结束span span.Tag(go2sky.TagStatusCode, strconv.Itoa(c.Writer.Status())) span.End() } } 9. 监控PHP程序 9.1 编译扩展 // install php extension git clone --recurse-submodules https://github.com/SkywalkingContrib/skywalking-php-sdk.git cd skywalking-php-sdk phpize && ./configure && make && make install // install report_client cd src/report make cp report_client /usr/bin 9.2 配置扩展 ; 添加扩展 extension=skywalking.so ; 开启收集器 skywalking.enable = 1 ; 设置skyWalking服务版本 默认为5 skywalking.version = 5 ; 设置应用名称 skywalking.app_code = MyProjectName ; 设置skyWalking服务地址 skywalking.grpc = 127.0.0.1:11800 ; 设置日志路径,默认 tmp skywalking.log_path = /tmp 9.3 启动上报程序 // report_client [SkyWalking服务grpc地址] [日志文件路径] // 例如 report_client 120.0.0.1:11800 /tmp


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3