Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >五分钟体验SpringBoot+Skywalking

五分钟体验SpringBoot+Skywalking

作者头像
方志朋
发布于 2022-01-06 08:28:34
发布于 2022-01-06 08:28:34
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

Skywalking是一个分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持Java, .Net Core, PHP, NodeJS, Golang, LUA语言探针,支持Envoy + Istio构建的Service Mesh。

快速安装

本案例将skywalking中的数据存储在elasticesearch中,需要提前安装好elasticsearch7.x,可以参考这篇文章(https://www.fangzhipeng.com/springboot/2020/06/01/sb-es.html)安装,当然skywalking可以将数据存储在其他数据库中,比如mysql、infludb等。

去官网下载apache-skywalking的安装包,本案例是需要将监控数据存储在elasticesearch中,所以使用apache-skywalking-apm-es7-6.6.0.tar.gz这个jar包,并且需要安装elasticsearch7.x。执行下面的命令下载skywalking

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://www.apache.org/dyn/closer.cgi/skywalking/6.6.0/apache-skywalking-apm-es7-6.6.0.tar.gz

执行tar -zxvf apache-skywalking-apm-es7-6.6.0.tar.gz,解压apache-skywalking-apm-es7-6.6.0.tar.gz,解压后的目录如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
agent  bin  config  LICENSE  licenses  logs  mesh-buffer  NOTICE  oap-libs  README.txt  trace-buffer  webapp

主要目录结构如下:

  • bin目录存放的是启动脚本,包含oapService.sh、webappService.sh等启动脚本
  • config是oap服务的配置,包含一个application.yml的配置我呢
  • agent是skywalking的agent,一般用来采集业务系统的日志
  • webapp目录是skywalking前端的UI界面服务的配置

整体的架构如下:

在整个skywalking的系统中,有四个角色:

  • skywalking agent和业务系统绑定在一起,负责收集各种监控数据
  • Skywalking oapservice是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中(本案例使用elasticsearch);接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapservice通常以集群的形式存在。
  • skywalking webapp,前端界面,用于展示数据。
  • 用于存储监控数据的数据库,比如mysql、elasticsearch等。

启动Skywalking oapservice

修改oapservice的配置文件,在config目录下的application.yml文件中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cluster:
  standalone:
storage:
 elasticsearch7:
    nameSpace: ${SW_NAMESPACE:"my-application"}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
    trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
    user: ${SW_ES_USER:""}
    password: ${SW_ES_PASSWORD:""}
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
    recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} 
    otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} 
    monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} 
    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000}
    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} 
    resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
  • cluster.standalone集群以单体的形式存在
  • storage.elasticsearch7,存储使用elasticsearch7.x版本。
  • storage.elasticsearch7.clusterNodes填elasticsearch的

在bin目录下执行 oapService的启动脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh oapService.sh

oapService服务暴露了2个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800。

启动skywalking webapp

skywalking webapp是用于展示数据的前端界面,在webapp目录下修改webapp.yml,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 8080
collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 127.0.0.1:12800
  • server.port是webapp的启动端口
  • collector.ribbon.listOfServers 填写Skywalking oapservice的端口。

在bin目录下执行webappService的启动命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh webappService.sh

spring boot项目集成

将agent目录拷贝到部署spring boot项目的机器里,修改agent的配置,配置在agent/config/agent.config:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
agent.service_name=${SW_AGENT_NAME:my-skywalking}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

# Logging file_name
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}

# Logging level
logging.level=${SW_LOGGING_LEVEL:DEBUG}
  • agent.service_name填和springboot的application.name即可,也可以随意取名字,但是不要和其他应用重名。
  • collector.backend_service填写oapService的地址,端口填11800。

以javaagent的形式启动springboot工程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -javaagent:/root/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -jar boot-es-0.0.1-SNAPSHOT.jar
  • -javaagent:/root/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar,指定javaagent的目录,即skywalking-agent.jar在机器上的绝对路径。
  • boot-es-0.0.1-SNAPSHOT.jar的源码下载地址为https://github.com/forezp/distributed-lab/tree/master/boot-es

简单测试

在boot-es-0.0.1-SNAPSHOT.jar启动的机器上调用以下接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl localhost:8500/testInsert
curl localhost:8500/testGetAll

在浏览上访问skywalking webapp的地址,比如本文中skywalking webapp安装在本地,即访问localhost:8080,首页展示如下(如果数据展示不出来,尝试清空缓存重试,前端貌似不是很给力),展示了接口请求的一些数据:

拓扑图如下:

接口数据调用详情如下:

源码下载

