Spring cloud 整合 SkyWalking 實現效能監控、鏈路追蹤、日誌收集

JerryMa發表於2022-04-06

Why SkyWalking?

Skywalking 是一個優秀的APM(application performance monitor)應用效能監控系統,針對微服務場景設計,可以方便的實現Spring cloud等微服務場景下的效能監控、鏈路追蹤等。
而v8.x版本也支援了日誌收集功能,可以取代ELK作為分散式下日誌收集的方案。一個系統實現監控+追蹤+日誌的多個能力,有效降低微服務下運維的複雜度。

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

1. 環境準備與安裝

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

  • 進入下載頁面: SkyWalking 下載
  • 下載 SkyWalking APM 以及 Java agent 如下兩個壓縮包:

SkyWalking元件

  • 下載完成後解壓,嘗試執行 /apache-skywalking-apm-bin/bin/startup.bat (或startup.sh)
  • 訪問 http://localhost:8080/,即可看到SkyWalking監控UI

SkyWalking console

以上安裝為直接安裝,如需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

SkyWalking console

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

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

5. 訪問SkyWalking UI控制檯 http://localhost:8080/

  • 效能監控 效果示例(該優化哪個介面一清二楚了):
    SkyWalking console
  • 鏈路追蹤 效果示例(慢在哪個環節也看到了):
    SkyWalking console
  • 日誌收集 效果示例:
    SkyWalking console

注意:預設SkyWalking用的是H2資料庫儲存,不支援全文檢索方式查日誌內容。生產環境建議切換為ElasticSearch儲存


Diboot - 寫的少效能好的低程式碼開發框架

相關文章