SkyWalking是一个国产开源框架,b并加入Apache孵化器。简介来自官方文档。
SkyWalking是 一个开源的可观测平台,用于从服务和云原生基础设施收集,分析,聚合及可视化数据。
SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统,尤其专为云原生、基于容器的分布式系统设计。
在许多不同的场景下,,SkyWalking 为观察和监控分布式系统提供了解决方案。首先是像传统的方式那样,SkyWalking 为服务提供了自动打点的代理,如 Java, C# , Node.js , Go , PHP 以及 Nginx LUA(包括 Python 和 C++ 调用的 SDK 捐献)。对于多数语言,持续部署环境,云原生基础设施正变得更加强大,但也更加复杂。
Skywalking 的服务网格接收器可以让 Skywalking 接收来自服务网格框架(例如 Istio , Linkerd)的遥测数据,以帮助用户理解整个分布式系统。
总之,SkyWalking 为 服务(service),服务实例(service instance)以及 端点(endpoint) 提供了可观测能力。
服务(Service), 实例(Instance) 以及 端点(Endpoint) 等概念在如今随处可见,所以先了解一下他们在 SkyWalking 中都表示什么意思:
使用 SkyWalking 时,用户可以看到服务与端点之间的拓扑结构,每个服务/服务实例/端点的性能指标,还可以设置报警规则。
从 v9 开始,SkyWalking 引入了新的核心概念Layer。层代表计算机科学中的一个抽象框架,例如操作系统(OS_LINUX 层)、Kubernetes(k8s 层)。所有检测到的实例都属于一个层来表示该实例的运行环境,服务将根据其实例具有一个或多个层定义。
SkyWalking 逻辑上分为四部分:探针(Probes),平台后端(Platform backend),存储(Storage)和用户界面(UI)。
SkyWalking APM服务中包含 OAP服务和 UI服务。
bin目录中包含两个服务的启动脚本。
startup.bat:同时启动 OAP和 UI服务。
下面在 windows中启动。点击 bin/startup.bat脚本。会启动两个服务:
skywalking-oap-server服务启动后会暴露 11800 和 12800 两个端口,分别为收集监控数据的端口 11800和接受前端请求的端口12800,可以在 config/applicaiton.yml修改端口,数据库存储等。默认使用H2数据库存储。
SkyWalking UI界面的数据是通过请求SkyWalking OAP服务来获得。
skywalking-web-ui服务会占用 8080 端口, 可以在webapp/webapp.yml 修改端口。
日志信息存储在 logs目录:
启动成功之后,访问 Skywalking UI界面:http://127.0.0.1:8080/
搭建好了 SkyWalking服务,接下来在项目中接入SkyWalking的 Java Agent来追踪服务。
SkyWalking对接入端无代码侵入。所以在启动项目时,通过 - javaagent 参数进行配置SkyWalking Agent来追踪服务就可以了。
下面直接在 IDEA中使用 SkyWalking 。
在运行的程序配置 jvm参数:
-javaagent:D:\OpenResoure\SkyWalking\apache-skywalking-java-agent-8.12.0\skywalking-agent\skywalking-agent.jar
-DSW_AGENT_NAME=springboot-mybatis-demo
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
参数说明:
然后运行项目,随便访问几个接口,然后在SkyWalking UI界面查询追踪信息。
Skywalking提供了很多可插播的功能组件。这里我们集成 logback日志框架。
1)引入logback依赖
<dependency>
<groupId>org.apache.skywalkinggroupId>
<artifactId>apm-toolkit-logback-1.xartifactId>
<version>8.12.0version>
dependency>
2)添加 lobback日志文件
在项目的 resources下添加 logback-spring.xml文件,并配置 %tid 占位符
。
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%nPattern>
layout>
encoder>
appender>
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%nPattern>
layout>
encoder>
appender>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="grpc-log"/>
root>
configuration>
重启项目,查看 Skywalking UI界面:
日志信息对我们追踪信息,特别是错误信息非常有帮助。
– 求知若饥,虚心若愚。