我正在参加「启航方案」
SkyWalking基本结构
- 探针
- 根据不同的来历可能是不一样的, 但作用都是搜集数据, 将数据格式化为 SkyWalking 适用的格式.
- 根据言语的原生代理
- 服务网格探针
- 第三放打点类库
- 渠道后端
- 支撑数据聚合, 数据剖析以及驱动数据流从探针到用户界面的流程。
- 剖析包括 Skywalking 原生追寻和性能目标以及第三方来历,包括 Istio 及 Envoy telemetry , Zipkin 追寻格式化等。
- 乃至能够运用 Observability Analysis Language 对原生度量目标 和 用于扩展度量的计量系统 自定义聚合剖析。
- 经过开放的插件化的接口存放 SkyWalking 数据.
- 你能够挑选一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也能够挑选自己完成一个存储系统. 当然, 我们非常欢迎你奉献新的存储系统完成。
- UI
- 一个根据接口高度定制化的Web系统,用户能够可视化检查和管理 SkyWalking 数据。
SkyWalking代码结构
-
agent
- skwwalking-agent.jar 代理服务jar包
- config: 代理服务发动时使⽤的装备⽂件
- plugins: 包括多个插件,代理服务发动时会加载该⽬录下的所有插件(实际上时各种jar包) optional-plugins:可选插件,当需求⽀持某些功能时,⽐如 Spring Cloud Gateway,则需求把对 应的jar包拷⻉到plugins⽬录下;
-
webapp: UI前端(web监控⻚⾯)的jar包装备⽂件
- webapp.yml : 默许装备发动UI时拜访端⼝ 8080,需求更改
- listOfServers表明接纳前端恳求端⼝12800
-
oap-libs:
- 后台应⽤的jar包,以及它的依赖jar包,⾥⾯有⼀个server-starter-*.jar就时对应的发动程序
-
config:发动后台应⽤程序的装备⽂件
- application.yml:可装备存储数据库类型、⾼可⽤注册服务等 ,需求修正存储方法改为ES存储
-
bin: 各种发动脚本,⼀般使⽤脚本startup.*来发动web⻚⾯和对应的后台应⽤;
- oapServer.*: 默许使⽤的后台程序的发动脚本;(使⽤的默许形式发动,还⽀持)
- oapServerInit.*: 使⽤init形式发动,在此形式下,OAP服务器发动以执⾏初始化⼯作,然后退出
- oapServerNoInit.*:使⽤no init形式发动,在此形式下,OAP服务器不进⾏初始化
- webappService.*: UI前端的发动脚本
- startup.:组合脚本,一起发动oapServer. ,webappService.*脚本
SkyWalking搭建8.6.0-es版别
- 下载链接:archive.apache.org/dist/skywal…
- 首要需求修正发动端口
vi apache-skywalking-apm-bin-es7/webapp/webapp.yml,修正server.port(原8080)
- 修正存储类型
vi apache-skywalking-apm-bin-es7/config/application.yml
-
sh apache-skywalking-apm-bin-es7/bin/startup.sh 发动
-
skywalking服务日志存储到apache-skywalking-apm-bin-es7/logs中
-
发动成功后会发动两个服务,⼀个是skywalking-oap-server,⼀个是skywalking-web-ui
-
skywalking-oap-server服务发动后会露出11800 和 12800 两个端⼝,分别为搜集监控数据的端⼝11800和承受前端恳求的端⼝12800
Java服务接入SkyWalking
- 运用Java agent方法监控服务,编写sheel发动脚本,直接运转改脚本即可
export SW_AGENT_NAME=sky_service
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #skywalking Collector地址
export SW_AGENT_SPAN_LIMIT=2000 #装备链路最大Span数量,默许为300
export JAVA_AGENT=-javaagent:../apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar #agent包地址 nohup java $JAVA_AGENT -jar *.jar &
- 控制台打印tracid,需求更改日志格式,装备logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 引入springboot 默许的 logback xml 装备文件 (springboot default log config)-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<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">
<!-- 来历于defaults.xml 能够大局查找文件找到springboot中的该装备文件 如果无需更改 只需求引入>${CONSOLE_LOG_PATTERN}-->
<!-- 我们需求记录traceId 所以需求加上[%tid] 加在下面任意一个不损坏格式的当地-->
<!--source from springboot logback defaults.xml,default:${CONSOLE_LOG_PATTERN}
but we need to note the traceId ,add [%tid]-->
<!-- https://github.com/apache/skywalking/tree/master/docs/en/setup/service-agent/java-agent -->
<Pattern>-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint}%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} [%tid] %clr(---){faint}%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint}%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</Pattern>
<!-- <Pattern>${CONSOLE_LOG_PATTERN:%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- }){magenta} [${spring.application.name}] %clr([%10.10t]){faint}[%36.36X{trace_id}] %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}}</Pattern>-->
</layout>
</encoder>
</appender>
<!-- grpc方法将traceId推送至skywalking-->
<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.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<!--设置appender -->
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="grpc-log"/>
</root>
</configuration>
接入作用
目标仪表盘
拓扑图
日志监控