`
valiant025
  • 浏览: 17108 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

SpringCloud第十五篇:微服务利剑之APM平台(一)Skywalkingc

 
阅读更多

1. Skywalking概述

Skywalking与2016年11月2日由国人吴晟在Github上传v1.0版本,用于提供分布式链路追踪功能,从5.x开始,成为一个功能较为完善的APM(Application Performance Management)系统,2019年4月17日从Apache孵化器毕业,正式成为Apache顶级项目。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官方对自己介绍是专为微服务,云原生和基于容器(Docker,Kubernetes,Mesos)架构而设计。(了解源码可+WX:  haiwabbc)

2. Skywalking主要功能

  • 服务,服务实例,端点指标分析
  • 根本原因分析
  • 服务拓扑图分析
  • 服务,服务实例和端点依赖性分析
  • 慢服务检测
  • 性能优化
  • 分布式跟踪和上下文传播
  • 数据库访问指标、检测慢速数据库访问语句(包括SQL)
  • 告警

3. Skywalking主要特性

  • 多种监控手段,语言探针和service mesh
  • 多语言自动探针,Java,.NET Core和Node.JS
  • 多种后端存储支持
  • 轻量高效
  • 模块化,UI、存储、集群管理多种机制可选
  • 支持告警
  • 优秀的可视化方案

4. Skywalking架构简介

先看一下官方提供的架构图,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

Skywalking总体由四个部分agentcollectorwebapp-uistorage组成。图10-11从上到下是应用层接入,可以使用无入侵性的agent探针接入,通过HTTP或者gRPC讲数据发送至Skywalking分析平台collectorcollector对接受到的数据进行聚合分析,最后存储至storage中,这里支持多种存储方式,比较常用的有H2和ElasticSearch,最后可以由webapp-ui对所有的数据进行展示。

5. Spring Cloud与Skywalking实战

5.1 Skywalking部署构建

在介绍实战之前,我们先简单介绍一下Skywalking部署构建方案。

这里存储方式笔者选择使用ElasticSearch,具体版本是6.5.0,ElasticSearch的构建方式选择使用Docker,直接使用Linux搭建有点复杂,不适合初学者,使用Docker构建简单方便。

笔者构建的一些前置条件:

java:1.8
CentOS:7.6

如果当前CentOS上没有Docker环境,可以使用下面的语句快速构建:

yum install docker

 当构建成功后,可以使用下面的语句查看当前Docker的版本:

docker -v

 笔者这里的输出是:

Docker version 1.13.1, build 7f2769b/1.13.1

 安装好Docker以后,最好配置一下国内的镜像站,否则在网络不好的情况下可能出现Docker下载失败等情况,可以使用下面的语句来修改镜像地址:

vi /etc/docker/daemon.json

 笔者这里使用的是阿里云的镜像加速,如下:

{
    "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}

 各位读者可以自己去阿里云上开通自己的镜像加速,具体不多做介绍。

使用Docker构建ElasticSearch6.5.0,首先,需要下载ElasticSearch6.5.0的镜像,输入以下命令:

docker pull elasticsearch:6.5.0

 等待程序下载完成,完成后就可以启动镜像了,命令如下:

docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0

 ElasticSearch的默认启动内存是1g,如果当前服务器的内存不足1g,可以使用参数-e ES_JAVA_OPTS="-Xms256m -Xmx256m"限制ElasticSearch的启动内存大小,完整的语句如下:

docker run -d --restart=always -e ES_JAVA_OPTS="-Xms256m -Xmx256m" --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.5.0

 启动成功以后可以使用如下语句看一下是否启动成功:

docker ps

 结果如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

ElasticSearch6.5.0单节点版已经构建完成,为了方便后续操作,需要修改一个ElasticSearch的命名,输入命令docker exec -it es /bin/bash进入容器文件目录,输入vi config/elasticsearch.yml进入ElasticSearch配置文件,修改cluster.name的值,笔者这里修改为CollectorDBCluster,修改完成后,保存当前修改,输入exit退出容器文件目录,输入docker restart es重启当前容器,在浏览器输入http://192.168.44.128:9200/,看到如下信息可以证明ElasticSearch6.5.0单节点版已经在正常的运行了。

{
  "name" : "V-N2_ZQ",
  "cluster_name" : "CollectorDBCluster",
  "cluster_uuid" : "r9bFZ90WRyqSpMz80u61Yg",
  "version" : {
    "number" : "6.5.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "816e6f6",
    "build_date" : "2018-11-09T18:58:36.352602Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

 Skywalking构建,进入Skywalking官网,进入下载页面(http://skywalking.apache.org/downloads/ ),如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

因为我们是要在CentOS上运行,所以这里选择Linux二进制版,就是已经编译好的版本,无需我们自己编译,下载至我们的CentOS后,解压可以看到目录结构,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

  • agent:探针相关,后面会做更加详细的介绍。
  • bin:这里放的是oapService和webappService的启动脚本,当然也有执行两个脚本的合并脚本startup.sh
  • config:这里主要存放的是collector的配置信息,我们需要修改这里的application.yml中的有关ElasticSearch的配置,如下图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

修改storage.elasticsearch.nameSpace为我们前面构建ElasticSearch设置的cluster.name,笔者这里的值为CollectorDBCluster,同时修改storage.elasticsearch.clusterNodes为我们当前构建的ElasticSearch的地址。

  • logs:存放collector和webapp-ui生成的日志。
  • webapp:这里存放的是Skywalking展示UI的jar和配置文件。

Skywalking中默认使用的端口有8080、11800、12800,请保证这些端口未被占用,如需修改,可以修改config目录中的application.ymlwebapp目录中的webapp.yml

接下来启动collector和webapp-ui,进入bin目录中,执行命令./startup.sh,如:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

打开浏览器访问http://192.168.44.128:8080/,可以看到webapp-ui的仪表盘,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

Skywalking部署到这里就结束了,下面我们开始介绍Spring Cloud如何与Skywalking整合使用。

5.2 Spring Cloud整合Skywalking实战

先简单介绍一下案例内容,我们将创建4个工程,分别为Zuul-Service、Eureka-Service、Consumer-Service和Provider-Service,请求通过Zuul-Service访问至Consumer-Service再访问至Provider-Service完成一次链路调用。

整体架构图如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

具体实现代码列出,各位读者可以参考GitHub仓库(https://github.com/meteor1993/SpringCloudLearning/tree/master/chapter15),下面我们介绍Spring Cloud是如何与Skywalking整合的。

这里我们需要使用到Skywalking的探针agent,我们在工程chapter15的跟目录中新建一个文件夹,命名为skywalking,讲刚才解压的Skywalking中的agent整个文件夹copy到skywalking,这里我们启动时只需要配置javaagen命令加载agent探针即可,在idea中使用需要修改启动配置,点击右上角的Edit Configurations...,在打开的窗口中选择Environment->VM Options,配置如下脚本:

-javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=zuul-service
-Dskywalking.collector.backend_service=192.168.44.128:11800

 如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

还可以使用java -jar的方式来加载agent探针,我们将整个maven项目打包,运行mvn install的命令,使用java -jar的方式来启动,启动命令中增加启动参数,如下:

-javaagent:D:\Development\SpringCloudLearning\chapter15\skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=consumer-service -Dskywalking.collector.backend_service=192.168.44.128:11800 -jar zuul-0.0.1-SNAPSHOT.jar

 顺次启动四个工程后,使用浏览器访问:http://localhost:8080/client/hello?name=spring,多刷新几次后,我们再使用浏览器访问http://192.168.44.128:8080/,如

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

  • all_heatmap:所有服务响应时间的热点图
  • all_p99:所有服务响应时间的 p99 值

点击上边栏的拓扑图,可以看到当前我们工程的一个依赖拓扑关系,如:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

点击上边栏的追踪,可以看到左边是当前所有的访问请求,随便点击一个,可以在右边看到一个详细的链路追踪过程,如:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

点击链路,可以看到一些标记信息,包含端点、跨度类型、成功还是失败,以及一些Exception信息,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

点击仪表盘页面的Service,可以看到一些服务相关的信息,如平均响应时间、平均吞吐量、平均时延统计,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

  • service_instance_sla:服务实例的成功率
  • service_instance_resp_time:服务实例的平均响应时间
  • service_instance_cpm:服务实例每分钟调用次数

点击仪表盘页面的Endpoint,可以看到一些端点相关的信息,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

  • endpoint_cpm:端点每分钟调用次数
  • endpoint_avg:端点平均响应时间
  • endpoint_sla:端点成功率
  • endpoint_p99:端点响应时间的 p99 值

点击仪表盘页面的Instance,可以看到一些JVM相关的信息,如图:

 

SpringCloud系列教程 | 第十五篇:微服务利剑之APM平台(一)Skywalking
 

 

至此,Spring Cloud与Skywalking的介绍就结束了,感兴趣的朋友可以前往Github的官方网站进行查询。

6. 小结

这里总结一下整个案例的启动顺序:

  1. 启动ElasticSearch
  2. 启动collector
  3. 启动web-ui(或者使用整合脚本启动)
  4. 启动Agent(Eureka、provider、consumer、zuul)
  5. 应用调用
  6. 访问web-ui查看统计信息

以上启动顺序供各位读者参考,请各位读者最好按照以上顺序启动,因为不同的组件之前其实是有相互依赖关系的,如果随意更改启动顺序可能会造成某些未知问题。

 
分享到:
评论

相关推荐

    sct:基于Spring-Cloud的快速开发脚手架

    Spring Cloud作为微服务领域的一把利剑,以其强大的功能和易用性,赢得了开发者们的广泛青睐。今天我们将深入探讨一款名为sct的基于Spring Cloud的快速开发脚手架,它为开发者提供了一个高效、便捷的开发环境,助力...

    《破解“历史周期率”》观后感:用巡视利剑破解“历史周期率”.docx

    《破解“历史周期率”》观后感:用巡视利剑破解“历史周期率”.docx

    金华利剑财务单机版

    "金华利剑财务单机版"是一款专为会计人员设计的财务管理软件,旨在提供全面的会计功能,以满足不同行业的需求。这款软件以其强大的功能和易用性在财务领域获得了认可,是会计工作者进行日常财务管理的重要工具。 1....

    云中利剑:基于大数据的百度云查杀系统.pdf

    标题中提到的“云中利剑:基于大数据的百度云查杀系统”强调了该系统与大数据技术的结合以及它在云计算环境下执行的安全功能。描述中提及的“云端安全体系概述”、“文件云”、“特征云”、“URL云”、“大数据时代...

    利剑出题考试软件

    "利剑出题考试软件"是一款专为教育和培训领域设计的高效工具,它能够帮助教师、培训师或管理员快速创建、编辑和管理各种类型的考试题目。这款软件集成了丰富的题型选择,包括选择题、填空题、判断题、简答题等,以...

    web利剑:jQuery

    jQuery如同一把利剑,精准而快速地解决了网页动态化和交互性的问题。它的核心理念是"write less, do more",即通过简洁的语法实现复杂的页面操作。 描述部分提到“使用jQuery制作特效”,这是jQuery的一个显著优势...

    【利剑出鞘套利-EA】.zip

    【利剑出鞘套利-EA】是一款专为外汇交易设计的自动交易系统,它集成了多种策略,包括趋势跟随、网格交易以及马丁格尔策略,旨在实现风险最小化和利润最大化的目标。这款EA(Expert Advisor)是外汇交易中的智能顾问...

    管理利剑之EXCEL 02 公式函数.XLS

    管理利剑之EXCEL 02 公式函数.XLS

    管理利剑之EXCEL数据透视

    管理利剑之EXCEL数据透视 管理人士必须懂数据透视表

    管理利剑EXCEL经典图表.xls

    管理利剑EXCEL经典图表.xls

    R的极客理想:工具篇 带书签扫描版(1/2)

    R的极客理想:工具篇 带书签扫描版(1/2) 目录 封面 -20 书名 -18 版权 -17 前言 -16 目录 -7 第一部分 R基础 1 第1章 R语言基础包 2 1.1 R是最值得学习的编程语言 1.2 R的历史版本安装 8 1.3 fortunes记录R语言...

    R的极客理想:工具篇 带书签扫描版(2/2)

    R的极客理想 工具篇.part2.rar (第二部分)共分两个文件上传 封面 -20 书名 -18 版权 -17 前言 -16 目录 -7 第一部分 R基础 1 第1章 R语言基础包 2 1.1 R是最值得学习的编程语言 1.2 R的历史版本安装 8 1.3 ...

    S-4 现场管理三把利剑.rar

    1. **标准化**:标准化是现场管理的第一把利剑,它是建立高效工作流程的基础。通过制定明确的操作规程、工作标准和质量标准,企业能够确保每个环节都按照预定的规则进行,减少错误和浪费。标准化还能提高员工的工作...

    VIP红色利剑快速网站漏洞扫描器

    软件使用说明: 在“漏洞地址”和“请输入网站URL”的空白框内,如上图所示,填好。 ...在最上面的空白框内会出现发现的服务器漏洞类型和相应的漏洞地址。... 漏洞地址下面的空白框内出现“扫描完成”字样时,可【关闭程序...

    恶意软件分析:揭秘网络威胁的利剑

    信息安全,也被称为网络安全或数据安全,是指保护信息和信息系统不受未授权访问、使用、泄露、破坏、修改或销毁的一系列措施和实践。它包括多种技术和管理手段,以确保信息的保密性、完整性和可用性。信息安全的目标...

    EXCEL插件-审计利剑WPS版.zip

    首先,插件的核心功能之一是数据验证和清洗。审计工作中,数据的准确性和完整性至关重要。“审计利剑WPS版”提供了丰富的数据校验规则,如检查重复值、缺失值、异常值等,帮助审计人员快速发现和修正数据错误,确保...

    超短利剑 通达信副图源码通达信指标公式源码.doc

    超短利剑通达信副图源码通达信指标公式源码解析 在这个资源中,我们可以看到一个基于通达信指标公式的超短利剑交易策略的源码。下面我们将对该策略进行详细的解析和分析。 首先,从标题和描述中我们可以看到,这个...

    利剑Extjs5.0

    ### 利剑Extjs5.0:深入了解ExtJS安装与使用 #### 一、ExtJS 5.0 概览 ExtJS 5.0是由Sencha公司在2014年发布的最新版本,该版本引入了许多重要的改进和新特性,为开发者提供了更加强大和灵活的前端开发工具。其...

    ORACLE报表分析利剑——分析函数

    这两个函数分别用于获取分组内某列的首个或末个非空值,常用于报表中展示每个分组的第一个或最后一个数据点的信息,例如,记录部门首尾员工的详细情况。 ##### 3.3 `RANK()`, `DENSE_RANK()`与`ROW_NUMBER()`:排序...

    商战利剑:年度策略性营销规划.doc

    【年度策略性营销规划】是企业在信息技术背景下,为了在激烈的市场竞争中取得优势,制定的一种长期且全面的营销策略。这种规划结合了企业的发展阶段、市场动态以及企业的内部资源,旨在通过深入理解客户需求,制定出...

Global site tag (gtag.js) - Google Analytics