SkyWalking基本結構
- 基于不同的來源可能是不一樣的, 但作用都是收集資料, 将資料格式化為 SkyWalking 适用的格式.
- 基于語言的原生代理
- 服務網格探針
- 第三方打點類庫
- 支援資料聚合, 資料分析以及驅動資料流從探針到使用者界面的流程。
- 分析包括 Skywalking 原生追蹤和性能名額以及第三方來源,包括 Istio 及 Envoy telemetry , Zipkin 追蹤格式化等。
- 甚至可以使用 Observability Analysis Language 對原生度量名額 和 用于擴充度量的計量系統 自定義聚合分析。
- 通過開放的插件化的接口存放 SkyWalking 資料.
- 你可以選擇一個既有的存儲系統, 如 ElasticSearch, H2 或 MySQL 叢集(Sharding-Sphere 管理),也可以選擇自己實作一個存儲系統. 當然, 我們非常歡迎你貢獻新的存儲系統實作。
- 一個基于接口高度定制化的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>
複制代碼
接入效果
名額儀表盤
拓撲圖
日志監控
原文連結:https://juejin.cn/post/7202809170377949240