前言

在分布式环境中,对于服务的监控与链路追踪变得越来越重要,简单来说,相比单体应用,分布式环境下的服务链路变得更长,问题定位、排查与解决也更加复杂,因此使用一款好的服务监控工具可以为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更好的指导开发人员定位问题排查与解决问题的过程,更详细的使用可以参考官网的说明,本篇到此结束,最后感谢观看!

skywalking搭建与使用相关推荐

  1. 手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

    前言 什么是APM?全称:Application Performance Management 可以参考这里: 现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体 ...

  2. linux环境skywalking搭建及项目应用

    现在项目一般都是多实例,分布式部署,一个请求也许会需要多个项目模块响应,链路比较长.前端页面请求出现问题了,定位需要多个项目挨个查看日志,在生产环境日志量比较大,刷新的也比较快,会给问题定位带来很大的 ...

  3. 基于skywalking搭建APM系统入门级

    当企业应用进入分布式微服务时代,应用服务依赖会越来越多,skywalking可以很好的解决服务调用链路追踪的问题,而且基于java探针技术,基本对应用零侵入零耦合. skywalking是什么,有什么 ...

  4. skywalking了解及搭建使用

    skywalking了解及搭建使用 SkyWalking是分布式系统的应用程序性能监视工具,专为微服务.云原生架构和基于容器(Docker.K8S.Mesos)架构而设计 SkyWalking是观察性 ...

  5. docker环境下docker-compose一键式搭建skywalking链路追踪服务

    前言 本节内容我们使用docker-compose一键式搭建一套skywalking链路追踪服务,实现docker环境下的微服务链路追踪监控,在开始本节内容之前,我们需要提前安装好docker和doc ...

  6. SkyWalking集成与案例

    今天我们通过代码的形式来了解下,如何在项目中使用Skywalking. 前几篇文章可以参考: <学习Skywalking · 搭建篇> <Skywalking执行效果 · 多图篇&g ...

  7. Asp.Net Core使用Skywalking实现分布式链路追踪

    介绍 Skywalking 是 Apache 基金会下面的一个开源 APM 项目,是一套(APM)分布式追踪系统,提供了很多数据存储列如:Mysql,H2,Elasticsearch7 等.其中APM ...

  8. SkyWalking系列之skywalking go agent配置使用

    概述 SkyWalking 是一个基于 OpenTracing 规范的.开源的 APM 系统,它是专门为微服务架构以及云原生架构而设计的,支持多种语言的客户端,部署简单,快速,目前在业界使用较为广泛. ...

  9. 部署skyWalking

    以下安装所需要的安装包和示例配置文件 链接:https://pan.baidu.com/s/1qqzqcrMYALZ-4J9qDVpdVA?pwd=6hkz 提取码:6hkz skyWalking官网 ...

最新文章

  1. Java线上程序频繁JVM FGC问题排障与启示
  2. 李彦宏,韩寒等入围本年度《时代百人》候选名单
  3. Alexa 调整网站排名统计方式
  4. 从基础到高级讲解Kafka
  5. 二〇二二注定是踔厉奋发、笃行不怠的一年
  6. 命令逐行显示_在LoadRunner中执行命令行程序之:popen()取代system()
  7. python士兵突击_想自学Python进入该行业成为一名自己一直以来就很羡慕和钦佩的程序员,过来人的你有什么想分享的吗?...
  8. 第十一节:Springboot整合log4j2日志
  9. linux网络总线的作用,I2C总线是什么?基于I2C总线的Linux系统有哪些优点?
  10. 【word】批量添加图片题注与批量更新图注
  11. php 图片合成,PHP 实现图片合成(两张合并一张)
  12. 【JS ES6】use strict 严格模式
  13. 每位开发人员都应铭记的10句编程谚语
  14. MyBatis批量的增删改查操作
  15. 论文介绍《CrowdFormer: An Overlap Patching Vision Transformer for Top-Down Crowd Counting 》
  16. Java中删除cookie
  17. python猜字游戏算法设计_python入门到实践-猜字游戏
  18. 雷锋网专访陌陌产品总监雷小亮
  19. 无刷直流电机的PWM调制方式介绍
  20. 【网络篇】第二篇——IP协议与MAC地址详解

热门文章

  1. 电商、快递最后一公里的解决方案
  2. UIView 的旋转和缩放
  3. 使用Aptana搭建Python开发环境
  4. 基于 HTML5 WebGL 的 3D 渲染引擎构建工厂运作系统
  5. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...
  6. 强上阿里云之安装MYSQL
  7. python---基础知识
  8. UITablView索引列表
  9. 设计模式 (一) 初次体验
  10. 容器技术第一讲:容器入门篇