第二十七章:监控管理之Actuator使用

前言

随着我们服务越来越多,部署的环境也越来越繁多时,由于各服务都部署在不同的机器上,每当出现问题或者异常时,想快速进行问题的定位就变的麻烦了。所以,本章节开始,开始讲解 的监控相关知识点。本章节就先来说一说,其自带的 功能

一点知识

Actuator实践

自定义健康端点

自定义端点

原生端点

上手实践

自定义端点

参考资料

总结

最后

老生常谈

一点知识

是 项目一个监控模块,提供了很多原生的端点,包含了对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,比如应用程序上下文里全部的Bean健康指标环境变量各类重要度量指标等等,这些都是使用可 进行请求访问。通过这些监控信息,我们就能随时了解应用的运行情况了。

Actuator实践

特别说明:最近在编写 的教程,使用的是 的版本,其和 版本是有区别的,需要额外开启端点,默认只开启了 两个端点,其他的需要额外去配置的。本教程还是沿用 版本来示例。关于 的后续再来更新吧,不然会乱了。。

原生端点

原生端点是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。原生端点又可以分成三类:

应用配置类:可以查看应用在运行期的静态信息:例如自动配置信息、加载的springbean信息、yml文件配置信息、环境信息、请求映射信息;

度量指标类:主要是运行期的动态信息,例如堆栈、请求连、一些健康指标、metrics信息等;

操作控制类:主要是指shutdown,用户可以发送一个请求将应用的监控功能关闭。

官网可以看出,原生的端点很多

以下列举内置的端点相关说明:

从官网文档也可以看出,可通过配置文件,修改某端点是否开启,是否需要鉴权访问等

如:

至于以上每个端点实际输出的信息,大家可以看看大佬们的文章或者访问 端点里面也有的,常用的命令输出都有示例,这里就不贴了。不然文章看起来就冗长了,哈哈~

命令详解:http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html

访问 端点(如何使用下文有说明):

上手实践

0.加入POM依赖

加入 可查看相关文档,如

1.配置文件(可无),具体的可根据实际业务来配置。

2.编写启动类(普通的启动类),启动后,访问:http://127.0.0.1:1234/monitor/ (因为我们重新指定了访问端口的上下文为monitor了)

访问 ,是需要授权的,可以看见需要输入用户名和密码了:

输入配置文件里面配置的用户名和密码,就可以正常访问了:

自定义端点

虽然本身 已经自带了很多端点,大部分情况下是够用了。但对于某些特殊需要时,还是需要自定义端点来满足的。接下来就简单讲解下自定义端点的创建。

自定义健康端点

健康信息可以用来检查应用的运行状态。所以经常被监控软件用来提醒生产系统是否停止,数据库是否正常,或者redis是否启动等等,而且一般上健康端点的信息都是比较敏感的,应加入身份鉴权。

自动配置的健康端点有:

简单说明下:

这些端点,在 包被依赖导入后,利用 等注解进行自动加载的,具体可以看看 包下的自动加载类。

比如,上图中的,当我们加入 依赖后, 就会自动被装载了,这个时候我们访问下:http://127.0.0.1:1234/monitor/health ,可以看见 节点有显示了,状态是关闭

其他的都是类似的,具体可以看看源码。接下来,我们通过继承 来自定义一个监控端点(当然也可以实现 接口的)

最后效果:

这方面用的不多,至于其他详细信息,可以查看官网:Security with HealthIndicators

自定义端点

出来在原来内置的端点进行添加,访问的路径还是内置的路径,我们还能通过完全自定义一个端点来实现我们的业务需求的。

首先,我们来看看 对应的类 ,其是继承了 来实现的。通过IDE我们也能看到,大部分的端点都是继承此抽象类来完成的。

所以,我们也通过继承此类来实现自定义端点。

加入了 后可在配置文件中,设置是否开启等等。当然也可以加入自定义的参数了,这里就默认了,没有添加额外的参数。

参考资料

https://docs.spring.io/spring-boot/docs/1.5.15.RELEASE/reference/htmlsingle/#production-ready

https://www.jianshu.com/p/af9738634a21

总结

本注解主要介绍了一些原生端点和自定义端点的相关实践。对于一般的信息,使用使用这些原生的端点就能基本满足了,但由于返回的是json串,不够明了。下一章节就介绍下,利用 进行可视化的监控,比如有图表信息、查看日志输出等等,通过界面来进行展现。

最后

目前互联网上很多大佬都有 系列教程,如有雷同,请多多包涵了。原创不易,码字不易,还希望大家多多支持。若文中有所错误之处,还望提出,谢谢。

老生常谈

个人QQ:

微信公众号:

完整示例:https://github.com/xie19900123/spring-boot-learning/tree/master/chapter-27

系列

如果你觉得文章不错,欢迎点赞分享到朋友圈

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180911G0EZOH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券