老司机的应用级监控——spring actuator(转)
转自:https://www.jianshu.com/p/c043d3c71f47
什么是spring actuator?
这是一个研发老司机与运维同学都会非常喜欢的东西,随着点融集团的扩张,点融网的业务越来越复杂、服务越来越多,不论是微服务还是SOA都会大大加重运维的负担。这时在应用层提供统一、强大的监控接口对于自动化运维来讲就显得非常重要!
对于研发来讲,可以在应用启动后拿到应用的各种数据,非常便于调试应用、分析应用的运行状况,并且不需要研发去实现这些监控功能。
对于运维来讲,可以监控应用的健康信息、统计应用的瞬时信息。发现应用挂掉了、发现瞬时信息不正常都可以发送报警信息, 也可以将信息拉到监控系统的数据系统中,再展示到漂亮的UI上实时监控应用的运行状态。这些actions 无疑将会大大保证系统的整体质量。
而集成了actuator的springboot应用会在约定的endpoints上暴露自己应用的内部信息,又强大又统一标准,满足复杂分布式系统的监控需求,一些endpoints简介如下:

研发会重点关注绿色的五项、而运维更关注深绿色的两项,其他项笔者暂时没有发现有特别的用处...
如何在springboot应用中enable actuator?
compile
'org.springframework.boot:spring-boot-starter-actuator:1.3.6.RELEASE'
自定义已有的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中, 添加自定义字段,如下:
访问效果:
创建一个新的endpoint
您需要实现Endpoint 接口或者继承AbstractEndpoint。
访问效果:
还有其他的一些自定义,开发可以不用特别关心 。
非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

附录:
集成springboot actuator到非springboot spring应用中 : https://stackoverflow.com/questions/26913087/use-spring-boot-actuator-without-a-spring-boot-application
本文所用的springboot源码: https://github.com/Agileaq/springboot-actuator
非springboot的annotationConfig spring web应用源码: https://github.com/Agileaq/nonboot-actuator-example
非springboot的xml base web应用源码: https://github.com/Agileaq/nonboot-xml-spring-actuator
English version of Spring Actuator introduction: http://www.baeldung.com/spring-boot-actuators
黑帮文章——神荼之眼监控系统(点融黑帮后台回复【神荼之眼】即可查看)
黑帮文章——高颜值绘图工具Grafana(点融黑帮后台回复【Grafana】即可查看)
老司机的应用级监控——spring actuator(转)的更多相关文章
- 老司机的应用级监控——spring?actuator
http://mt.sohu.com/20160824/n465783118.shtml ************************************************ 1什么是sp ...
- Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解
1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...
- 优测优社区干货精选|老司机乱谈编辑器之神——vim
文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...
- 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势
前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...
- SpringCloud(8)微服务监控Spring Boot Admin
1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...
- 老司机在zabbix上的一次翻车
[前言] 自以为是zabbix的老司机了,没有想到今天翻车了! 一般人出错了都可以找到一个借口.我就不一样啦,我感觉我可以找两个1): 针对官方文档 给出的操作步骤没有经过深入的思考 2): 今天没有 ...
- 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 的基础上提 ...
- JavaMelody监控spring、struts
前言 前面讲过了Javamelody的基本配置,如何使用Javamelody来监控JDBC以及SQL. 这里继续讲解一下如何监控struts和spring. 手码不易,转载请注明:xingoo 由于s ...
- 有容云:上车 | 听老司机谈Docker安全合规建设
编者注: 本文根据7月19日DockOne社群分享内容整理而成,分享嘉宾蒋运龙,有容云高级咨询顾问,一个IT的老兵,十年来混迹于存储.三网融合.多屏互动.智能穿戴.第三方支付.Docker等行业:经历 ...
随机推荐
- hdu 4864 任务分配贪心
http://acm.hdu.edu.cn/showproblem.php?pid=4864 有n台机器,m个任务,每台机器有xi时间,yi等级,每个任务也有xj,yj,当一个任务可以被处理的条件是, ...
- 团队项目(HCL)
一.团队展示 队名:盐酸队 队员学号及风采: 团队项目描述:经典90坦克大战(基于java) 团队合照: 二.团队选题 经典90坦克大战是以坦克为题材的射击类小游戏,我们将在java上实现并拓展,我们 ...
- G 最水的一道
G - Here Be Dragons The Triwizard Tournament's third task is to negotiate a corridor of many segment ...
- cxGrid用法-最新
cxGrid用法-最新 在做AdoHelper实用程序的时候,我用了DevExpress的cxGrid控件.在此之前用的是dbgrid,考虑到不能把所有的数据都拉到本地,我用了动态生成的select ...
- SQL SERVER锁(LOCK)知识及锁应用
提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题. 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用户同时对数据库的并发操作时会带来以下数据不一致的 ...
- WPF概述(硬件加速及分辨率无关性)
一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层 ...
- 改变PowerDesigner数据模型字体大小
一 改变左侧菜单字体大小Tools----->General------->Fonts-------->根据item选项的不同改变字体的大小 二 改变数据模型Table的字体大小To ...
- ZKWeb网页框架1.5正式发布
本次更新的内容有 明显的改进了IoC容器在部分情况下的性能, 当前的性能和Grace, DryIoC同等 添加IHttpResquestHandlerWrapper接口让重载Http上下文更容易 添加 ...
- 【BZOJ5290】 [Hnoi2018]道路
BZOJ5290 [Hnoi2018]道路 前言 这道题目我竟然没有在去年省选切? 我太菜了. Solution 对题面进行一个语文透彻解析,发现这是一个二叉树,乡村都是叶子节点,城市都有两个儿子.( ...
- fetch更新本地仓库两种方式:
来源:https://www.cnblogs.com/chenlogin/p/6592228.html //方法一 $ git fetch origin master //从远程的origin仓库的m ...