点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试文章

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

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,解压后的目录如下:

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文件中。

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的启动脚本

sh oapService.sh

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

启动skywalking webapp

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

server:port: 8080
collector:path: /graphqlribbon: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的启动命令:

sh webappService.sh

spring boot项目集成

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

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工程:

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启动的机器上调用以下接口:

curl localhost:8500/testInsert
curl localhost:8500/testGetAll

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

拓扑图如下:

接口数据调用详情如下:

源码下载

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

热门内容:写那么多年Java,还不知道啥是Java agent 的必须看一下!
科普|什么是负载均衡(Load balancing)干掉GuavaCache:Caffeine才是本地缓存的王
稳~阿里程序员常用的 15 款开发者工具四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

五分钟体验SpringBoot+Skywalking相关推荐

  1. 五分钟实现SpringBoot快速入门

    文章目录 一.创建Maven工程 二.添加SpringBoot的起步依赖 三.编写SpringBoot引导类 四.编写Controller 五.测试 六.SpringBoot工程热部署 一.创建Mav ...

  2. 五分钟体验分布式调度框架xxl-job

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速. ...

  3. 五分钟体验分布式事务框架Seata

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单 ...

  4. druid seata 配置_五分钟体验分布式事务框架Seata

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案.本教程 ...

  5. SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)

    需求背景 SpringBoot用法:微信企业支付集成(五分钟集成) 问题痛点 通过SpringBoot框架,集成服务端微信企业支付接口,做到下载即用(填写好相关微信支付后台相关Key信息),最快五分钟 ...

  6. android自定义美颜相机完整程序,Android OpenGL ES从入门到进阶(一)—— 五分钟开发一款美颜相机...

    源码链接:https://github.com/smzhldr/AGLFramework 一.前言 商店里有数十款的美颜相机类产品,其实现原理基本上都是以OpenGL ES为核心的特效处理,大神可以忽 ...

  7. java标志清理_JVM内存管理之GC算法精解(五分钟让你彻底明白标记/清除算法)...

    相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...

  8. JVM内存管理–GC算法精解(五分钟让你彻底明白标记/清除算法)

    相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...

  9. 【树莓派自动化应用实例】整点提醒自己休息五分钟

    背景介绍 我有一个习惯,定闹钟每隔60分钟左右,提醒自己休息一次.我发现自己有时候长时间思考,很容易拘泥于细节之中.适当的简单休息过后,往往会对正在解决和处理的问题有新的认识和发现,有事半功倍的奇效. ...

最新文章

  1. 最靠谱的解决 Ubuntu 18.04 / Linux mint 19 安装网易云音乐 不能正常点击启动问题
  2. 《弗洛伊德及其后继者》读书笔记(part1)--西格蒙德·弗洛伊德与经典精神分析传统
  3. 计算机网络之数据链路层:5、停止等待协议
  4. mysql java.util.date_jdbc-java.sql.date和java.util.date之间转换
  5. 关于2006年上半年网工试考一览
  6. 新CentOS配制使用时会遇到的问题,Yum的使用,Yum源切换
  7. C语言单片机笔试题,c语言面试题集(单片机
  8. 自动刷新网页代码(可多个网页)
  9. 活泼绵软的乐伽萌兔揉捏按摩背靠体验
  10. java中依赖_java中依赖、关联、聚合
  11. matlab中clear;close;clc的作用说明
  12. HiveQL的基础操作全集
  13. 焦作机器人编程比赛_2018 焦作icpc现场赛总结
  14. 自定义的毛玻璃效果,高斯模糊
  15. 硬盘格式化后怎么恢复文件
  16. WiFi配网~智能家居配网解决方案
  17. 解决桌面图标左下角蓝色问号问题
  18. 苹果Mac Safari下载文件没有反应如何解决?
  19. 如何拓荒github
  20. Comsol学习---声学与振动建模-----3

热门文章

  1. git 使用和一些错误
  2. Linux复制文件scp
  3. python插入排序演示源码
  4. 使用jQuery开发messager消息框插件
  5. BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)
  6. Android中的eventBus传值
  7. shell脚本俄罗斯方块游戏
  8. python统计列表内元素个数
  9. 《JS权威指南学习总结--第十一章子集和扩展》
  10. windows程序设计之对话框简介1