1.什么是 SkyWalking
目前主要的一些 APM 工具有: Cat友存、Zipkin祷膳、Pinpoint屡立、SkyWalking直晨;Apache SkyWalking 是觀察性分析平臺(tái)和應(yīng)用性能管理系統(tǒng)。提供分布式追蹤膨俐、服務(wù)網(wǎng)格遙測(cè)分析勇皇、度量聚合和可視化一體化解決方案。
功能特性:
- 多種監(jiān)控手段吟策,語言探針和服務(wù)網(wǎng)格(Service Mesh)
- 多語言自動(dòng)探針儒士,Java,.NET Core 和 Node.JS
- 輕量高效檩坚,不需要大數(shù)據(jù)
- 模塊化着撩,UI、存儲(chǔ)匾委、集群管理多種機(jī)制可選
- 支持告警
- 優(yōu)秀的可視化方案
2. SkyWalking服務(wù)端安裝和配置
2.1. 基于 Docker 安裝 ElasticSearch
SkyWalking 存儲(chǔ)方案有多種拖叙,官方推薦的方案是 ElasticSearch。
2.1.1 docker-compose安裝ElasticSearch
創(chuàng)建docker-compose.yml
赂乐,內(nèi)容如下:
version: '3.3'
services:
elasticsearch:
image: wutang/elasticsearch-shanghai-zone:6.3.2
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
cluster.name: elasticsearch
其中薯鳍,9200
端口號(hào)為 SkyWalking 配置 ElasticSearch 所需端口號(hào),cluster.name
為 SkyWalking 配置 ElasticSearch 集群的名稱
2.1.2 檢查是否安裝成功
瀏覽器訪問 http://ip:9200/ 挨措,瀏覽器返回如下信息即表示成功啟動(dòng)
2.2. 下載并啟動(dòng) SkyWalking
官方已經(jīng)為準(zhǔn)備好了編譯過的服務(wù)端版本挖滤,下載地址為 http://skywalking.apache.org/downloads/,這里下載的是6.x releases 版本
2.2.1 配置 SkyWalking
下載完成后解壓縮浅役,進(jìn)入 apache-skywalking-apm-incubating/config
目錄并修改 application.yml
配置文件
- 注釋 H2 存儲(chǔ)方案
- 啟用 ElasticSearch 存儲(chǔ)方案
- 修改 ElasticSearch 服務(wù)器地址
2.2.2 啟動(dòng) SkyWalking
修改完配置后斩松,進(jìn)入 apache-skywalking-apm-incubating\bin
目錄,運(yùn)行 startup.bat
啟動(dòng)服務(wù)端觉既,通過瀏覽器訪問 http://ip:8080 出現(xiàn)如下界面即表示啟動(dòng)成功
默認(rèn)的用戶名密碼為:admin/admin惧盹,登錄成功后乳幸,效果如下圖
3. SkyWalking 客戶端配置
3.1. Java Agent 服務(wù)器探針
探針文件在 apache-skywalking-apm-incubating/agent
目錄下
3.2. IDEA部署探針
1、將 agent 整個(gè)目錄拷貝到項(xiàng)目中
2钧椰、修改項(xiàng)目的 VM 運(yùn)行參數(shù)粹断,點(diǎn)擊菜單欄中的 Run -> EditConfigurations...,修改參數(shù)如下:
-javaagent:D:\Workspace\Others\hello-spring-cloud-alibaba\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=nacos-provider
-Dskywalking.collector.backend_service=localhost:11800
- -javaagent:用于指定探針路徑
- -Dskywalking.agent.service_name:用于重寫 agent/config/agent.config 配置文件中的服務(wù)名
- -Dskywalking.collector.backend_service:用于重寫 agent/config/agent.config 配置文件中的服務(wù)地址
3.3. Java方式部署探針
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=nacos-provider -Dskywalking.collector.backend_service=localhost:11800 -jar yourApp.jar
3.4. 測(cè)試監(jiān)控
任意訪問寫好的接口嫡霞,再次訪問地址http://ip:8080
瓶埋,出現(xiàn)如下界面即表示 SkyWalking 鏈路追蹤配置成功。
4. 擴(kuò)展知識(shí)
Maven Assembly 插件诊沪,Assembly 插件目的是提供一個(gè)把工程依賴元素悬赏、模塊、網(wǎng)站文檔等其他文件存放到單個(gè)歸檔文件里娄徊。
此處以將 SkyWalking 探針打包為 tar.gz
為例闽颇,為后期持續(xù)集成時(shí)構(gòu)建 Docker 鏡像做好準(zhǔn)備
在 pom.xml
中增加插件配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<!-- 配置執(zhí)行器 -->
<execution>
<id>make-assembly</id>
<!-- 綁定到 package 生命周期階段上 -->
<phase>package</phase>
<goals>
<!-- 只運(yùn)行一次 -->
<goal>single</goal>
</goals>
<configuration>
<finalName>skywalking</finalName>
<descriptors>
<!-- 配置描述文件路徑 -->
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
創(chuàng)建 src/main/resources/assembly.xml
配置文件
<assembly>
<id>6.0.0-Beta</id>
<formats>
<!-- 打包的文件格式,支持 zip寄锐、tar.gz兵多、tar.bz2、jar橄仆、dir剩膘、war -->
<format>tar.gz</format>
</formats>
<!-- tar.gz 壓縮包下是否生成和項(xiàng)目名相同的根目錄,有需要請(qǐng)?jiān)O(shè)置成 true -->
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<!-- 是否把本項(xiàng)目添加到依賴文件夾下盆顾,有需要請(qǐng)?jiān)O(shè)置成 true -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<!-- 將 scope 為 runtime 的依賴包打包 -->
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<!-- 設(shè)置需要打包的文件路徑 -->
<directory>agent</directory>
<!-- 打包后的輸出路徑 -->
<outputDirectory></outputDirectory>
</fileSet>
</fileSets>
</assembly>
打包
mvn clean package
mvn clean install
- package:會(huì)在 target 目錄下創(chuàng)建名為
skywalking-6.0.0-Beta.tar.gz
的壓縮包 - install:會(huì)在本地倉庫目錄下創(chuàng)建名為
hello-spring-cloud-external-skywalking-1.0.0-SNAPSHOT-6.0.0-Beta.tar.gz
的壓縮包