一、SkyWalking 搭建环境准备
SkyWalking插件支持的中间件版本,避免兼容性问题,别问我为什么一上来要看这个,真被es坑死
https://github.com/apache/skywalking/blob/v8.4.0/docs/en/setup/service-agent/java-agent/Supported-list.md
SkyWalking8.4.0
https://mirror.bit.edu.cn/apache/skywalking/8.4.0/apache-skywalking-apm-es7-8.4.0.tar.gz
ElasticSearch 7.5.1 + Kibana 7.5.1 所有版本
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
二、ElasticSearch安装
使用es用于作为SkyWalking的后端存储
- 解压
tar -zxf elasticsearch-7.5.1.tar.gz
- 启动
解压完成之后,进入到elasticsearch目录中
./bin/elasticsearch -d
- 查看状态/日志
tail -f logs/elasticsearch.log
浏览器访问: localhost:9200返回如下json,说明启动成功
三、Kibana 安装(非必须,可跳过)
Kibana是和es搭配使用,负责查询和管理es。
- 解压
tar -zxf kibana-7.5.1.tar.gz
- 启动
进入kibana-7.5.1目录中
./bin/kibana
- 查看状态/日志
http://localhost:5601/ 地址即可进入 Kibana 界面:
图中索引为SkyWalking启动后自动创建
四、SkyWalking 安装
SkyWalking Rocketbot 使用
- 解压
apache-skywalking-apm-es7-8.4.0.tar.gz
- 修改配置,后端存储为es
编辑apache-skywalking-apm-bin-es7/config/application.yml
skywalking8之后不用注释到其他存储配置项,只需要填写选择项selector
- 启动oap与ui
接下来执行 ./bin/startup.sh 文件即可启动 SkyWalking OAP 以及 UI 界面,看到的输出如下:
>./bin/startup.sh
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
- 查看日志/状态
logs/skywalking-oap-server.log 以及 logs/webapp.log
访问 http://127.0.0.1:8080/ 即可看到 SkyWalking 的 Rocketbot UI界面。
zookeeper启动
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/
进入zookeeper-3.4.6/bin
- 启动
./zkServer.sh start
- 查看状态
./zkServer.sh status
dubbo项目中引入Skywalking Agent
SkyWalking Agent 使用了 Java Agent (字节码增强https://www.cnblogs.com/aspirant/p/8796974.html)技术,可以在无需手工埋点的情况下,通过 JVM 接口在运行时将监控代码段插入已有 Java 应用中,实现对 Java 应用的监控。SkyWalking Agent 会将服务运行过程中获得的监控数据通过 gRPC 发送给后端的 OAP 集群进行分析和存储。
SkyWalking 目前提供的 Agent 插件在 apache-skywalking-apm-bin/agent 目录下:
agent
├── activations
│ ├── apm-toolkit-log4j-1.x-activation-6.2.0.jar
│ ├── ...
│ └── apm-toolkit-trace-activation-6.2.0.jar
├── config # Agent 配置文件
│ └── agent.config
├── logs # 日志文件
├── optional-plugins # 可选插件
│ ├── apm-customize-enhance-plugin-6.2.0.jar
│ ├── apm-gson-2.x-plugin-6.2.0.jar
│ └── ... ...
├── plugins # 当前生效插件
│ ├── apm-activemq-5.x-plugin-6.2.0.jar
│ ├── tomcat-7.x-8.x-plugin-6.2.0.jar
│ ├── spring-commons-6.2.0.jar
│ └── ... ...
└── skywalking-agent.jar
正常结构的dubbo中,分别将apache-skywalking-apm-bin/agent/config 目录下的 agent.config 配置文件拷贝到resource目录下,并修改其中的 agent.service_name:
# The service name in UI
agent.service_name=${SW_AGENT_NAME:你服务的名称}
- 服务消费端引入maven依赖
org.apache.skywalking
apm-toolkit-trace
8.4.0
- agent.config 配置文件之后,我们需要在启动 dubbo项目 之前通过参数告诉 JVM SkyWalking Agent 配置文件的位置,IDEA 中的配置如下图所示
-javaagent:/Users/izaodao/Documents/sw/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
-Dskywalking_config=/Users/izaodao/Documents/IdeaProject/skywalking-demo/demo-provider/src/main/resources/agent.config
五、常见SkyWalking Agent 配置方式
- agent.config
agent.config 是一个 KV 结构的配置文件,类似于 properties 文件,value 部分使用 "${}" 包裹,其中使用冒号(":")分为两部分,前半部分是可以覆盖该配置项的系统环境变量名称,后半部分为默认值。例如这里的 agent.service_name 配置项,如果系统环境变量中指定了 SW_AGENT_NAME 值(注意,全是大写),则优先使用环境变量中指定的值,如果环境变量未指定,则使用 demo-provider 这个默认值。
The service name in UI
agent.service_name=${SW_AGENT_NAME:demo-provider}
- 探针配置覆盖
在jvm参数的探针路径后面添加参数配置
-javaagent:/path/skywalking-agent.jar=agent.service_name=demo-provider
# 默认格式是 -javaagent:agent.jar=[option1]=[value1],[option2]=[value2]
- JVM 配置覆盖
如果在 JVM 启动之前,明确中指定了下面的 JVM 配置:
则会使用该配置值覆盖 agent.config 配置文件中默认值。
-Dskywalking.agent.service_name = demo-provider
# "skywalking."是 Skywalking环境变量的默认前缀
系统环境变量
优先级
探针配置 > JVM配置 > 系统环境变量配置 > agent.config文件默认值
六、SkyWalking Rocketbot 使用
在前面执行的 ./bin/startup.sh 脚本,除了启动后端 OAP 服务,同时还会启动 Skywalking Rocketbot(位于 webapp 目录下的 skywalking-webapp.jar)。
Global面板,分别是:
- Global Heatmap 面板:热力图,从全局展示了某段时间请求的热度。
- Global Percent Response 面板 :展示了全局请求响应时间的 P99、P95、P75 等分位数。
- Global Brief 面板:展示了 SkyWalking 能感知到的 Service、Endpoint 的个数。
- Global Top Troughput 面板:展示了吞吐量前几名的服务。
- Global Top Slow Endpoint 面板:展示了耗时前几名的 Endpoint。
Service 面板,可以看到针对 Service 的监控面板,如下图所示
- Service (Avg) ResponseTime 面板:展示了指定服务的(平均)耗时。
- Service (Avg) Throughput 面板:展示了指定服务的(平均)吞吐量。
- Service (Avg) SLA 面板:展示了指定服务的(平均)SLA(Service Level Agreement,服务等级协议)。
- Service Percent Response 面板:展示了指定服务响应时间的分位数。
- Service Slow Endpoint 面板:展示了指定服务中耗时比较长的 Endpoint 信息。
- Running ServiceInstance 面板:展示了指定服务下的实例信息。
Endpoint 的监控面板,基本功能与 Service 面板类似,这里不再展开。
Instance 面板,可以看到针对 ServiceInstance 的监控面板,如下图所示:
JVM 内存使用情况、GC 次数、GC 耗时、CPU 使用率、ServiceInstance SLA 等等信息
参考采坑资料:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will l
https://www.cnblogs.com/agang-php/p/13591826.html
mac运行zookeeper的zkServer.sh,显示FAILED TO WRITE PID
https://blog.csdn.net/weixin_40283268/article/details/108722928
es启动常见问题
https://blog.csdn.net/mrzhangbaby/article/details/97166946
常见问题:
SkyWalking 8: 常见问题总结
https://my.oschina.net/osgit/blog/4558674
阿里云收费情况
https://cn.aliyun.com/price/product?spm=5176.cnxtrace.0.0.4945228fejqBfQ#/xtrace/detail
lsof -i:8080 查看端口
https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316599.html