对于任何一个服务端应用来说,监控都是至关重要的一环。一个系统在运行过程当中太容易出现故障,网络、存储、系统负载、软件 Bug,任何一个点出现问题都有可能影响到整个系统的稳定运行,因此,监控必不可少。一个完善的系统监控方案要从两个方面帮助我们:

不断检查各项服务的稳定性,出现问题第一时间通知相关人员

记录系统运行的各项指标,帮助运维人员全面掌握系统运行状况,从而做到防患于未然

对于第一个方面,其实就是要做到出了故障第一时间告警,从而能让系统在半夜出现问题的时候能一条短信把可怜的运维同学叫起来恢复服务。这件事, Nagios 基本上是最佳解决方案。它有花样繁多的各种插件,并且编写自定义插件也极其简单,可以很方便地监控从操作系统到应用的方方面面。其配置文件简洁易懂,且十分强大,稍加熟悉就可以很容易根据自己的需要去配置。

对于第二个方面,Nagios 就不是特别适合了。它的工作方式是每隔一段时间去检查服务是否正常,无法记录一些指标,不方便运维去观察系统各种指标的变化情况。当然,通过一些插件似乎能实现这个功能,但是我们选择了别的解决方案:在常用的 Graphite和 Ganglia 之间,我最终选择了 Ganglia。

Ganglia 是加州大学伯克利分校发起的系统监控项目,为大规模高性能计算集群而设计,采用了 RRD、XML 等成熟的技术实现,单节点开销很小,提供了相当靠谱的容错机制,且很容易扩展和加入自定义的 Metric。Ganglia 的一个比较有名的用户是维基百科,可以通过 这里 访问他们的 Ganglia 实例,从上面可以看到维基百科的集群运行状况。

Ganglia + Nagios,这就是我们的监控系统所选用的解决方案。不过这样做有一个问题是两者都有自己的监控 Agent,Nagios 需要 NPRE,Ganglia 则需要 gmond。显然在每个机器上都安装两个监控系统不好,安装维护麻烦不说,也不符合一个系统只做一件事的原则。

好在这个问题早就有人想到了,办法很简单,在两者之间建立起一座桥梁,让 Nagios 可以直接使用 Ganglia 的数据就好了。解决方案有很多,我会在这个系列的 Nagios 部分详细介绍。

Ganglia 和 Nagios 可以直接监控到系统层面的运行状况如 CPU,Load,磁盘,内存等,但对于 Java 应用,我们还需要额外的手段来收集数据。Java 监控的标准解决方案是 JMX,JVM 本身的很多运行时参数都通过 JMX 暴露出来了,如内存、GC 等相关参数,开发者也可以很简单地自定义 MBean 来将应用本身的参数暴露出来。借助一些工具如 jmxtrans,我们可以定时获取一个 JVM 实例的 JMX 数据,并发送给 Ganglia 或者 Graphite 这种后端。在 Java 和 JMX 部分,我会详细介绍。

最近还发现了一个名叫 Metrics 的 Java 库,可以方便开发者来编写应用监控相关代码,并且它直接支持 Ganglia 和 Graphite 后端。如果不是必须使用 JMX 的话,这会是一个更简洁的替代方案。

================================================

感谢 Coding 和UPYUN对本微信的支持。Coding.net是一个面向开发者的云端开发平台,目前提供代码托管、运行空间、质量控制、项目管理等功能。

upyun.com是国内领先的云服务提供商,专注于提供静态文件的云存储、云处理和CDN加速服务。现在注册,即可免费体验!

Java 监控方案_Java 服务端监控方案相关推荐

  1. java session缓存_Java服务端采用Session的缓存oauth2.0授权用户信息

    前面有讲到session和cookie的一些简单的区别和比较,我们继续为java在服务端如何对session的操作留下笔记,这里以用户的登陆和退出操作为实用场景,简单讲解session的建立.清空等操 ...

  2. 服务端监控要怎么做?

    文章出自:阿里巴巴十亿级并发系统设计(2021版) 链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA 提取码:8888 目录 监控指标如何选择 如何 ...

  3. 服务端监控架构设计与实践

    作者:vivo互联网服务器团队-Deng Haibo 一.业务背景 当今时代处在信息大爆发的时代,信息借助互联网的潮流在全球自由的流动,产生了各式各样的平台系统和软件系统,越来越多的业务也会导致系统的 ...

  4. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  5. Java中Socket通信-服务端和客户端双向传输字符串实现

    场景 什么是socket 在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台计算机可以接收其他计算机 ...

  6. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  7. 配电室环境监控系统的站端监控屏柜功能介绍

    随着无人值守配电室的普及和贯彻,加强对配电室环境的监测,保障供电安全,已成为非常重要的工作.当电力设备出现故障或现场发生异常时(如:设备短路.电缆温度过高.进水.非法闯入等),配电室环境监控系统能及时 ...

  8. vivo 服务端监控体系建设实践

    作者:vivo 互联网服务器团队- Chen Ningning 本文根据"2022 vivo开发者大会"现场演讲内容整理而成. 经过几年的平台建设,vivo监控平台产品矩阵日趋完善 ...

  9. 找到合适的方案记录服务端日志

    做过服务端开发的同学都清楚日志是多么的重要,你要分析应用当天的 PV/UV,你需要对日志进行统计分析; 你需要排查程序 BUG, 你需要寻找日志中的异常信息等等, 所以, 建立一套合适的日志体系是非常 ...

最新文章

  1. u-boot-1.1.6 设置新分区支持设备树
  2. python课程推荐-课程推荐:四天人工智能 python入门体验课
  3. 团队-团队编程项目中国象棋-项目进度
  4. 我们总结了每个技术团队都会遇到的 4 个难题
  5. 《蘑菇街编程题》回文串
  6. 计算机编程pdf百度云,计算机编程基础.pdf
  7. 微信小程序项目笔记以及openId体验版获取问题
  8. log4j-over-slf4j与slf4j-log4j12共存stack overflow异常
  9. git提交代码时遇到代码库有更新以及本地有更新的解决方法
  10. Wiki系列(一):Wiki系统选择
  11. CodeSmith(C#)简单示例及相关小知识
  12. 使用FPGA进行加速运算
  13. 树莓派安装opencv3.4.3时缺少boostdesc等文件及一些常见的报错
  14. STM32FXXX J-link下载程序说明
  15. 苹果在企业中的应用提升
  16. 怎么做成html网页,html网页制作的基本步骤?怎么用html做一个网页?
  17. 互联网日报 | QQ正式上线QID功能;高通骁龙888处理器正式发布;嫦娥五号成功落月...
  18. 服务器如何修改vt,云服务器vt
  19. JQuery入门总结(三)【选择器、方法、Json】
  20. mini-XML 中文文档

热门文章

  1. k8s networkpolicy
  2. 单片机 | 51单片机原理
  3. mysql触发器不起作用_mysql – 授予模式触发器不起作用
  4. 【经验科普】实战分析C工程代码可能遇到的编译问题及其解决思路
  5. 脂肪体重器、手环、NFC手机
  6. 主成分分析法及特征值的含义
  7. 服务器 硬件防火墙,了解服务器软硬件防火墙
  8. SATA Link Power Management的partial和slumber power state区别
  9. Machine Learning Week5
  10. 计算机主机房的消防配置,计算机机房消防安全审核标准