http://mt.sohu.com/20160824/n465783118.shtml

************************************************

  1什么是spring actuator?

  这是一个研发老司机与运维同学都会非常喜欢的东西,随着点融集团的扩张,点融网的业务越来越复杂、服务越来越多,不论是微服务还是SOA都会大大加重运维的负担。这时在应用层提供统一、强大的监控接口对于自动化运维来讲就显得非常重要!

对于研发来讲,可以在应用启动后拿到应用的各种数据,非常便于调试应用、分析应用的运行状况,并且不需要研发去实现这些监控功能。

  对于运维来讲,可以监控应用的健康信息、统计应用的瞬时信息。发现应用挂掉了、发现瞬时信息不正常都可以发送报警信息, 也可以将信息拉到监控系统的数据系统中,再展示到漂亮的UI上实时监控应用的运行状态。这些actions 无疑将会大大保证系统的整体质量。

  而集成了actuator的springboot应用会在约定的endpoints上暴露自己应用的内部信息,又强大又统一标准,满足复杂分布式系统的监控需求,一些endpoints简介如下:

  Path

  Deion

health 展示系统的各种组件运行状态、硬盘使用状况
metrics 统计系统当前的一些瞬时信息,如:该系统接收了多少个请求、cache命中率、mq中有多少条信息待处理、CPU使用率、内存占用情况 等,后面会有更加详细的介绍。
dump 当前系统中线程的详细信息
env 展示系统变量 和 springboot的应用变量
trace 显示最近的http请求的request、response对(默认最多缓存100条)

  autoconfig

  展示所有auto-configuration候选者及它们被应用或未被应用的原因

  info

  显示应用自定义的信息:如该应用的联系人、名称、版本等

  configprops

  显示所有被@ConfigurationProperties mark的Bean的信息列表

  mappings

  显示所有@RequestMapping mark 的url list

  shutdown

  允许以POST方式关闭应用

  beans

  显示该应用中所有Spring Beans的完整信息,包括依赖了哪些bean、是singleton还是prototype

  研发会重点关注绿色的五项、而运维更关注深绿色的两项,其他项笔者暂时没有发现有特别的用处...

  2如何在springboot应用中enable actuator?

  compile

  'org.springframework.boot:spring-boot-starter-actuator:1.3.6.RELEASE'

  3自定义已有的endpoints

  1) 每个endpoint都可以在application.properties里面用 endpoints.[endpoint].[id|sensitive|enabled]来重定义其默认值。

  例如:

这样就将autoconfig这个endpoint的path修改为了auto_cfg,本着约定优于配置原则,没有特殊需求,笔者不建议做此类修改。

  2) 自定义 /health endpoint

  当springboot应用跑起来之后,你可以通过访问该接口获得应用的健康状态。

例如,图片中的 “ status:"UP" ” 即表明应用的健康状态,diskSpace 当中的单位为bytes. 表明了该应用目前硬盘的健康状态:

  红色箭头为我在health endpoint中自定义的 rabbitMQ healthCheckIndicator. 用于检查我的应用所依赖的rabbitMQ的健康状态。具体实现方式如下:

  您需要实现HealthIndicator 接口或者继承AbstractHealthIndicator

3) 自定义 /metrics endpoint

  正如一的表格当中所讲的, metrics是最重要的endpoint之一。

红色箭头所指向两个gauge指标是我fake的一个queue所对应有几个consumer, 有几条还在queue中未被消费的消息数量,具体自定义方式如下:

如果想要自定义一些metrics, 如api的访问次数、消息数量成功处理次数、消息处理失败次数则可以自定义如下,也会展示在metrics接口中:

4) 自定义 /info endpoint   在application.properties中, 添加自定义字段,如下

访问效果:

4创建一个新的endpoint

  您需要实现Endpoint 接口或者继承AbstractEndpoint。

访问效果:

还有其他的一些自定义,开发可以不用特别关心 。

  5非Springboot的Spring应用, 集成spring actuator

  添加依赖:

  compile('org.springframework.boot:spring-boot-actuator'){ exclude group: 'org.springframework.boot',

  module:'spring-boot-starter-logging'}

  1) 使用 AnnotationConfigWebApplicationContext :

  并在 Spring初始化config bean的上面添加@EnableAutoConfiguration 即可。详情见附录3。

  2) 使用 XML 方式的nonboot - spring 应用

  在任一Spring生命周期的Component bean上 添加@EnableAutoConfiguration 即可。

  也可以@Autowire 这些Endpoint自定义访问路径。详情见附录4

  术语解释:

  术语

  描述

  Gauge

  Gauge代表一个度量的即时值。当你开汽车的时候,当前速度是Gauge值。你测体温的时候,体温计的刻度是一个Gauge值。当你的程序运行的时候,内存使用量和CPU占用率都可以通过Gauge值来度量。

  Counter

  Counter是一个AtomicLong实例,可以增加或者减少值。例如,可以用它来计数队列中加入的Job的总数、可以统计api总计的访问次数。

  附录:

  1. 集成springboot actuator到非springboot spring应用中 : https://stackoverflow.com/questions/26913087/use-spring-boot-actuator-without-a-spring-boot-application

  2. 本文所用的springboot源码: https://github.com/Agileaq/springboot-actuator

  3. 非springboot的annotationConfig spring web应用源码: https://github.com/Agileaq/nonboot-actuator-example

  4. 非springboot的xml base web应用源码: https://github.com/Agileaq/nonboot-xml-spring-actuator

  5. English version of Spring Actuator introduction: http://www.baeldung.com/spring-boot-actuators

  6. 黑帮文章——神荼之眼监控系统(后台回复【神荼之眼】即可查看)

  7. 黑帮文章——高颜值绘图工具Grafana(后台回复【Grafana】即可查看)

  

