老司机的应用级监控——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等行业:经历 ...
随机推荐
- 刚部署的程序加载不出来css,js以及图片
刚部署的程序加载不出来css,js以及图片,解决方式 需要在配置中加入静态资源 方法一: controller.xml中加入 <mvc:annotation-driven/> <mv ...
- HyperServer 中的 SSL 支持
HyperServer 中的 SSL 支持 DLL 模式不需要 SSL 配置, 因为 web 服务器 (如 IIS) 将承担 ssl 配置和 ssl 证书的责任. 对于独立和服务模式, ssl 配置是 ...
- Windows核心编程:第9章 用内核对象进行线程同步
Github https://github.com/gongluck/Windows-Core-Program.git //第9章 用内核对象进行线程同步.cpp: 定义应用程序的入口点. // #i ...
- EF t4模板将实体与DBContext分离
在用EF DBFirst时,实体类是从数据库自动生成的,与DBContext放在同一个项目中.这样其他项目想引用实体,就会将数据库操作类暴露出来.所以,我们需要将实体分离. 新建项目EFAccess, ...
- Linux下安装MySQL以及一些小坑
第一次写博客,各位凑合着看吧(假装有人看). 我这里使用的是centos7. 1.首先打开终端,查看有没有安装过MySQL: [root@localhost lyp]# rpm -qa | grep ...
- 16_python_面向对象
一.面向对象和面向过程的区别 1.面向对象:一切以对象为中心.有相同属性和动作的结合体叫做对 优点:易维护.易复用.易扩展,由于面向对象有封装.继承.多态性的特性 ...
- Swift5 语言参考(一) 关于语言参考
本系列文章的这一部分描述了Swift编程语言的形式语法.此处描述的语法旨在帮助您更详细地理解语言,而不是允许您直接实现解析器或编译器. Swift语言相对较小,因为Swift代码中几乎无处不在的许多常 ...
- 编译lua-5.3.5时出错解决方法
问题描述: 执行 make linux test 过程出现错误,错误信息如下: “ lua.c:82:31: fatal error: readline/readline.h: No such fil ...
- Linux - 针对用户账号的常用操作
用户目录 除root用户外,其他默认的用户目录一般为/home/<user name>. 可以通过如下步骤修改默认用户目录 修改/etc/passwd文件中相应用户的路径信息 停止此用户的 ...
- 【转】如何用css限制文字长度,使溢出的内容用省略号…显示
文章转自这里(现在貌似被黑了,建议不要点击了) ps:因在该地方没看到转载按钮,复制下存到这里以待自己方便,别人能看到帮助一下更是乐意之至,效果亲测可以实现,兼容IE.谷歌.火狐 由于文字内容长度的不 ...