从入门到放弃 SkyWalking2--快速搭建

一、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 界面:

image

图中索引为SkyWalking启动后自动创建

四、SkyWalking 安装

SkyWalking Rocketbot 使用

  • 解压
apache-skywalking-apm-es7-8.4.0.tar.gz
  • 修改配置,后端存储为es

编辑apache-skywalking-apm-bin-es7/config/application.yml

skywalking8之后不用注释到其他存储配置项,只需要填写选择项selector

image
  • 启动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 中的配置如下图所示
image
-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)。

image

Global面板,分别是:

  • Global Heatmap 面板:热力图,从全局展示了某段时间请求的热度。
  • Global Percent Response 面板 :展示了全局请求响应时间的 P99、P95、P75 等分位数。
  • Global Brief 面板:展示了 SkyWalking 能感知到的 Service、Endpoint 的个数。
  • Global Top Troughput 面板:展示了吞吐量前几名的服务。
  • Global Top Slow Endpoint 面板:展示了耗时前几名的 Endpoint。

Service 面板,可以看到针对 Service 的监控面板,如下图所示

image
  • 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 的监控面板,如下图所示:

image

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

你可能感兴趣的:(从入门到放弃 SkyWalking2--快速搭建)