10分钟3个步骤集成使用SkyWalking

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 此时就非常推荐SkyWalking了,SkyWalking不仅仅是一款链路跟踪工具,还可以作为一个系统监控工具,还具有告警功能。使用简便、上手又快。真可谓快、准、狠。

随着业务发展壮大,微服务越来越多,调用链路越来越复杂,需要快速建立链路跟踪系统,以及建立系统的可观测性,以便快速了解系统的整体运行情况。此时就非常推荐SkyWalking了,SkyWalking不仅仅是一款链路跟踪工具,还可以作为一个系统监控工具,还具有告警功能。使用简便、上手又快。真可谓快、准、狠。

本文主要介绍如何快速集成使用SkyWalking,从3个方面入手:原理、搭建、使用。

1、原理

1.1、概括

SkyWalking整体分为4个部分:探针采集层、数据传输和逻辑处理层、数据存储层、数据展示层。

1.2、探针采集层

所谓探针,实际上是一种动态代理技术,只不过不是我们常用的Java代理类,而是在类加载时,就生成了增强过的代理类的字节码,增强了数据拦截采集上报的功能。

探针技术是在项目启动时通过字节码技术(比如JavaAgent、ByteBuddy)进行类加载和替换,生成新的增强过的Class文件,对性能的影响是一次性的。

探针技术,因为在类加载时进行转换,增强了部分功能,所以会增加项目启动时间,同时也会增加内存占用量和线程数量。但是对性能影响不大,官方介绍在5% ~ 10%之间。

探针层在类转换时,通过各种插件对原有的类进行增强,之后在运行时拦截请求,然后将拦截的数据上报给Skywalking服务端。同时再加上一些定时任务,去采集应用服务器的基础数据,比如JVM信息等。

1.3、数据传输和逻辑处理层

SkyWalking探针层使用了GRPC作为数据传输框架,将采集的数据上报到SkyWalking服务端。

SkyWalking服务端接收数据后,利用各种插件来进行数据的分析和逻辑处理。比如:JVM相关插件,主要用于处理上报上来的JVM信息,数据库插件用来分析访问数据库的信息。然后在将数据存入到数据存储层。

1.4、数据存储层

SkyWalking的数据存储层支持多种主流数据库,可以自行到配置文件里查阅。我推荐使用ElasticSearch,存储量大,搜索性能又好。

1.5、数据展示层

SkyWalking 通过 Rocketbot 进行页面UI展示。可以在页面的左上角看到这个可爱的Rocketbot

2、搭建

知道了原理,搭建就很轻松了,使用SkyWalking其实就3个步骤:

  1. 搭建数据存储部件。
  2. 搭建SkyWalking服务端。
  3. 应用通过agent探针技术将数据采集上报给SkyWalking服务端。

2.1、搭建数据存储部件

SkyWalking支持多种存储方式,此处推荐采用Elasticsearch作为存储组件,存储的数据量较大,搜索响应快。

