Spring Boot Actuator JMX 端点的漂亮打印输出
Posted
技术标签:
【中文标题】Spring Boot Actuator JMX 端点的漂亮打印输出【英文标题】:Pretty print output of Spring Boot Actuator JMX endpoints 【发布时间】:2015-10-23 16:02:48 【问题描述】:我有一个 Spring Boot 控制台应用程序,我通过 JMX 访问执行器端点。问题是返回的文本不是很漂亮,也不是 JSON。它看起来像这样:
context=application, parent=null, beans=[bean=helloWorldApplication, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldApplication, resource=null, dependencies=[helloWorldService], bean=helloWorldService, scope=singleton, type=com.surpreso.spring_skeleton.HelloWorldService, resource=file [C:/src-tmp/spring-skeleton/target/classes/com/surpreso/spring_skeleton/HelloWorldService.class], dependencies=[], bean=com.surpreso.spring_skeleton.DefaultConfig, ...
将其转换为可读格式的最佳方法是什么?是否可以将 JMX 执行器配置为漂亮打印?是否可以将 JMX 执行器配置为使用 JSON?
有一个关于Pretty print JSON output of Spring Boot Actuator endpoints 的相关问题,但在这种情况下,我坚持使用 JMX,因为我没有 Web 应用程序。下一步我将尝试 CRaSH,但我很好奇是否可以将 JMX 执行器配置为更可用。
我使用的是 1.2.5 版的 Spring Boot。
更新:CRaSH 实现使用相同的格式,因此不是解决方案。
更新 2:我在 1.3.0 中看到 this commit 关于“在所有 EndpointMBean 中使用已配置的 ObjectMapper(如果可用)”,但我不知道要设置哪些属性以进行漂亮的打印。很近了……
更新 3:spring.jackson.serialization.indent_output=true
通过 CRaSH 接口没有任何影响。我现在在 1.3.0.M2。
【问题讨论】:
【参考方案1】:您粘贴的输出是一个有效的 json 文档。是什么让您认为它完全无效?
如果您想漂亮地打印格式,这实际上取决于您访问 JMX 端点的方式。例如,如果您通过 JConsole 访问它,我不确定漂亮的打印输出对于大型文档是否具有可读性。如果您手动访问 JMX 端点,那么您可以非常轻松地读取字符串并漂亮地打印输出(JSONObject
有一个 toString
方法,它采用您想要在文档上应用的缩进)。
关于 CRaSH,这真的无关紧要。执行器端点位于 CRaSH 之外,不使用它的任何功能。
编辑:我的错误,这不是有效的 JSON,我在 Spring Boot 问题跟踪器中创建了 #3658。
【讨论】:
你可以说它类似于 JSON,但它不是 JSON。字符串不加引号,“:”替换为“=”。见json.org/example。 关于用法,我会以交互方式访问 JConsole 或 CRaSH shell,然后我想以某种方式理解数据。如果输出是有效的 JSON,我可以将其粘贴到编辑器中并漂亮地打印出来,那就太好了。 哦,好吧,我以为是 JSON,但我看的不够仔细,对此感到抱歉!我创建了3658,谢谢!以上是关于Spring Boot Actuator JMX 端点的漂亮打印输出的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置
Spring Boot Actuator:健康检查审计统计和监控
Spring Boot 2 Actuator 端点在 GET 请求上返回 405
spring-boot-starter-actuator 与 hystrix-servo-metrics-publisher 冲突
在 Spring Boot Camel 应用程序公开的 Micrometer / Prometheus 信息中包含其他 JMX 指标