去年,我们的项目进行了微服务1.0体系结构转换,但是服务监视并未保持不断。(我从来没有吃过猪肉,我听过猪,我看过猪在跑?)。
本文是完成此工作顺序后的春季启动执行器模块的学习和应用的摘要。在本文中,您可以学习:
之后我还将介绍:
Spring Boot执行器模块提供生产级别的功能,例如健康检查,审计,指标收集,HTTP跟踪等,以帮助我们监视和管理Spring Boot应用程序。该模块是一个模块,该模块收集了内部信息,该信息将暴露于该模块中外部。可以通过HTTP和JMX访问上述两个功能。
由于内部信息的特征,执行器还可以与某些外部应用程序监控系统(Prometheus,Graphite,Datadog,Infux,Wavefront,New Relic等)集成。这些监视系统提供了出色的仪表板,图形,分析,分析和警报,可通过统一和友好的界面来帮助您监视和管理应用程序。
执行器使用千分尺与这些外部应用程序监视系统集成。这样,您可以轻松地将外部监视系统与一些配置集成在一起。
千分尺为Java平台上的性能数据收集提供了通用API。应用程序只需要使用Mictor的通用API来收集性能指标。MICROMER负责使用不同的监视系统完成适应性工作。这使开关监视系统更加容易。
比较SLF4J在Java Logger中的定位。
让我们先创建一个演示应用程序。
Spring Boot提供了SO值的端点(翻译为端点),以访问并与应用程序进行交互。
例如,端点提供了有关健康应用程序的一些基本信息。端点提供了一些有用的应用指标(JVM内存使用,系统CPU使用等)。
这些实际模块最初是端点。我们称其为本地端点。根据端点的角色,我们可以分为三类:
有关本机端点简介的详细信息,请参阅官方网站。
您需要注意的是:
我们可以通过以下配置配置通过JMX和HTTP暴露的端点。
您可以打开所有监视点
Management.ndpoints.web.expuse.include =*复制代码也可以选择打开零件。
Management.Endpoints.web.expuse.exclude = bean,跟踪代码执行器监视点路径在那里。当然,如果您需要此路径,您还支持自定义。
Management.Endpoints.web.base-path =/重新启动后,封装代码设置,访问地址将再次变为。
现在,我们遵循以下配置:
启动演示程序,访问并检查裸露的端点:
以上显示Chrome浏览器已安装了JSON Handle插件,该插件实际上是返回JSON的大部分
下面,我将重点关注一些更重要的端点。
终点将收集您计划的健康指标,以检查该计划的健康状况。端点的公共应用健康信息取决于::
可以使用以下值之一对此属性进行配置:
在不显示详细信息的情况下,向上或向下的状态,默认配置详细信息将显示给认证的用户。可以通过配置所有用户的配置来配置授权角色。配置配置后,我们启动项目,访问端口,您可以看到此信息:
感觉像是一点点健康信息吗?不用担心,那是因为我们是最基本的演示项目,而不依赖许多组件。
端点具有很多自动配置健康指标:例如Redis,RabbitMQ,DB和其他组件。当您的项目取决于相应的组件时,这些健康指标将自动组装,然后收集相应的信息。例如,磁盘空间,磁盘空间上面的节点信息起作用。
以上屏幕截图取自官方文件
这是我另一个项目的端点信息。
当上述组件具有异常状态时,应用程序服务的总体状态下降了。我们还可以配置组件的健康监控。
或禁用所有自动配置健康指标:
l自定义健康指标当然,您还可以自定义健康指标,只需要实现界面或继承类即可。
最终效果:
端点用于返回当前应用程序的各种重要测量指标,例如:内存信息,线程信息,垃圾回收信息,tomcat,数据库连接池等。
**与1.x不同,执行器没有在此接口上看到特定的指标信息,只需显示指标列表。
例如,我访问,返回信息如下:
您还可以查看查询参数中的单独区域。例如,您可以访问它。结果是:
端点公开了我们程序内部配置中配置的所有记录器的信息。我们可以看到,我们可以看到它,
您也可以以以下方式访问单独的记录仪
例如,我现在访问Logger,
日更改运行时日志级端点。我最想提到的是可以动态修改日志级别的功能。
例如,我们可以通过以下方式修改记录器的日志级别。我们只需要启动URL请求,后消息如下:
考虑一下,此功能非常有用。如果在生产环境中,您希望您的应用程序输出一些调试信息以促进您对某些异常的诊断。您只需要在上面的方法中修改它,而无需重新启动应用程序。
如果要将其重置为默认值,请将值更改为
端点可以用于显示程序的信息。我了解某些程序的基本信息。您可以根据您的需求在配置文件中个性化配置(默认情况下,端点只会返回空的JSON内容。)。:
启动项目,访问:
端点将返回有关弹簧容器中所有BEAN的别名,类型,单个情况,依赖性和其他信息的信息。
访问,如下以下返回:
访问:它将自动生成JVM堆堆HeapDump。我们可以使用JDK自己的JVM监视工具VisualVM打开此文件以查看内存现金。
我个人认为此端点特别有用,因此我们可以在日常定位问题中检查线程的情况。它主要显示诸如线程名称,线程ID,线程,是否等待锁定资源,线程堆栈和其他信息信息。检查可能不是直观的。访问返回如下:
此端点属于操作控制类点,可以优雅地关闭Spring Boot应用程序。要使用此功能,您需要在配置文件中打开:
由于关闭接口仅默认支持邮政请求,因此我们启动演示项目并启动请求。返回消息:
然后关闭应用程序。
因为打开和关闭应用程序本身的操作本身是非常危险的事情,所以当我们真正在线使用时,我们需要向其添加某种保护机制,例如:自定义的执行器的端点路径,将Spring Security集成以进行安全验证(如果不是特别必要,您不需要打开此端点)
由于端点的信息和交互非常敏感,因此必须防止未经授权的外部访问。如果您的应用程序中的弹簧安全依赖项默认情况下,请使用基于表单的HTTP身份验证来保护端点。
如果没有,您只需要增加相应的依赖性:
添加后,我们需要定义安全验证规则以涵盖Spring Security的默认配置。
在这里,我给出了两个版本的模板配置:
相关配置如下:
这就是本文的内容。
相应的源代码可以在Github上看到。
如果本文对您有所帮助,我希望喜欢它,这对我来说是最大的动力?
参考:
docs.spring.io/spring-boot/docs/current/referent/html/actuator.html
www.ityouknow.com/springboot/2018/02/06/spring-boxator.html