skywalking搭建与使用

 2023-09-15 阅读 15 评论 0

摘要:前言 在分布式环境中,对于服务的监控与链路追踪变得越来越重要,简单来说,相比单体应用,分布式环境下的服务链路变得更长,问题定位、排查与解决也更加复杂,因此使用一款好的服务监控工具可以为Java开发人员和运维人员大大提升工作效

前言

在分布式环境中,对于服务的监控与链路追踪变得越来越重要,简单来说,相比单体应用,分布式环境下的服务链路变得更长,问题定位、排查与解决也更加复杂,因此使用一款好的服务监控工具可以为Java开发人员和运维人员大大提升工作效率

目前,对于微服务应用的监控体现在多个维度上,比如应用层的监控,大家熟知的各自restFul接口,数据库层面的监控,比如sql执行,慢查询sql检测,服务链路追踪,比如A服务通过feign调用B服务,B再调C服务等,服务器性能上的监控,比如JVM等相关参数等

以上大概罗列了实际应用中比较常见的3种监控维度,在此基础上还能继续细分,就不再展开下去了,对于不同维度的监控,市面上也有诸多的比较流行的解决方案和解决工具,针对数据库层面的监控,像数据库监控工具zabbix,JVM监控工具jvisualvm,阿里开源的Arthas jvm等

而对于应用服务层的监控,市面上提供的解决方案随着微服务的盛行也越来越多,比如zipkin+mq,分布式服务监控工具PinPoint,prometheus (普罗米修斯),以及skyWalking等,在众多的监控工具中,选择一款最适合自己业务的监控工具显得很有必要,一方面对于大多数开发人员来说,学习成本低,而是能够和微服务进行快速的整合并且有较少的业务侵入性,并能够快速部署搭建,这是选择的几个简单的标准

本篇就小编所在的周边项目使用的比较多的skyWalking为例做一点简单的介绍,方便后续的学习和使用进行参考

skyWalking简介

Skywalking是由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。是一款基于分布式跟踪的应用程序性能监控系统。另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作

官网地址:https://skywalking.apache.org/

下面是一张关于skyWalking整体的原理架构图

在这里插入图片描述

说明:

SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。

整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

skyWalking搭建

skyWalking的安装比较简单,参照下面几步即可

1、官网下载安装包,windows或者linux,最新版本是8.2.0

在这里插入图片描述

2、下载到本地之后,解压安装包

我这里下载的是6.X版本,下载之后解压文件在这里插入图片描述
解压之后进入bin目录,windows下双击bat文件即可
在这里插入图片描述
其实就是一个springboot的微服务,启动成功后,本地访问:localhost:8080,可看到如下界面,注意确保本地的8080端口没有被占用
在这里插入图片描述
3、设置skywalking的agent服务代理

将解压后skywalking目录下的agent拷贝到本地其他任意目录下
在这里插入图片描述
比如我这里是: D:\dev-tools\skywalikng\pro-local\agent

然后进入agent目录下的config文件夹,修改config文件,
在这里插入图片描述
这里先配置一下代理的本地微服务名称,比如我本地启动了2个微服务,service-order,service-storage,在config文件中只需要修改此处即可,
在这里插入图片描述

4、启动本地微服务

如何使用skywalking代理并监控本地的微服务呢?上面修改配置配置了本地的微服务名称,表示本地微服务启动之后,skywalking的数据采集服务会去寻找这两个名称对应的服务,接下来就是在本地服务启动的时候设置skywalking的参数,如下图所示:
在这里插入图片描述
在启动参数的VM options一栏添加如下参数,顾名思义,启动时,为当前服务设置一个代理监控的服务,即skywalking-agent.jar

-javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar

按照上面的配置完毕之后,我们来启动一下order这个微服务,注意在order微服务中的服务名称一定要和config中的配置名称一致

启动完毕之后,我们访问一下order服务中的某个接口:
在这里插入图片描述
然后刷一下skywalking的页面吧
在这里插入图片描述

