1.什么是 SkyWalking
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking;Apache SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
功能特性:
- 多种监控手段,语言探针和服务网格(Service Mesh)
- 多语言自动探针,Java,.NET Core 和 Node.JS
- 轻量高效,不需要大数据
- 模块化,UI、存储、集群管理多种机制可选
- 支持告警
- 优秀的可视化方案
2. SkyWalking服务端安装和配置
2.1. 基于 Docker 安装 ElasticSearch
SkyWalking 存储方案有多种,官方推荐的方案是 ElasticSearch。
2.1.1 docker-compose安装ElasticSearch
创建docker-compose.yml
,内容如下:
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
端口号为 SkyWalking 配置 ElasticSearch 所需端口号,cluster.name
为 SkyWalking 配置 ElasticSearch 集群的名称
2.1.2 检查是否安装成功
浏览器访问 http://ip:9200/ ,浏览器返回如下信息即表示成功启动
2.2. 下载并启动 SkyWalking
官方已经为准备好了编译过的服务端版本,下载地址为 http://skywalking.apache.org/downloads/,这里下载的是6.x releases 版本
2.2.1 配置 SkyWalking
下载完成后解压缩,进入 apache-skywalking-apm-incubating/config
目录并修改 application.yml
配置文件
- 注释 H2 存储方案
- 启用 ElasticSearch 存储方案
- 修改 ElasticSearch 服务器地址
2.2.2 启动 SkyWalking
修改完配置后,进入 apache-skywalking-apm-incubating\bin
目录,运行 startup.bat
启动服务端,通过浏览器访问 http://ip:8080 出现如下界面即表示启动成功
默认的用户名密码为:admin/admin,登录成功后,效果如下图
3. SkyWalking 客户端配置
3.1. Java Agent 服务器探针
探针文件在 apache-skywalking-apm-incubating/agent
目录下
3.2. IDEA部署探针
1、将 agent 整个目录拷贝到项目中
2、修改项目的 VM 运行参数,点击菜单栏中的 Run -> EditConfigurations...,修改参数如下:
-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 配置文件中的服务名
- -Dskywalking.collector.backend_service:用于重写 agent/config/agent.config 配置文件中的服务地址
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. 测试监控
任意访问写好的接口,再次访问地址http://ip:8080
,出现如下界面即表示 SkyWalking 链路追踪配置成功。
4. 扩展知识
Maven Assembly 插件,Assembly 插件目的是提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。
此处以将 SkyWalking 探针打包为 tar.gz
为例,为后期持续集成时构建 Docker 镜像做好准备
在 pom.xml
中增加插件配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<!-- 配置执行器 -->
<execution>
<id>make-assembly</id>
<!-- 绑定到 package 生命周期阶段上 -->
<phase>package</phase>
<goals>
<!-- 只运行一次 -->
<goal>single</goal>
</goals>
<configuration>
<finalName>skywalking</finalName>
<descriptors>
<!-- 配置描述文件路径 -->
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
创建 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 压缩包下是否生成和项目名相同的根目录,有需要请设置成 true -->
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<!-- 是否把本项目添加到依赖文件夹下,有需要请设置成 true -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<!-- 将 scope 为 runtime 的依赖包打包 -->
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<!-- 设置需要打包的文件路径 -->
<directory>agent</directory>
<!-- 打包后的输出路径 -->
<outputDirectory></outputDirectory>
</fileSet>
</fileSets>
</assembly>
打包
mvn clean package
mvn clean install
- package:会在 target 目录下创建名为
skywalking-6.0.0-Beta.tar.gz
的压缩包 - install:会在本地仓库目录下创建名为
hello-spring-cloud-external-skywalking-1.0.0-SNAPSHOT-6.0.0-Beta.tar.gz
的压缩包