使用SkyWalking监控Java服务的过程

 更新时间:2023年08月28日 14:31:55   作者:马儿跑  
这篇文章主要介绍了使用SkyWalking监控Java服务,介绍一个对源码0入侵的Java服务监控方式,SkyWalking Agent,只需要启动Java程序的时候加几个参数,就能对Java服务进行可视化监控,需要的朋友可以参考下

你的Java服务是如何监控的呢?

  • 1.Null:监控?什么监控?我一个写代码的服务挂了跟我有什么关系?
  •  2.命令行:服务挂了?内存泄漏?jstat jmap jcmd,还好不是我写的
  • 3.撸代码:Java采集JVM/服务器资源信息 -> Prometheus -> Grafana,请允许我对业务代码稍作修改。

今天,给大家介绍一个对源码0入侵的Java服务监控方式,SkyWalking Agent,只需要启动Java程序的时候加几个参数,就能对Java服务进行可视化监控啦

首次接触SkyWalking是学习SpringCloud的时候,使用SkyWalking进行链路追踪。使用SkyWalking进行链路追踪时得到的拓扑图大概是这个样子(Demo项目),不过链路追踪不是本文介绍的重点,本文主要讲解如何使用SkyWalking进行Java服务的监控。

1.下载并配置SkyWalking的后端服务

SkyWalking是需要后端服务的,即启动Java项目的时使用的Agent只负责像SkyWalking后端服务发送指标信息,本身只是个客户端Jar包

(1)下载

直接到SkyWalking的官网下载APM即可,官网地址:https://skywalking.apache.org/

下载完成后解压,得到这个文件夹:

(2)修改配置文件

SkyWalking的后端服务配置文件在 apache-skywalking-apm-bin/webapp 目录下,主要修改一下服务端口号,默认是8080,如果与你的项目端口不冲突的话,可以忽略这一步

(3)启动SkyWalking后端服务

Windows的话,直接运行apache-skywalking-apm-bin/bin目录下的startup.bat 就好了,其他系统可以运行sh那个。Windows打开后会出现两个黑色的框框,不用管他,最小化就好,这时我们需要的SkyWalking后端服务实际已经启动了。

(4)验证

使用浏览器打开 localhost:18080,如果访问正常,说明服务已正常启动。

2.启动Java项目和SkyWalking Agent

SkyWalking使用了比较简单的jar包agent方式进行客户端启动,Java服务启动命令添加以下参数

-javaagent:F:\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=localhost:11800

参数说明:

  • -javaagent后添加skywalking-agent.jar的本地路径,哦,对了,这个agent jar包也是从SkyWalking的官网下载就可以
  • skywalking.agent.service_name,该Java服务在SkyWalking后端服务中的显示名称=
  • skywalking.collector.backend_service,SkyWalking的后端服务地址,如果你像我一样修改了配置文件的话,这里就应该是 localhost:11800

3.查看服务相关监控

使用浏览器访问 localhost:18080

点击Service Name,打开服务监控面板,其中Overview中记录了服务的一些基本监控指标,例如:Service Apdex,请求成功率,平均响应时间等

除了服务响应信息,SkyWalking还可以用来监控JVM。 选择Instance,并点击节点链接打开详情

打开后的Overview是单个节点的服务响应信息

选择JVM后,就是常见的JVM指标啦

可以通过以上仪表盘监控JVM堆内存和堆外内存大小,gc时间和gc次数,以及线程相关信息和JVM加在的Class数量,基本的错误排查大体够用。不过并没有JVM老年代和年轻代的具体使用情况,内存监控只区分了堆外内存和堆内存。如果是为了详细的监控JVM的话,这些指标感觉差点儿意思,后面将再介绍一个拥有更多JVM详细监控指标的开源项目,及搭建时遇到的问题,欢迎大家一下交流

到此这篇关于使用SkyWalking监控Java服务的文章就介绍到这了,更多相关SkyWalking监控Java服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈java String.split丢失结尾空字符串的问题

    浅谈java String.split丢失结尾空字符串的问题

    下面小编就为大家带来一篇浅谈java String.split丢失结尾空字符串的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 浅谈hashmap为什么查询时间复杂度为O(1)

    浅谈hashmap为什么查询时间复杂度为O(1)

    这篇文章主要介绍了hashmap为什么查询时间复杂度为O(1),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 解决Springboot项目bootstrap.yml不生效问题

    解决Springboot项目bootstrap.yml不生效问题

    Spring Boot 2.4版本开始,配置文件加载方式进行了重构,只会识别application.* 配置文件,并不会自动识别bootstrap.yml,所以本文给大家介绍Springboot项目bootstrap.yml不生效问题的解决方案,需要的朋友可以参考下
    2023-09-09
  • SpringBoot项目实现MyBatis流式查询的教程详解

    SpringBoot项目实现MyBatis流式查询的教程详解

    这篇文章主要介绍了SpringBoot项目如何实现MyBatis的流式查询,mybatis的流式查询,有点冷门,实际用的场景比较少,但是在某些特殊场景下,却是十分有效的一个方法,感兴趣的同学可以参考一下
    2023-06-06
  • Java基于正则表达式实现的替换匹配文本功能【经典实例】

    Java基于正则表达式实现的替换匹配文本功能【经典实例】

    这篇文章主要介绍了Java基于正则表达式实现的替换匹配文本功能,结合完整实例形式分析了java字符串正则替换操作技巧,需要的朋友可以参考下
    2017-04-04
  • SpringBoot 如何使用RestTemplate发送Post请求

    SpringBoot 如何使用RestTemplate发送Post请求

    这篇文章主要介绍了SpringBoot 如何使用RestTemplate发送Post请求的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java Thread 类和Runnable 接口详解

    Java Thread 类和Runnable 接口详解

    这篇文章主要介绍了Java Thread 类和Runnable接口详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Java实现简易俄罗斯方块

    Java实现简易俄罗斯方块

    这篇文章主要为大家详细介绍了Java实现简易俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • SpringBoot自定义start详细图文教程

    SpringBoot自定义start详细图文教程

    这篇文章主要给大家介绍了关于SpringBoot自定义start的相关资料,主要讲述如何自定义start,实现一些自定义类的自动装配,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Java 整合模板彻底解决ssm配置难题

    Java 整合模板彻底解决ssm配置难题

    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎
    2021-10-10

最新评论