这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党
背景
本次我们的目的就是对skywalking整体架构有一个了解,然后学习一下基于docker如何搭建skywalking,然后就是spring boot项目如何基于agent接入skywalking
本文所用到的官方文档都会在文章中给出,授人以鱼不如授人以渔
skywalking版本
使用最新官方版本9.4.0
官方文档地址
skywalking整体架构
这里引用官方的架构图 逻辑上分四个部分
Probes(探针): 收集遥测数据。包括各种格式(SkyWalking,Zipkin,OpenTelemetry,Prometheus,Zabbix等)的指标,跟踪,日志和事件
遥测数据(telemetry data):用于确定应用程序是否健康并按设计执行>的信息称为遥测数据。 这里感觉这个翻译很怪,但是查询了比较多资料好像确实翻译是
遥测数据
Platform backend(平台后端):平台后端支持数据聚合、分析和流流程,涵盖跟踪、指标、日志和事件。充当聚合器角色和/或接收者角色Storage(存储):存储通过开放/可插拔接口存储SkyWalking数据。您可以选择现有的实现,例如 ElasticSearch、H2、MySQL、TiDB、BanyanDB,也可以自己实现UI:一个高度可定制的基于Web的界面,允许SkyWalking最终用户可视化和管理SkyWalking数据。
skywalking设计目标
- 保持可观测性
- 拓扑、度量和跟踪
- 重量轻
- 可插拔
- 便携性
- 互操作性
这里由于是入门,所以我们大致知道有这么些东西,但不用去了解太多 后面我们会学习是如何设计的,以及一些源码分析
运行原理
这张图很清晰的说明了原理。
一个ui也就是一个前端访问页面
一个agent/probe 负责对client的数据采集上报到Backend,然后Backend将数据存储在Storage
安装 skywalking
安装Platform backend
这里我们先安装后台,基于docker安装,存储我们使用默认的h2,也就是内存数据库,无需搭建其他的存储
线上肯定不会使用
h2数据库,因为重启数据就丢了,一般线上用Elasticsearch存储会多一点
docker安装
docker run --name skywalking-oap --restart always -d -p 11800:11800 -p 12800:12800 -p 9412:9412 apache/skywalking-oap-server:9.4.0
安装Ui
docker run --name skywalking-ui --restart always -d -p 8080:8080 -e SW_OAP_ADDRESS=http://192.168.1.1:12800 -e SW_ZIPKIN_ADDRESS=http://192.168.1.1:9412 apache/skywalking-ui:9.4.0
注意这里
SW_OAP_ADDRESS、SW_ZIPKIN_ADDRESS地址不要写127.0.0.1或者localhost这样是访问不通的,因为是两个不同的docker容器,用自己本机内网ip即可
验证
安装完成后我们访问 http://127.0.0.1:9412
页面就长的像下面这个样子
java项目agnet接入
目前最新版本的agent是v8.15.0,我们下载这个最新的就好
下载解压完目录是如下的:
这里我们接入的项目以一个简单的spring boot项目为例
这里项目的源码可以在github:github.com/weihubeats/… 下载
我们在项目启动参数VM options添加如下参数
-javaagent:/Users/xiaozoujishu/Downloads/skywalking-agent/skywalking-agent.jar
-DSW_AGENT_NAME=order-service
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
javaagent:就是我们刚才下载agent的路径DSW_AGENT_NAME: 服务名DSW_AGENT_COLLECTOR_BACKEND_SERVICES:数据上报地址
然后启动服务,启动完服务,我们调用下测试接口
多点几次,然后我们去我们的ui页面查看效果
就可以看到我们服务的一些监控信息了。
总结
本次我们的skywalking入门就结束了,我们介绍了skywalking是什么?
基于docker如何安装,以及spring boot项目如何基于agent监控。
我们会我们继续学习微服务下的全链路log id传递以及全链路id传递