快速搭建Elasticsearch:

  1. 安装java:yum install java-1.8.0-openjdk-devel.x86_64
  2. 下载Elasticsearch安装包:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-1
  3. 修改elasticsearch.yml文件的部分字段:cluster.namenode.namepath.datapath.logsnetwork.hosthttp.portdiscovery.seed_hostscluster.initial_master_nodes。将字段的值改成对应的值。
  4. 在Elasticsearch的bin目录下执行./elasticsearch启动服务。
  5. 访问http://es-ip:9200,看到如下界面就代表安装成功。
{
  "name": "node-1",
  "cluster_name": "my-application",
  "cluster_uuid": "GvK7v9HhS4qgCvfvU6lYCQ",
  "version": {
    "number": "7.17.1",
    "build_flavor": "default",
    "build_type": "rpm",
    "build_hash": "e5acb99f822233d6ad4sdf44ce45a454xxxaasdfas323ab",
    "build_date": "2023-02-23T22:20:54.153567231Z",
    "build_snapshot": false,
    "lucene_version": "8.11.1",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}

2.2、搭建SkyWalking服务端

搭建SkyWalking服务端只需要4步:

1、下载并解压skywalking:https://archive.apache.org/dist/skywalking/8.9.0/

2、进入到安装目录下的修改配置文件:config/apllication.yaml。将存储修改为elasticsearch。

3、进入到安装目录下的bin目录,执行./startup.sh启动SkyWalking服务端。

4、此时使用jps命令,应该可以看到如下2个进程。一个是web页面进程,一个是接受和处理上报数据的进程。如果没有jps命令,那自行查看下是否配置了Java环境变量。
同时访问http://ip:8080应该可以看到如下界面。

2.3、应用采集上报数据

应用采集并且上报数据,直接使用agent探针方式。分为以下3步:

1、下载解压agenthttps://archive.apache.org/dist/skywalking/java-agent/8.9.0/,找到skywalking-agent.jar

2、添加启动参数

  • 应用如果是jar命令启动,则直接添加启动参数即可:
java -javaagent:/自定义path/skywalking-agent.jar -Dskywalking.collector.backend_service={
  
  {agentUrl}} -jar xxxxxx.jar

此处的{ {agentUrl}}是SkyWalking服务端安装的地址,再加上11800端口。比如:10.20.0.55:11800

  • 应用如果是Docker镜像的部署方式,则需要将skywalking-agent.jar打到镜像里,类似下图:

3、启动项目后,即可看到监控数据,如下图:

3、UI页面使用

原理和搭建已经介绍完毕,接下来快速介绍UI页面的功能。下图标红的部分是重点关注区域:

3.1、仪表盘

  • APM:以全局(Global)、服务(Service)、服务实例(Instance)、端点(Endpoint)的维度展示各项指标。
  • Database:展示数据库的各项指标。

  • 服务(Service):某个微服务,或者某个应用。
  • 服务实例(Instance):某个微服务或者某个应用集群的一台实例或者一台负载。
  • 端点(Endpoint):某个Http请求的接口,或者 某个接口名+方法名。

3.2、拓扑图

3.3、追踪

关于UI界面的使用,还可以参考这个链接:https://juejin.cn/post/7106307197763584030,这里写的比较详细。

总结

本文主要从3个方面入手:原理、搭建、使用,介绍如何快速集成使用SkyWalking。核心重点:

  • SkyWalking其实就4部分组成:探针采集上报数据分析和逻辑处理、数据存储数据展示。安装使用简单、易上手。
  • 探针技术是SkyWalking的基石,说白了就是:在类加载时进行字节码转换增强,然后去拦截请求,采集上报数据。
  • UI页面的使用,多用用就熟悉了。

本篇完结!感谢你的阅读,欢迎点赞 关注 收藏 私信!!!

原文链接:http://www.mangod.top/articles/2023/10/11/1696996147664.htmlhttps://mp.weixin.qq.com/s/5P6vYSOCyZAOMH2Ywj1AvQ

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
9月前
|
人工智能 监控 Java
SpringBoot实战(十六):集成Skywalking调用链监控系统
SpringBoot实战(十六):集成Skywalking调用链监控系统
558 0
|
11月前
|
存储 运维 SpringCloudAlibaba
SpringCloud Alibaba微服务运维一 - 集成SkyWalking
SpringCloud Alibaba微服务运维一 - 集成SkyWalking
515 0
|
SQL 存储 Java
【java_wxid项目】【第十五章】【Spring Cloud Skywalking集成】
点击:【使用Spring Boot快速构建应用】 点击:【使用Spring Cloud Open Feign基于动态代理动态构造请求实现与其他系统进行交互】 点击:【使用Spring Cloud Hystrix实现服务容错、熔断、降级、监控】 点击:【使用Spring Cloud Ribbon以库的方式集成到服务的消费方实现客户端负载均衡】
307 0
|
存储 监控 数据可视化
链路监控(skywalking)集成
链路监控(skywalking)集成
243 0
链路监控(skywalking)集成
|
存储 Kubernetes 数据可视化
Kubernetes + Spring Cloud 集成链路追踪 SkyWalking
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
895 1
Kubernetes + Spring Cloud 集成链路追踪 SkyWalking
|
6天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
该文是一系列关于从零开始手写实现 Apache Tomcat 的教程概述。作者希望通过亲自动手实践理解 Tomcat 的核心机制。文章讨论了 Spring Boot 如何实现直接通过 `main` 方法启动,Spring 与 Tomcat 容器的集成方式,以及两者生命周期的同步原理。文中还提出了实现 Tomcat 的启发,强调在设计启动流程时确保资源的正确加载和初始化。最后提到了一个名为 mini-cat(嗅虎)的简易 Tomcat 实现项目,开源于 [GitHub](https://github.com/houbb/minicat)。
|
6天前
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
|
6天前
|
前端开发 Java 应用服务中间件
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
本文探讨了Spring Boot如何实现像普通Java程序一样通过main方法启动,关键在于Spring Boot的自动配置、内嵌Servlet容器(如Tomcat)以及`SpringApplication`类。Spring与Tomcat集成有两种方式:独立模式和嵌入式模式,两者通过Servlet规范、Spring MVC协同工作。Spring和Tomcat的生命周期同步涉及启动、运行和关闭阶段,通过事件和监听器实现。文章鼓励读者从实现Tomcat中学习资源管理和生命周期管理。此外,推荐了Netty权威指南系列文章,并提到了一个名为mini-cat的简易Tomcat实现项目。
|
5天前
|
Java 数据库连接 数据安全/隐私保护
springBoot集成token认证,最全Java面试知识点梳理
springBoot集成token认证,最全Java面试知识点梳理
|
6天前
|
消息中间件 JSON Java
RabbitMQ的springboot项目集成使用-01
RabbitMQ的springboot项目集成使用-01

热门文章

最新文章