本文作者:钱晟龙 Arc_Qian(点融黑帮),现任点融网架构组产品研发工程师,主要任务是思考并尝试解决各类点融网迈出第一公里之后遇到的现实问题。

  随着点融网新一轮融资,点融网即将开始大规模的扩张,需要各种优秀人才的加入,如果你觉得自己够优秀,欢迎加入我们!获取更多职位信息,请关注点融黑帮。

老司机的应用级监控——spring?actuator的更多相关文章

  1. 老司机的应用级监控——spring actuator(转)

    转自:https://www.jianshu.com/p/c043d3c71f47 什么是spring actuator? 这是一个研发老司机与运维同学都会非常喜欢的东西,随着点融集团的扩张,点融网的 ...

  2. Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解

    1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...

  3. 优测优社区干货精选|老司机乱谈编辑器之神——vim

    文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...

  4. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  5. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  6. 老司机在zabbix上的一次翻车

    [前言] 自以为是zabbix的老司机了,没有想到今天翻车了! 一般人出错了都可以找到一个借口.我就不一样啦,我感觉我可以找两个1): 针对官方文档 给出的操作步骤没有经过深入的思考 2): 今天没有 ...

  7. spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin

    参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...

  8. JavaMelody监控spring、struts

    前言 前面讲过了Javamelody的基本配置,如何使用Javamelody来监控JDBC以及SQL. 这里继续讲解一下如何监控struts和spring. 手码不易,转载请注明:xingoo 由于s ...

  9. 有容云:上车 | 听老司机谈Docker安全合规建设

    编者注: 本文根据7月19日DockOne社群分享内容整理而成,分享嘉宾蒋运龙,有容云高级咨询顾问,一个IT的老兵,十年来混迹于存储.三网融合.多屏互动.智能穿戴.第三方支付.Docker等行业:经历 ...

随机推荐

  1. iOS:多线程的详细介绍

    多线程: 一.概念 1.什么是进程?     程序的一次性执行就是进程.进程占独立的内存空间.   2.什么是线程?     进程中的代码的执行路径.   3.进程与线程之间的关系?      每个进 ...

  2. ci框架(二)

    自定义SQL语句                                                                             当提供的API满足不了我们对S ...

  3. 报错:configure: error: no acceptable C compiler found in $PATH

    运行以下命令报错: ./configure 错误: checking whether to enable maintainer-specific portions of Makefiles... ye ...

  4. PHP Variable Scope

    原文: https://phppot.com/php/variable-scope-in-php/ Last modified on March 24th, 2017 by Vincy. ------ ...

  5. (转)nio 连网和异步 I/O

    连网和异步 I/O 概述 连网是学习异步 I/O 的很好基础,而异步 I/O 对于在 Java 语言中执行任何输入/输出过程的人来说,无疑都是必须具备的知识.NIO 中的连网与 NIO 中的其他任何操 ...

  6. 转:超实用的IOS 9人机界面指南(1):UI设计基础 (腾讯力作)

    转: http://www.uisdc.com/ios9-interface-guideline-ui

  7. tomcat在ubuntu中设置开机启动

    #!/bin/bash export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_72 WEBROOT_PATH=/home/zhengze/workspace WEBSERVER ...

  8. 怎样删除Weblogic Domain?

    转自:http://blog.csdn.net/biplusplus/article/details/7433558 旁白 由于没有现成的配置工具可以做这件事,我们需要手工来删除. 正题 以下方法适用 ...

  9. HTML 超级链接详细讲解

    超级链接 超级链接是网站中使用比较频繁的HTML元素,因为网站的各种页面都是由超级链接串接而成,超级链接完成了页面之间的跳转.超级链接是浏览者和服务器的交互的主要手段,在后面的技术中会逐步深化学习. ...

  10. SQL如何将EXCEL导入到SQL数据库

    1 新建一个EXCEL工作表,注意默认有三个工作簿,我们只在Sheet1中创建几个字段并存储若干值保存为TEST.xls 2运行Excel to MySQL软件,注意Sourece和Destinati ...