skywalking作为APM(应用性能监控)的系统,它有其他其他APM共性如果链路追踪、服务监控等;它最大的亮点我觉得是它针对微服务、cloud native和容器话架构,它的分布式追踪、服务网格遥测分析更好、更方便的运用于分布式应用;它的安装使用也是相对简单的,下面就来安装;
一、单机模式
下图是单机部署的部署样例,skywalking 的默认数据是存在内存中的,数据没有持久化,服务重启后历史数据就没有了,平时学习练习没有关系,如果你打算使用于你的环境,最好做好持久化,skywalking 的storge是支持插拔式的目前支持很多类型的存储如mysql、h2、es等,具体基本知识点可以看这里,这里我们使用的是ES(版本是7以上)+skywalking(6.6.0)
大概的步骤如下:
- 第一步:搭建一个Elasticsearch服务。
- 第二步:下载SkyWalking软件包。
- 第三步:搭建SkyWalking OAP服务。
- 第四步:启动一个应用服务,并配置skywalking agent。
- 第五步:搭建skywalking ui服务
1.1 Elasticsearch搭建
这里不做介绍,可以安自己的方式(zip、docker)安装;需要注意的是skywalking 6.X开始增加了对es7.x版本的支持。Es安装版本应根据安装skywalking选择合适的版本,我这里安装是7.2.0版本;
1.2下载SkyWalking软件包
对于skywalking的软件包,有两种方式获取:
- 手动编译
- 官方包
一般情况下建议使用官方包
在 http://skywalking.apache.org/downloads/ 下,我们下载操作系统对应的发布版。选择 Binary Distribution for ElasticSearch 7 (Linux) 版本,安装是linux环境,如下是下载的6.6.0版本,解压后的文件结构;
1.3 SkyWalking OAP搭建
修改OAP配置文件,(vim /你的路径/apache-skywalking-apm-bin-es7/config/application.yml)
启动服务,打开 logs/skywalking-oap-server.log 日志文件,查看是否有错误日志。首次启动时,因为 SkyWalking OAP 会创建 Elasticsearch 的索引,所以会“疯狂”的打印日志。最终,我们看到如下日志,基本可以代表 SkyWalking OAP 服务启动成功
1.4 skywalking ui搭建
修改ui配置文件,(vim /你的路径/apache-skywalking-apm-bin-es7/webapp/webapp.yml)
启动服务,真正启动成功,打开 logs/logs/webapp.log 日志文件,查看是否有错误日志。
访问ui界面,浏览器打开 http://你的ip:你的端口(如我这力是:http://1.1.1.10:8060/)
1.5 SkyWalking Agent
大多数情况下,我们在启动项目的 Shell 脚本上,通过 -javaagent 参数进行配置 SkyWalking Agent
Agent 软件包:我们需要将 apache-skywalking-apm-bin/agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。我们来看看 Agent 目录下有哪些,关于skywalking agent提供的插件列表,可以在https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/zh/master/setup/service-agent/java-agent/Supported-list.md 查看;
配置java启动脚本,通过环境变量进行配置,更多配置可查看https://github.com/apache/skywalking/blob/master/apm-sniffer/config/agent.config
执行脚本启动应用,同时可以在yourpath/agent/logs/skywalking-api.log查看对应的skywalking agent 日志。打开skywalking ui(http://1.1.1.10:8060/),访问我们(这里是简单springboot 应用)应用(如http://1.1.1.10:8081/test)
二、集群模式
在生产环境下,一般推荐搭建 SkyWalking 集群环境。当然也可以在生产环境下使用 SkyWalking 单机环境,毕竟 SkyWalking 挂了之后,不影响业务的正常运行。
搭建一个 SkyWalking 集群环境,步骤如下:
- 第一步,搭建一个 Elasticsearch 服务的集群。
- 第二步, 搭建一个注册中心的集群。目前 SkyWalking 支持 Zookeeper、Kubernetes、Consul、Nacos 作为注册中心。
- 第三步,搭建一个 SkyWalking OAP 服务的集群,同时参考https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/zh/master/setup/backend/backend-cluster.md 将 SkyWalking OAP 服务注册到注册中心上。
- 第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。另外,在设置 SkyWaling Agent 的 SW_AGENT_COLLECTOR_BACKEND_SERVICES 地址时,需要设置多个 SkyWalking OAP 服务的地址数组。
- 第五步,搭建一个 SkyWalking UI 服务的集群,同时使用 Nginx 进行负载均衡。另外,在设置 SkyWalking UI 的 collector.ribbon.listOfServers 地址时,也需要设置多个 SkyWalking OAP 服务的地址数组。
具体的搭建过程,大家可以去尝试下。