SkyWalking使用手册
SkyWalking是什么?
SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
SkyWalking 为 服务(service), 服务实例(service instance), 以及 端点(endpoint) 提供了可观测能力
- 服务(service):表示对请求提供相同行为的一组负载。
- 服务实例(service instance):一组工作负载中的每一个工作负载称为一个实例。
- 端点(endpoint) :对于特定服务接收请求的路径,如http的url和gPRC服务的类名+方法签名。
SkyWalking架构图
SkyWalking由以下部分组成:
- Agent(探针):负责从应用中收集链路信息,发送给SkyWalking OAP服务器。
- SkyWalking OAP(平台后端):负责接收从Agent发送来的Tracing信息,并对信息进行分析,然后存储到外部存储器Storage中,最终提供查询功能。
- Storage(存储):Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。
- SkyWalking UI:负责提供控制台,查看链路等等功能。
SkyWalking的Java Agent
一般情况下SkyWalking的Java Agent需要配置以下内容:
- 配置
config/agent.config中的agent.service_name,可以是任意的英文字符。 - 配置
config/agent.config中的collector.backend_service。默认指向127.0.0.1:11800,表示仅作用于本地后端。 - JVM参数中添加
-javaagent:/path/to/skywalking-package/agent/skywalking-agent.jar,并且确保这个参数在-jar参数之前。
SkyWalking的Backend
基础信息
- 启动脚本:
/bin/oapService.sh:仅启动oap服务/bin/webappService.sh:仅启动webapp服务/bin/startup.sh:同时启动oap服务和webapp服务
- 配置文件:
config/application.yml
必须配置信息的模块列表
- Core。做所有数据分析和流调度的基本和主要框架。
- Cluster。管理集群中的多个后端实例,这可以提供高吞吐量的处理能力。
- Storage。持久化分析结果。
- Query。提供查询接口给UI。
- 应用端口信息
- 11800:这是SkyWalking-OAP的默认接收端口,用于接收来自SkyWalking探针的数据上报请求。这个端口使用HTTP协议。
- 12800:这是SkyWalking-OAP的gRPC通信端口,用于与代理和其他组件之间进行通信。
- 1234:这是SkyWalking-OAP的管理端口,用于与SkyWalking管理界面或其他管理工具进行通信。
Java手工埋点形式使用SkyWalking
- 引入相关依赖
- 配置环境变量或系统属性
- 完成探针初始化
- 在代码中手工埋点创建追踪段(Span)
Spring框架下使用SkyWalking
通过Java Agent实现探针在Java环境种的集成
- 下载Java Agent的jar包
- 在config目录下修改agent.configuration文件下的配置。
agent.service_name:服务的名称。默认为:Your_ApplicationNamecollector.backend_service:oap服务的地址,默认为:127.0.0.1:11800
- 在java应用启动命令的VM options处添加以下启动代码。
-javaagent:D:\apache-skywalking-java-agent-8.15.0\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=your-service-name -Dskywalking.collector.backend_service=127.0.0.1:11800
-Dskywalking.agent.service_name=your-service-name和-Dskywalking.collector.backend_service=127.0.0.1:11800如果以在agent配置文件种配置,这里可以不再配置。
- 之后就可以在Skywalking-ui看到注册的服务。



SkyWalking使用ElasticSearch实现数据持久化
ElasticSearch默认使用H2数据库,H2数据库是一个轻量级的嵌入式关系型数据库管理系统。
SkyWalking也可以使用ElasticSearch实现数据持久化,需要修改SkyWalking配置文件config/application.yml下的storage节点,添加ElasticSearch的相关信息。
storage:
selector: ${SW_STORAGE:elasticsearch}SkyWalking控制台输出日志
修改/conf/log4j2.xml配置文件,添加Console节点。
<Configuration status="info">
<Properties>
<Property name="log-path">${sys:oap.logDir}</Property>
</Properties>
<Appenders>
<RollingFile name="RollingFile" fileName="${log-path}/skywalking-oap-server.log"
filePattern="${log-path}/skywalking-oap-server-%d{yyyy-MM-dd}-%i.log">
<PatternLayout>
<pattern>%d - %c - %L [%t] %-5p %x - %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="102400KB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n" />
</Console>
</Appenders>
<Loggers>
<logger name="org.apache.zookeeper" level="INFO"/>
<logger name="io.grpc.netty" level="INFO"/>
<Root level="info">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>