SkyWalking入门使用

SkyWalking入门使用

前情提要

微服务架构图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SkyWalking介绍

  • Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
  • Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

各个APM工具比较

在这里插入图片描述

在这里插入图片描述

SkyWalking结构介绍

  • 探针:基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
  • 平台后端:支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
  • 存储:通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
  • UI:一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

在这里插入图片描述

在这里插入图片描述

底层技术介绍

  • SkyWalking是使用JAVA agent 探针技术,为目标应用代码植入监控代码,监控代码进行数据统计上报的。

    • JAVA agent探针技术:

      • 在JVM运行中,类是通过classLoader加载.class文件进行生成的。在类加载器加载.class文件生成对应的类对象之前时,我们可以通过修改.class文件内容(就是字节码修改技术),达到修改类的目的。
      • JAVA 探针技术就是字节码修改技术。
      • 本质上是一个jar包。
      • 入口:premain 或 agentmain
      • 使用方法:
        • 静态agent:premain作为agent的入口方法,在Java程序的 main 方法执行之前执行。
        • 动态agent:动态agent允许代理的目标程序的JVM先启动,再通过attach机制载入。
          • Attach机制实际就是JDK提供的一种JVM进程间通信的能力,能让一个进程传命令给另外一个进程,并让它执行内部的一些操作。
  • 主要概念:

    • 服务(Service):例如用户服务
    • 端点(Endpoint):服务对外提供的接口
    • 实例(Instance):服务具体部署的某台服务器,服务下可以有多个实例

搭建部署

webapp

  • apache-skywalking-apm-9.0.0\apache-skywalking-apm-bin\webapp
  • webapp.yml修改端口

oapservice

  • 端口:11800和12800,11800收集监控数据,12800接受前端请求

  • 第三方程序接入skywalking:第三方程序启动时,添加启动参数

    -javaagent:xxx\skywalking-agent.jar  # jar包路径需要是oapservice启动项目中的路径
    -DSW_AGENT_NAME=test  # 指定服务名,用于skywalking中
    -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800  # oapservice服务地址
    
  • docker-compose 添加启动参数

    services:
      user-center-service:
        image: uias/user-center-service:2.0.22.0531
        container_name: user-center
        network_mode: "host"
        privileged: true
        volumes:
          - /var/log/uias/user-center-service/logs:/opt/user-center-service/logs
        environment: #指定时间 时区
          - SET_CONTAINER_TIMEZONE=true
          - CONTAINER_TIMEZONE=Asia/Shanghai
          - NACOS_HOST=172.20.0.48
          - NACOS_NAMESPACE=uias
          - SERVER_PORT=16100
          # environment加JAVA_OPTS参数
        command: java -javaagent:/opt/skywalking/apache-skywalking-apm-bin/skywalking-agent/skywalking-agent.jar -DSW_AGENT_NAME=user-center-service -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=172.16.4.101:11800 -jar user-center-service.jar
        restart: always
    
  • 注意事项:

    • skywalking默认不支持gateway,需要lib库加上gateway的plugins jar包
    • 连接mysql,需要加上mysql连接驱动到lib文件夹
    • 数据库可以是空,skywalking启动时,会自动建表
    • 自定义链路追踪:skywalking默认仅追踪请求级(接口请求和数据库请求),项目需要方法级追踪,需要加上skywalking依赖,在需要追踪的业务方法前加注解@Trace
    • 需要追踪到入参和出参,需要@Tags注解,且实体类需要重写toString方法
    @Trace
    @Tags({
        @Tag(key="result", value="returnedObj"),
        @Tag(key="param", value="arg[0]"), // 因为只有一个入参,所以arg[0]
    }
    )
    public String test(int i){
        return "test" + i.toString();
    }
    

性能剖析

  • 剖析出接口请求中,各个方法占用总时间的百分比,同时可以定位到方法内哪句代码用的时间最久

集成日志框架

  • 服务控制台显示Trace id,然后到skywalking前端页面进行精确查询:添加skywalking的logback依赖,logback-spring.xml日志格式化语句添加[%tid]

告警

  • 有一组规则驱动,规则定义在config/alarm-settings.yml文件中
  • 规则的定义分为两部分:
    • 告警规则:什么条件下触发报警
    • webhook:当报警被触发,需要通知那些服务端
      • alarm-settings.yml的webhooks里,配置一个接口路径,触发告警时,skywalking会请求这个接口
      • 请求方法约定为POST,入参为json,实体类为alarm.AlarmMessage
      • skywalking自带支持钉钉、企业微信等webhooks

源码浅析

https://it.cha138.com/android/show-51527.html

GitHub

https://github.com/apache/skywalking

使用SkyWalking,首先需要下载并安装SkyWalking探针。你可以从官方文档中获取探针的下载链接。安装完成后,你需要在启动应用程序时添加以下参数来配置SkyWalking探针:-javaagent:探针jar包路径 -Dskywalking.agent.service_name=服务名称 -Dskywalking.collector.backend_service=SkyWalking地址。其中,探针jar包路径是指你下载的探针jar包所在位置,服务名称是指你的应用程序在SkyWalking中的名称,SkyWalking地址是指SkyWalking的后端地址。具体的参数配置可以在探针下载页面中找到。如果你在本地启动了SkyWalking,那么后端地址可以使用默认值127.0.0.1:11800,无需进行配置。另外,如果你的应用程序运行在服务网格框架中,如Istio或Linkerd,你还可以使用SkyWalking的服务网格接收器来接收遥测数据。这样能帮助你更好地理解整个分布式系统的运行情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SkyWalking环境搭建与使用](https://blog.csdn.net/qq_42402854/article/details/126920266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [skywalking简单入门使用](https://blog.csdn.net/qq_42445433/article/details/125998649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值