监控平台SkyWalking9入门实践

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

一、业务背景

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

监控平台SkyWalking9入门实践

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

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

二、组件原理

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

结构体系

监控平台SkyWalking9入门实践

业务机制

监控平台SkyWalking9入门实践

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

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

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

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

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

监控平台SkyWalking9入门实践

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

三、安装部署

1、版本描述

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

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

监控平台SkyWalking9入门实践

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依赖;

监控平台SkyWalking9入门实践

3、启动与停止

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

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

4、服务集成

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

监控平台SkyWalking9入门实践

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

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

监控平台SkyWalking9入门实践
-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界面,主页加载的即上述配置的三个微服务,这样说明整个流程是正常的,点击服务名称可以查看服务相关的细节指标;

监控平台SkyWalking9入门实践

2、拓补结构图

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

监控平台SkyWalking9入门实践

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

3、链路跟踪

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

监控平台SkyWalking9入门实践

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

监控平台SkyWalking9入门实践

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

4、数据库监控

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

监控平台SkyWalking9入门实践

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

五、源码参考

应用仓库:
https://gitee.com/cicadasmile/butte-flyer-parent

组件封装:
https://gitee.com/cicadasmile/butte-frame-parent

Original: https://www.cnblogs.com/cicada-smile/p/16729644.html
Author: 知了一笑
Title: 监控平台SkyWalking9入门实践

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610508/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ​探秘 Web 水印技术

    Web 水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印),本文将分别予以介绍,带你探秘…

    Linux 2023年6月8日
    0119
  • SSH_远程终端

    SSH 远程服务 目的 Windwos 和 Linux 的终端控制系统or传送传送文件, 当然 Linux和Linux 以及 Windwos 和 Windwos 之间的通信都是OK…

    Linux 2023年6月7日
    092
  • Linux常用命令

    基本操作 创建目录: mkdir xxx 删除目录: rm -rf xxx 切换目录: cd xxx,返回: cd – 创建文件: touch xxx.txt 复制文件: cp x…

    Linux 2023年6月8日
    0124
  • 【证券从业】金融基础知识-第五章 债券02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-06-09 23:55 陈景中 阅读…

    Linux 2023年6月13日
    096
  • Flask的环境配置

    from flask import Flask​ 通过专门的配置文件,读取配置项,适用于配置项较多 settings.py class Config(object):    DEB…

    Linux 2023年6月8日
    0105
  • 做任何事(决策)之前都要先考虑成本,再考虑收益

    所谓成本,就是我们在做一件事情时所付出的代价。 这个代价,或者说这个成本,有多有少,有显性有隐性,有我们知道的成本,也有我们不知道的成本。一切都是有成本的。 成本都有什么呢?一件事…

    Linux 2023年6月14日
    092
  • 一文让你明白Redis持久化

    网上虽然已经有很多类似的介绍了,但我还是自己总结归纳了一下,自认为内容和细节都是比较齐全的。 文章篇幅有 4k 多字,货有点干,断断续续写了好几天,希望对大家有帮助。不出意外地话,…

    Linux 2023年5月28日
    094
  • CentOS下配置NTP时间服务器

    配置ntp.conf [root@server ~]# vim /etc/ntp.conf For more information about this file, see th…

    Linux 2023年6月13日
    0114
  • Nginx配置TCP请求转发

    背景 有时候内网的服务器需要把服务提供给外网访问,但是这个内网的服务器没有公网ip,所以可以在一台有公网ip的nginx服务器配置TCP请求转发,把内网服务的端口映射出来到公网 N…

    Linux 2023年6月6日
    095
  • 使用ipmitool配置ipmi(远程控制卡)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0100
  • Guava 内存缓存的使用

    一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。 expireAfterWrite:当缓存项…

    Linux 2023年6月16日
    0118
  • ECMAScript 6.0

    本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。 博主…

    Linux 2023年6月13日
    089
  • Golang 在windows下编译Linux下可执行文件

    Windows 下编译Linux 64位可执行程序 set GOARCH=amd64 set GOOS=linux go build 如果想改回来,就 set GOOS=windo…

    Linux 2023年6月11日
    0116
  • 在Ubuntu20.04上安装Kubernetes-Kubeadm和Minikube

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 在本文中,我们将了解如何在 Ubuntu 20.04 上安装 Kubernetes。在过去的几年里,容器化为开发人员提供了很大的…

    Linux 2023年5月27日
    0113
  • [ Python ] 音视频剪辑

    https://www.cnblogs.com/yeungchie/ 视频 提取视频 from moviepy.editor import * 从 MP4 文件提取 video =…

    Linux 2023年6月7日
    095
  • Mobaxterm使用(类似xshell)

    网盘保存(链接:https://pan.baidu.com/s/1r_tx_eZ7zSUslLNNl5oOFw 提取码:fcc8) 主要功能 支持各种连接SSH,X11,RDP,V…

    Linux 2023年5月28日
    0105
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球