• SpringCloud - Spring Cloud Alibaba 之 Skywalking 分布式链路跟踪;下载安装,应用(十二)


    随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络

    对于一个由几十个、甚至几百个大型微服务构成的微服务架构系统,通常会遇到下面一些问题,如:

    1、一个请求调用其中一个服务失败,如何定位问题?

    2、:如何计算每个节点访问流量?

    3、流量波动的时候,增加哪些节点集群服务?

    为了解决分布式应用、微服务系统面临的这些挑战,APM系统(Application Performance Management,即应用性能管理,简单来说就是应用监控)营运而生

    一、Skywalking

    Skywalking 是一个国产的开源框架,2015年由吴晟个人开源(国人开源的产品,主要开发人员来自于华为),2017年加入Apache孵化器,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃

    Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪、服务网格遥测分析、性能指标分析、服务依赖分析、度量聚合和可视化一体化解决方案等

    官网:Apache SkyWalking

    下载:Downloads | Apache SkyWalking

    Github:GitHub - apache/skywalking: APM, Application Performance Monitoring System

    使用公司:(国内非常多)

    https://github.com/apache/skywalking/blob/master/docs/powered-by.md

    链路追踪

    谷歌在 2010 年 4 月发表了一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》介绍了分布式追踪的概念,之后很多互联网公司都开始根据这篇论文打造自己的分布式链路追踪系统。APM 系统的核心技术就是分布式链路追踪。

    论文在线地址:https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36356.pdf

    国内的翻译版:https://bigbully.github.io/Dapper-translation/

    1、Skywalking主要功能特性

    1、多种监控手段,可以通过语言探针和service mesh获得监控的数据;

    2、支持多种语言自动探针,包括 Java,.NET Core 和 Node.JS;

    3、轻量高效,无需大数据平台和大量的服务器资源;

    4、模块化,UI、存储、集群管理都有多种机制可选;

    5、支持告警;

    6、优秀的可视化解决方案

    2、分布式链路追踪技术成熟产品

    分布式链路追踪技术已然成熟,产品也不少,国内外都有,如:

    1、Spring Cloud Sleuth + Twitter Zipkin

    Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。

    2、阿里巴巴的“鹰眼”EagleEye

    3、大众点评的“CAT”

    CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。

    4、美团的“Mtrace”

    5、京东的“Hydra”

    6、新浪的“Watchman”

    7、SkyWalking

    SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。

    二、Skywalking 架构

    整个架构分成四部分:

    1、上部分Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器

    2、下部分 SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能

    3、右部分Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES,主要考虑是SkyWalking开发团队自己的生产环境采用ES为主

    4、左部分SkyWalking UI:负责提供控台,查看链路等等

    三、Skywalking 下载安装部署

    注:

    数据存储默认使用 H2 数据库存储

    /xx/apache-skywalking-apm-bin/config/application.yml 文件

    1、下载 SkyWalking 软件包 

     下载:Downloads | Apache SkyWalking 

    点击右侧的Distribution选择想要的版本进行下载,如果这里没有你想要的版本,可以将页面下拉 ,选择 Archive repository

     

    Skywalking 在 8.8.0版本以后将agent单独拆分了出来,所以若要使用8.8.0版本以后的,需要下载apm和agent两个压缩包

    下载 Agent 压缩包

    解压缩

     tar -zxvf apache-skywalking-java-agent-8.8.0.tgz -C /opt/software/

    切换到 目录下查看

    cd skywalking-agent/

    apm 和 agent 分别安装路径

    2、搭建一个 SkyWalking OAP 和SkyWalking UI服务 

    (1)将 apache-skywalking-apm-8.8.1.tar 上传到 Linux系统上的 /opt/software 目录下

    (2)解压

    tar -zxvf apache-skywalking-apm-8.8.1.tar.gz -C /opt/software/

    (3) 切换:cd apache-skywalking-apm-bin ,目录如下

    目录说明:

    agent                #SkyWalking Agent;Skywalking 在 8.8.0版本以后将agent单独拆分了出来

    bin                    #执行脚本

    config               #SkyWalking OAP Server 配置文件

    LICENSE

    licenses

    NOTICE

    oap-libs            #SkyWalking OAP Server

    README.txt

    tools

    webapp            #SkyWalking UI

    3、启动一个Spring Boot应用,并配置SkyWalking Agent

    (1)切换到 bin 目录

    (2) 启动 ./startup.sh  sh startup.sh

    启动后会启动两个服务,一个是 skywalking-oap-server,一个是 skywalking-web-ui

    查看安装目录下的 ./logs/skywalking-oap-server.log 下的日志文件,检查两个服务的日志文件是否启动成功

    skywalking-oap-server服务启动后会占用:11800 和 12800 两个端口

    tail -f logs/skywalking-oap-server.log 

    skywalking-web-ui服务会占用 8080 端口;

      

    如果想要修改SkyWalking UI服务的参数,可以编辑webapp/webapp.yml 配置文件,如:

    server.port:SkyWalking UI服务端口,默认是8080;

    collector.ribbon.listOfServers:SkyWalking OAP服务地址数组,SkyWalking UI界面的数据是通过请求SkyWalking OAP服务来获得

    4、访问SkyWalking UI界面:http://192.168.133.128:8080/,默认端口为8080

    页面的右下角可以中英文切换,可以切换选择要展示的时间区间的跟踪数据

    四、SkyWalking Agent跟踪微服务

    1、jar包

    1、编写一个springboot 项目,打成jar包

    2、上传到Linux服务器上

    3、编写启动脚本,命名 skywalking-agent.sh

    注:

    Skywalking 在 8.8.0版本以后将agent单独拆分了出来,所以若要使用8.8.0版本以后的,需要下载apm和agent两个压缩包

    博主分别安装 apm 和 agent 路径

     启动脚本

    在启动程序前加一个 -javaagent 参数即可完成对程序的跟踪

    1. #!/bin/sh
    2. # SkyWalking Agent配置;Skywalking 在 8.8.0版本以后将agent单独拆分了出来
    3. export SW_AGENT_NAME=springboot-2-hello #Agent名字,一般使用`spring.application.name`
    4. export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址
    5. export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300
    6. export JAVA_AGENT=-javaagent:/opt/software/skywalking-agent/skywalking-agent.jar #/opt/software/apache-skywalking-apm-bin/agent/skywalking-agent.jar
    7. java $JAVA_AGENT -jar springboot-2-hello.jar #jar启动

     4、执行启动脚本

    sh skywalking-agent.sh
    1. [root@eureka8761 app]# sh skywalking-agent.sh
    2. DEBUG 2022-07-26 13:53:18:461 main AgentPackagePath : The beacon class location is jar:file:/opt/software/skywalking-agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
    3. INFO 2022-07-26 13:53:18:463 main SnifferConfigInitializer : Config file found in /opt/software/skywalking-agent/config/agent.config.

     启动成功

    5、浏览器输入访问,http://192.168.133.129:8081/springboot-2-hello/index.jsp

    查看SkyWalking-UI控制台

    2、war包

    1、编写一个springboot 项目,打成war包

    2、上传到Linux服务器上

    3、修改/xx/apache-tomcat-xx/bin/catalina.sh 文件,在顶部第一行加上:

    1. CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/software/skywalking-agent/skywalking-agent.jar";
    2. export CATALINA_OPTS;

    注:

    (1)根据自身 安装 skywalking-agent.jar 路径配置 

    (2)如果tomcat端口与skywalking ui端口冲突的话,修改一下tomcat端口

    4、启动Tomcat

    5、 查看SkyWalking-UI控制台

    设置的 Your_ApplicationName 可在 /xx/skywalking-agent/config/agent.config 文件中查看

    点击就可查看日志,跟踪等

  • 相关阅读:
    第7章 博客文章的前端渲染显示
    2024 极术通讯-Arm 更新 Neoverse 产品路线图,实现人工智能基础设施
    同一个IP地址可有不同的写法?
    cv_bridge和opencv 记录
    设计模式之创建型模式:原型模式
    软件工程--软件过程学习笔记
    指针(三)- 二级指针、野指针、空指针
    content生成自定义图标的方式是什么?
    Dubbo初次使用(广播形式)
    【笔记篇】13供应链项目养成记——之《实战供应链》
  • 原文地址:https://blog.csdn.net/MinggeQingchun/article/details/125977930