5、skywalking监控界面说明

当访问到order服务中的接口之后,在skywalking的监控界面就会出现调用的详细细节,

1)仪表盘

监控指标的整体概览,提供一个快速访问端点的入口,比如这里展示了我们调用order服务接口,接口耗时,图形化展示接口调用过程,通过切换不同的tab,多维度的展现服务的监控参数,比如QPS,各个时间窗口的接口调用频次等
在这里插入图片描述
2)拓扑图

展示服务的调用链路,比如后台这个接口:http://localhost:9199/createOrder?id=15,order调用storage服务,通过仪表盘的展示图,可以很清楚的看到他们之间的调用关系,这里主要是方便快速的进行一个全局的服务调用链路的追踪
在这里插入图片描述
2)追踪

点击追踪,可以看到createOrder这个接口的完整调用路径,
在这里插入图片描述
更多详细的dashboard使用说明,大家可以参照官网提供的资料还是比较详细的

6、其他配置参数说明

上述本地微服务的启动,是通过配置启动参数完成的,实际开发中,如果项目打成了jar包的话,也可以通过下面的启动命令设置skywalking的agent代理

1)jar包启动参数配置

java -javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar=agent.service_name=order -jar order.jar

2)-D参数简单使用

skywalking提供了很多扩展配置参数以满足开发过程中的大部分使用场景,具体的参数配置可参考下面的链接:

https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md#table-of-agent-configuration-properties

这里选择一个打印sql语句的进行说明,在开发过程中,我们想通过dashboard快速定位接口的sql语句,可以参照下面的配置,替换之前的VM options,

-javaagent:D:\dev-tools\skywalikng\pro-local\agent\skywalking-agent.jar -Dskywalking.plugin.mysql.trace_sql_parameters=true

简单来说,就是在之前的启动参数配置的后面,加上:Dskywalking.plugin.mysql.trace_sql_parameters=true

其实这里面有一个简单的规律,skywalking官网提供的很多扩展参数都可以进行类似的配置即通过Dskywalking拼接相应的参数即可

配置完成之后,我们再访问一下本地的某个需要查库的接口,这时可以看到有关当前接口查询数据库的sql语句可以清楚的展现在界面上
在这里插入图片描述

在这里插入图片描述

这是一个很有用的功能,在实际开发过程中,生产环境的日志中是屏蔽打印sql语句的,很多情况下只能通过整体的堆栈日志去排查,如果通过skywalking能够将sql展示出来,并结合接口耗时去分析,就能帮助我们快速定位慢sql问题

6、skywalking监控数据持久化

skywalking默认产生的监控数据使用的是H2数据库,这个数据库对于很多做开发的同学来说可能不太友好,skywalking比较常用的两种数据存储的方式是es和mysql,最新的版本是支持es7.x的,据说性能很不错,对于大型的分布式应用,选择es7存储监控的日志数据比mysql更好

下面我们来演示下使用mysql来存储skywalking的监控数据,即数据持久化的配置

1)下载一个mysql的连接驱动包

根据自己的mysql版本,选择一个mysql的驱动包,下载之后放到skywalking的oap-libs文件夹下
在这里插入图片描述

2)修改2个配置文件

进入skywalking的config目录下,修改一下这两个配置文件的数据源连接信息
在这里插入图片描述

application.yml:

注释掉h2的连接参数,放开mysql的

在这里插入图片描述
datasource-settings.properties:

修改一下连接mysql的信息即可
在这里插入图片描述

按照上面的几步配置完毕之后,重新启动skywalking,这时可以发现数据库中生成了一大堆关于skywalking的数据表
在这里插入图片描述

本篇主要讲述了skywalking的环境搭建以及dashboard的使用,最后简单配置了一下skywalking的数据持久化,而实际使用中更多的是如何使用skywalking更好的指导开发人员定位问题排查与解决问题的过程,更详细的使用可以参考官网的说明,本篇到此结束,最后感谢观看!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/62830.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息