当前位置: 首页 > news >正文

监控平台SkyWalking9入门实践

简便快速的完成对分布式系统的监控;

一、业务背景

微服务作为当前系统架构的主流选型,虽然可以应对复杂的业务场景,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,对于一些核心的业务流程,其请求链路会涉及到多个业务服务,少则三五个,多则十几个都很常见:

真实的业务场景远比图解复杂,在这种模式下当请求发生故障时,或者进行优化时,需要分析链路性能,追踪调用链路,排查和解决链路故障;

要完成上述流程,需要对请求的链路有完整监控,并且采集和分析各个环节的数据,这样才能清晰的理解系统的行为信息,比如耗时分析,故障原因发现,从而进行优化和解决;能实现这种能力的组件很多,这里来看看基于SkyWalking9的实践方式;

二、组件原理

Skywalking是APM规范的国产开源分布式链路追踪系统,APM(Application-Performance-Management)即应用性能管理,支持对SpringCloud微服务集成,并且无代码层面的侵入:

结构体系

业务机制

SpringCloud:分布式系统中的服务,启动时配置代理即可;

Agent:以探针的方式进行请求链路的数据采集,并向管理服务上报;

OAP-Service:接收数据,完成数据的存储和展示;

Storage:数据的存储层,支持ElasticSearch、Mysql、H2多种方式;

UI界面:数据的可视化展示界面;

工作流程,服务通过探针的方式接入数据采集的功能,之后请求链路的相关处理行为会上报到OAP服务中,进行数据的聚合管理和分析,并存储在持久层,然后可以通过UI界面进行可视化呈现;

三、安装部署

1、版本描述

skywalking在之前的旧版本中,apm与agent是在一个包中的,在9.0的版本中是需要分开下载的;agent包下载解压之后,也将其放到apm包下面维护:

  • skywalking-apm-9.1.0.tar.gz
  • skywalking-java-agent-8.10.0.tgz

2、配置存储方式

Skywalking数据存储的组件有多种选型方式,这里方便本地调试,就选择MySQL数据库,在生产环境中通常选择ElasticSearch组件;

配置文件:config/application.yml

storage:
  selector: ${SW_STORAGE:mysql}
mysql:
  properties:
    jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true"}
    dataSource.user: ${SW_DATA_SOURCE_USER:username}
    dataSource.password: ${SW_DATA_SOURCE_PASSWORD:password}

需要注意的是,要在本地的MySQL中新建swtest数据库,采用latin1字符编码,可以避免索引长度的问题,表的创建是自动的,然后需要在包中添加MySQL依赖;

3、启动与停止

  • 启动oap服务:sh bin/oapService.sh
  • 启动UI界面:sh bin/webappService.sh
  • 服务停止命令:jps查看,kill相关编号;

UI界面服务默认是8080端口,如果存在占用问题,可以修改:webapp/webapp.yml文件,更换端口;启动完成后访问LocalIP:port即可;

4、服务集成

在本地存在gatewayfacadeaccount,三个服务,案例围绕account服务中的请求展开,由于涉及网关服务,还需要添加相关插件的依赖;

optional-plugins可选插件目录中的两个网关的依赖包,复制到plugins插件目录下;

在服务启动类中添加agent配置,如果在生产环境中,通常会统一在脚本中设置,由于在本地环境演示,基于IDEA工具进行管理;

-javaagent:本地路径/agent/skywalking-agent.jar -Dskywalking.agent.service_name=gateway
-javaagent:本地路径/agent/skywalking-agent.jar -Dskywalking.agent.service_name=facade
-javaagent:本地路径/agent/skywalking-agent.jar -Dskywalking.agent.service_name=account

这样全部的配置就完成了,依次启动skywalking相关服务,与这里配置的三个微服务,下面再来看看功能细节;

四、功能细节

1、服务监控

相关服务启动完成后,访问skywalking界面,主页加载的即上述配置的三个微服务,这样说明整个流程是正常的,点击服务名称可以查看服务相关的细节指标;

2、拓补结构图

请求通过gateway网关服务,经过facade门面服务,到达account业务服务,完成一次调用后,查看请求的拓补结构图(即Topology一栏);

可以清晰的看到请求的路由链路,以及相关服务访问的数据库地址,对于微服务架构中的复杂接口来说,借助该拓补模型,既可以快速理解业务逻辑,同时在出具文档时可以节省很多画图时间;

3、链路跟踪

上面只是请求的拓补结构图,在实际应用中还是更侧重链路跟踪,查看account服务请求链路(即Trace一栏);

skywalking组件对于开发来说,最常用的就是该功能,这里采集了请求链路上的各个节点,以及执行的耗时分析,点击相关节点可以查看详细信息,针对异常请求同样可以采集到异常信息的描述;

这样可以极大的提升问题排查的效率,尤其对于那种路由十多个服务的业务逻辑;

4、数据库监控

虽然在整个配置中没有显式的添加对MySQL的监控,但是skywalking依旧可以实现对服务中的数据库监控,对于这些指标细节不过多描述,可以自行查阅文档;

本篇文章只是站在开发的角度,总结skywalking的应用方式,并未涉及过多的细节原理,其它强大的功能设计,对于开发来说同样值得参考。


相关文章:

  • 【Linux】常见指令(二)
  • 网络套接字实现UDP机制通信
  • C语言字符串函数的详解
  • 在 Next.js 中使用无服务器函数构建 API
  • Go语言json包怎么使用?
  • ios屏蔽更新的插件
  • Linux之内核Platform LED
  • 详解CAN总线:CAN总线报文格式—遥控帧
  • 1,【electron+vue】 构建桌面应用——创建electron项目(包括创建,运行,打包碰到的问题)
  • vue3使用pinia
  • 快用Python(Pygame)代码燃放起你专属的烟花吧,咝......咻——嘭~
  • 关于CSDN编程竞赛的一些感受
  • 二分答案合辑
  • Eclipse Theia技术揭秘——自定义布局
  • 机器学习模型4——聚类1(k-Means聚类)
  • 2017-09-12 前端日报
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular 响应式表单之下拉框
  • Druid 在有赞的实践
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Flannel解读
  • Java多线程(4):使用线程池执行定时任务
  • java取消线程实例
  • leetcode388. Longest Absolute File Path
  • MySQL-事务管理(基础)
  • Service Worker
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Terraform入门 - 1. 安装Terraform
  • Vue小说阅读器(仿追书神器)
  • 前端之Sass/Scss实战笔记
  • 区块链共识机制优缺点对比都是什么
  • 学习使用ExpressJS 4.0中的新Router
  • 云大使推广中的常见热门问题
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​用户画像从0到100的构建思路
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一)SpringBoot3---尚硅谷总结
  • (译) 函数式 JS #1:简介
  • .NET : 在VS2008中计算代码度量值
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core引入性能分析引导优化
  • .NET 分布式技术比较
  • .net 托管代码与非托管代码
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • [51nod1610]路径计数
  • [android] 切换界面的通用处理
  • [AX]AX2012 R2 出差申请和支出报告
  • [BZOJ 2142]礼物(扩展Lucas定理)