你的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详细监控指标的开源项目,及搭建时遇到的问题,欢迎大家一下交流

【Java监控】使用SkyWalking监控Java服务的更多相关文章

  1. 应用性能监控:SkyWalking

    目录 SkyWalking 简介 SkyWalking 搭建 平台后端(Backend) 平台前端(UI) Java Agent(Java 应用监控) Java Agent 下载 Java 演练项目 ...

  2. java框架之SpringCloud(5)-Hystrix服务熔断、降级与监控

    前言 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败.不做任何处理的情况下,很容易导致服务雪崩. 服务雪崩:多个微服务之间调用的时候,假设 ...

  3. 微服务-技术专区-监控专区(Skywalking与Pinpoint) - 监控对比分析

    由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比; 选取skyw ...

  4. 利用Perf4j 对java项目进行性能监控

    Perf4j 可以对自定义监控范围的java代码进行日志记录,再经统计分析生成所需性能数据.Perf4j 提供了对常用日志工具log4j的扩展以方便与产品集成,它产生的性能数据可被用于生成可视化的性能 ...

  5. VisualVM监控远程主机上的JAVA应用程序

    使用VisualVM监控远程主机上JAVA应用程序时,需要开启远程主机上的远程监控访问,或者在远程JAVA应用程序启动时,开启远程监控选项,两种方法,选择其中一种就可以开启远程监控功能,配置完成后就可 ...

  6. java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

    首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开 ...

  7. Java如何实现系统监控、系统信息收集(转

    Java如何实现系统监控.系统信息收集.sigar开源API的学习 系统监控(1) Jar资源下载:http://download.csdn.net/detail/yixiaoping/4903853 ...

  8. 深入理解JAVA虚拟机 虚拟机性能监控和故障处理工具

    jre的bin目录下的工具,都非常小.它都是tools.jar下面的代码的一层封装而已.tools.jar不是java标准,是Hotspot实现的. 名称 作用 jps JVM Process Sta ...

  9. 大众点评Java开发实时应用监控平台-CAT

    CAT介绍 CAT是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控. CAT作为大众点评网基础监控组件,它已经在中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等)中得到广泛应 ...

  10. Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序【转】

    Java虚拟机性能管理神器 - VisualVM(5) 监控远程主机上的JAVA应用程序[转] 标签: javajvm监控工具性能优化 2015-03-11 18:37 1394人阅读 评论(0) 收 ...

随机推荐

  1. ModuleNotFoundError: No module named 'flask_wtf'

    ModuleNotFoundError: No module named 'flask_wtf' 解决: pip install flask_wtf

  2. JVM原理剖析

    前言 本文讨论的JVM以JDK1.8为基准点,附带会横向比较,往前推到JDK1.6.JVM是任何一个学习JAVA的程序员绕不开的核心,本文就会围绕这个核心展开对它剖析,希望能给广大的程序员带来帮助. ...

  3. ACM,我“退役”了

    ACM,我"退役"了 凡是过往 皆为序章. 就在昨天,我把我所有的装备都拿回了宿舍,实验室中我的工位变得干干净净.走出实验室时,我和老唐都有些难受,毕竟,我们这样就"退役 ...

  4. 使用a标签下载**.txt文件, 而不是直接打开

    今天有个使用a标签下载一个 .txt 文件,但是使用了不少方法,在点击下载的时候总是会直接打开被下载的文件,但是下载其他格式的文件就不会:也在网上找了不少资料 一.尝试href + download方 ...

  5. WPF入门实例 WPF完整例子 WPF DEMO WPF学习完整例子 WPF实战例子 WPF sql实例应用 WPF资料源码

    WPF 和 WinForms 都是用于创建 Windows 桌面应用程序的开发框架,它们有一些相似之处,但也有很多不同之处. 在开发速度方面,这取决于具体情况.如果您熟悉 WinForms 开发并且正 ...

  6. Java的jps命令使用详解

    jps命令简介 jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚 ...

  7. Lombok注解及其作用

    Lombok是一个Java库,通过使用注解简化Java类的开发,减少冗余的样板代码.以下是一些常用的Lombok注解及其作用: 1. `@Data`:生成所有属性的getter.setter.`toS ...

  8. celery笔记三之task和task的调用

    本文首发于公众号:Hunter后端 原文链接:celery笔记三之task和task的调用 这一篇笔记介绍 task 和 task 的调用. 以下是本篇笔记目录: 基础的 task 定义方式 日志处理 ...

  9. 【Netty】01 - NIO

    一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道 ...

  10. kafka学习之三_信创CPU下单节点kafka性能测试验证

    kafka学习之三_信创CPU下单节点kafka性能测试验证 背景 前面学习了 3controller+5broker 的集群部署模式. 晚上想着能够验证一下国产机器的性能. 但是国产机器上面的设备有 ...