天天看點

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

Why SkyWalking?

Skywalking 是一個優秀的APM(application performance monitor)應用性能監控系統,針對微服務場景設計,可以友善的實作Spring cloud等微服務場景下的性能監控、鍊路追蹤等。

而v8.x版本也支援了日志收集功能,可以取代ELK作為分布式下日志收集的方案。一個系統實作 監控+追蹤+日志 的多個能力,有效降低微服務下運維的複雜度。

下面我們以Spring cloud為例,一起玩轉Skywalking

1. 環境準備與安裝

要實作 監控+追蹤+日志 ,我們需要安裝基礎的 APM 和 Java agent。

進入下載下傳頁面:SkyWalking 下載下傳

下載下傳 SkyWalking APM 以及 Java agent 如下兩個壓縮包:

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

下載下傳完成後解壓,嘗試運作 /apache-skywalking-apm-bin/bin/startup.bat (或 startup.sh )

通路 http://localhost:8080/ ,即可看到SkyWalking監控UI

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

以上安裝為直接安裝,如需docker等安裝方式可參考SkyWalking官方文檔

2. 配置SkyWalking日志收集(logback為例)

pom 中依賴 SkyWalking 的 logback 插件包:

<!-- SkyWalking log collection -->
<dependency>
  <groupId>org.apache.skywalking</groupId>
  <artifactId>apm-toolkit-logback-1.x</artifactId>
  <version>8.9.0</version>
</dependency>
           

添加/修改 logback.xml,啟用 SkyWalking 提供的 appender,示例配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">

  <appender name="stdout" 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%n</Pattern>
          </layout>
      </encoder>
  </appender>

  <appender name="grpc" 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>
  
  <root level="INFO">
      <appender-ref ref="stdout"/>
      <appender-ref ref="grpc"/>
  </root>
</configuration>
           

3. 配置Java agent

IDEA開發環境下配置Java agent:

打開各個服務應用的 Edit Run/Debug Configurations ,添加如下VM options:

-javaagent:D:/Server/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=yourAppName -Dskywalking.collector.backend_service=localhost:11800
           
Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

生産環境下配置Java agent:

Tomcat伺服器配置及 以 java -jar 運作的配置方式:具體可參考 SkyWalking官方Java agent配置文檔

4. 啟動微服務下的各個服務應用

然後進入你的spring cloud微服務前端UI做些操作,用以驗證監控和日志。

5. 通路SkyWalking UI控制台 http://localhost:8080/

性能監控 效果示例(該優化哪個接口一清二楚了):

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

鍊路追蹤 效果示例(慢在哪個環節也看到了):

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

日志收集 效果示例:

Spring cloud 內建 SkyWalking 實作性能監控、鍊路追蹤、日志收集Why SkyWalking?1. 環境準備與安裝2. 配置SkyWalking日志收集(logback為例)3. 配置Java agent4. 啟動微服務下的各個服務應用5. 通路SkyWalking UI控制台 http://localhost:8080/

注意:預設SkyWalking用的是H2資料庫存儲,不支援全文檢索方式查日志内容。生産環境建議