https://github.com/forezp/distributed-lab/tree/master/boot-es

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS 6搭建SkyWalking 做分布式跟踪
当企业应用进入分布式微服务时代,应用服务依赖会越来越多,skywalking可以很好的解决服务调用链路追踪的问题,而且基于Java探针技术,基本对应用零侵入零耦合。
星哥玩云
2022/07/27
6990
CentOS 6搭建SkyWalking 做分布式跟踪
使用skywalking监控springboot项目
执行startup.bat之后会启动如下两个服务: (1)Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 ,Http默认端口 12800,gRPC默认端口 11800。 (2)Skywalking-Webapp:管理平台页面 默认端口 8080
Vincent-yuan
2022/05/06
1.9K0
使用skywalking监控springboot项目
基于docker部署skywalking实现全链路监控
skywalking是一个开放源码的,用于收集、分析,聚合,可视化来自于不同服务和本地基础服务的数据的可观察的平台, skywalking提供了一个简单的方法来让你对你的分布式系统甚至是跨云的服务有清晰的了解。 它更像是一个现代的系统性能管理,特别为分布式系统而设计。
py3study
2020/09/10
8.7K3
基于docker部署skywalking实现全链路监控
快速学习-skywalking入门
根据官方的解释,Skywalking是一个可观测性分析平台(Observability Analysis Platform简称OAP) 和应用性能管理系统(Application Performance Management简称APM)。
cwl_java
2020/08/10
8.5K0
快速学习-skywalking入门
用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
SkyWalking 是一个应用性能监控系统,特别为微服务、云原生和基于容器(Docker, Kubernetes, Mesos)体系结构而设计。除了应用指标监控以外,它还能对分布式调用链路进行追踪。类似功能的组件还有:Zipkin、Pinpoint、CAT等。
用户5224393
2020/12/17
1.5K0
用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
Skywalking的存储配置与调优
作为一款APM和全链路监控平台,Skywalking算是挺出色的。Skywalking是APM监控平台的后起之秀,大有超越其他开源APM监控平台的趋势。它通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。
smooth00
2020/05/29
10.3K0
CentOS7 SkyWalking APM8.1.0 搭建与项目集成使用
SkyWalking是一个可观测性分析平台和应用性能管理系统,提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,并支持多种开发语言。
肖哥哥
2020/08/06
2.6K0
基于 SkyWalking 实现服务链路追踪
SkyWalking 在逻辑上分为四部分:探针、平台后端、存储和用户界面。其架构图如下:
端碗吹水
2020/09/23
1.4K0
基于 SkyWalking 实现服务链路追踪
使用 docker 部署 spring boot
SkyWalking是一款广受欢迎的国产APM(Application Performance
花落花相惜
2021/11/25
9170
搭建 SkyWalking 服务(For ElasticSearch 7)
这里我选择当前最新的6.6.0版本的二进制包,由于一会需要对接的es服务版本为7.x,所以这里得选择for ElasticSearch 7:
端碗吹水
2020/09/23
2.1K0
搭建 SkyWalking 服务(For ElasticSearch 7)
用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
SkyWalking 是一个应用性能监控系统,特别为微服务、云原生和基于容器(Docker, Kubernetes, Mesos)体系结构而设计。除了应用指标监控以外,它还能对分布式调用链路进行追踪。类似功能的组件还有:Zipkin、Pinpoint、CAT等。
java进阶架构师
2020/12/17
1.2K0
用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
基于Skywalking实现分布式追踪与监控
SkyWalking是一个开源的可观测分析平台(Observability Analysis Platform), 用于从服务和云原生基础设施收集, 分析, 聚合及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统, 甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统, 尤其专为云原生、基于容器的分布式系统设计。
IT大咖说
2020/11/04
1.3K0
基于Skywalking实现分布式追踪与监控
监控平台SkyWalking9入门实践
微服务作为当前系统架构的主流选型,虽然可以应对复杂的业务场景,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,对于一些核心的业务流程,其请求链路会涉及到多个业务服务,少则三五个,多则十几个都很常见:
知了一笑
2022/11/30
8790
监控平台SkyWalking9入门实践
springboot 日志跟踪(skywalking)
上了 springboot 微服务框架后会有很多微服务,每次都到单个微服务自己的日志海洋里去找需要很大经理, 日志跟踪就会成为一个麻烦。我们尝试来寻找一个简化方案
张云飞Vir
2022/09/29
1.8K0
【第二十二篇】商城系统-Skywalking链路追踪【商城系统完结篇】
  Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。
用户4919348
2022/10/08
8070
【第二十二篇】商城系统-Skywalking链路追踪【商城系统完结篇】
不懂什么是Skywalking?看这吧!
skywalking又是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。
java技术爱好者
2020/10/30
14.4K1
不懂什么是Skywalking?看这吧!
Docker安装SkyWalking并监控Java程序
安装Skywalking可以采用H2存储数据或者ElasticSearch存储,这里采用ElasticSearch存储,采用OAP处理数据,并基于Skywalking UI展示数据。因为安装ElasticSearch的要求比较高建议内存在2G以上
余生大大
2022/11/02
1.5K0
Docker安装SkyWalking并监控Java程序
Skywalking系列博客2-Skywalking使用
Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。
用户1516716
2020/06/09
1.8K0
k8s快速接入skywalking
本文主要适合新手运维在快速配置APM 全链路检测 ,并在k8s部署过程给出一定思路, 如果已经解决该问题 直接跳过该文章,本文编写的过程中 参考前同事(小黑龙)之前部署心得和体验。
怀朔
2022/05/29
2.1K0
k8s快速接入skywalking
Skywalking的部署和简单使用
下载agent https://archive.apache.org/dist/skywalking/8.3.0/
是小张啊喂
2022/08/18
6250
相关推荐
CentOS 6搭建SkyWalking 做分布式跟踪
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验