老司机的应用级监控——spring?actuator
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总计的访问次数。 |
附录:
集成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】即可查看)
本文作者:钱晟龙 Arc_Qian(点融黑帮),现任点融网架构组产品研发工程师,主要任务是思考并尝试解决各类点融网迈出第一公里之后遇到的现实问题。
随着点融网新一轮融资,点融网即将开始大规模的扩张,需要各种优秀人才的加入,如果你觉得自己够优秀,欢迎加入我们!获取更多职位信息,请关注点融黑帮。
转载于:https://www.cnblogs.com/zhao1949/p/6373104.html
老司机的应用级监控——spring?actuator相关推荐
- 服务监控 Spring Boot Actuator 介绍
服务监控 Spring Boot Actuator 介绍 1. 概述 在本文中,我们将介绍Spring Boot Actuator.首先介绍一些Actuator的基础知识,然后详细讨论Spring B ...
- Spring Boot 应用监控:Actuator与 Admin
第 III 部分Spring Boot 系统监控.测试与运维 Spring Boot 应用监控:Actuator与 Admin <Spring Boot 实战开发>(陈光剑) -- 基于 ...
- 老司机带你从源码开始撸Spring生命周期!!!
导读 Spring在Java Web方面有着举足轻重的地位,spring的源码设计更是被很多开发者所惊叹,巧妙的设计,精细的构思,都注定他的地位.今天陈某大言不惭的带你来从源码角度解析Spring的生 ...
- 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解
一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解 "如果你是一个经验丰富的运维开发人员,那么你一定知道ganglia.nagios.zabbix.elastics ...
- 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin
<深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...
- 老司机 iOS 周报 #48 | 2018-12-17
老司机 iOS 周报,只为你呈现有价值的信息. 你也可以为这个项目出一份力,如果发现有价值的信息.文章.工具等可以到 Issues 里提给我们,我们会尽快处理.记得写上推荐的理由哦.有建议和意见也欢迎 ...
- 风控ML[1] | 风控建模老司机的几点思考与总结
「风控ML」系列文章,主要是分享一下自己多年以来做金融风控的一些事一些情,当然也包括风控建模.机器学习.大数据风控等相关技术分享,欢迎同行交流与新同学的加入,共同学习,进步! 机器学习建模现在在很多地 ...
- 我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中)
我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中) 最初写这篇文章的时候,是在今年的 9 月中旬.今天,我想再写写这将近两个多月以来的感受. 在今年的 10 月我来到北京求 ...
- 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
在做数据包分析的时候,经常会说一句话,"Packets never lie(数据包不会说谎)",即数据包会真实反应网络服务和应用服务的真实状态.基于网络镜像的流量分析同样如此,如果 ...
最新文章
- OpenGL通过Assimp加载模型
- 计算机应用基础寒假作业,计算机应用基础理论试卷寒假作业.doc
- Hi Visual Studio for Mac
- python数据挖掘笔记】十八.线性回归及多项式回归分析四个案例分享
- 案例:实现在购物车中添加商品和删除购物车中指定商品的功能
- android 发送csv邮件,无法在android中使用电子邮件发送.csv文件
- 动手学习数据分析(四)——数据可视化
- CSS按钮动画(五)
- Python制作代码雨
- composition API
- HTML转PDF(Thymeleaf做模板)
- 科技爱好者周刊(第 154 期):1982年的信息社会预言
- day 18 类与类之间的关系
- 计算机专业考研青岛,青岛大学(专业学位)计算机技术考研难吗
- 微信企业付款 ”错误码:NO_AUTH,错误信息:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置“报错的处理办法
- 【OpenCV 例程 300篇】222. 特征提取之弗里曼链码(Freeman chain code)
- 解决qq安全防护更新进程总提示的方法
- SwiftUI 界面刷新 外部修改 ObservableObject @ObservedObject @Published
- 机房环境监控的系统概述
- 快播王欣布局区块链,他能否卷土重来?
热门文章
- Linux服务部署常用命令--top、free、df、scp
- 区块链分布式账本Hyperledger Fabric介绍
- springboot配置servlet容器的两种途径:配置文件及编码方式
- 【学亮IT手记】jQuery DOM删除操作
- WebService实例-CRM系统提供WebService实现用户注册功能
- oracle绑定主键,oracle添加主键的四种方法:
- qml dockwidget窗口停靠
- MATLAB有关数字信号处理的一些方法
- httpclient base64 文件上传_选择HttpClient还是OkHttp?
- 多线程处理同一批数据_多进程和多线程的优缺点