这里是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
传递