Pretty print JSON output of Spring Boot Actuator endpoints
Pretty print JSON output of Spring Boot Actuator endpoints
Spring Boot Actuator provides several endpoints to monitor an application as:
/metrics /beans /health ...
Checking the endpoints with:
curl http://localhost:8080/metrics
results in:
{"counter.status.200.env":1,"counter.status.200.health":1,"counter.status.200.info":2,"counter.status.200.metrics":2,"gauge.response.env":5.0,"gauge.response.health":22.0,"gauge.response.info":1.0,"gauge.response.metrics":1.0,"mem":1030144,"mem.free":56118,"processors":8,"uptime":5108095,"instance.uptime":5102906,"heap.committed":1030144,"heap.init":262144,"heap.used":974031,"heap":3728384,"threads.peak":81,"threads.daemon":21,"threads":77,"classes":8854,"classes.loaded":8860,"classes.unloaded":6,"gc.ps_scavenge.count":119,"gc.ps_scavenge.time":7223,"gc.ps_marksweep.count":12,"gc.ps_marksweep.time":17573}
This is fine for machine consumption but hard to read by humans.
I'd like to format (i.e. pretty print) the JSON output of the Spring Boot Actuator endpoints to make them easier to read by operations personel.
Something like:
{ "counter.status.200.env":1, "counter.status.200.health":1, "counter.status.200.info":2, "counter.status.200.metrics":2, "gauge.response.env":5.0, "gauge.response.health":22.0, "gauge.response.info":1.0, ... }
I tried setting
http.mappers.json-pretty-print=true
but this setting didn't affect the Actuator output.
Is there a configuration to enable pretty print of the Spring Boot Actuator JSON output?
UPDATE:
The official sample works for me.
It's important to follow the comments from @DaveSyer: the property to set is
http.mappers.jsonPrettyPrint=true
Investigation is still under way.
In the meantime I use the the json pretty print command line as workaround:
Install jsonpp (e.g. for OS X):
brew install jsonpp
Then pipe the curl output trough jsonpp which formats the json file on the fly:
curl http://localhost:8080/metrics | jsonpp
Results in:
{ "counter.status.200.env": 1, "counter.status.200.health": 1, "counter.status.200.info": 2, "counter.status.200.metrics": 2, ... }
Answer by geoand for Pretty print JSON output of Spring Boot Actuator endpoints
Do the following:
@Configuration public class JacksonConfig { @Autowired private ObjectMapper objectMapper; //reuse the pre-configured mapper @PostConstruct public void setup() { objectMapper.enable(SerializationFeature.INDENT_OUTPUT); //whatever else you need } }
This works because Spring Boot uses an ObjectMapper
bean to perform all the JSON related operations.
Note however that this configuration will pretty print all JSON outputs, not just the actuator related stuff.
UPDATE
The answer from @DaveSyer is obviously better! I hadn't found the HttpMapperProperties
object which is used to configure Jackson. This is it's Javadoc
Answer by Dave Syer for Pretty print JSON output of Spring Boot Actuator endpoints
The "http.mappers" property works for me but I think you might need it camel cased ("jsonPrettyPrint").
Answer by Samuli Krkkinen for Pretty print JSON output of Spring Boot Actuator endpoints
I use Python's commonly installed json.tool
module:
curl --silent http://localhost:8080/metrics | python -mjson.tool
Answer by Bertrand Renuart for Pretty print JSON output of Spring Boot Actuator endpoints
As per http://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the-jackson-objectmapper, the official way to enable pretty print with Jackson in Spring Boot (1.2.2 at least) is to set the following property:
# Pretty-print JSON responses spring.jackson.serialization.indent_output=true
Answer by Hakan for Pretty print JSON output of Spring Boot Actuator endpoints
With spring-boot 1.2.6, you need to use:
spring.jackson.serialization.INDENT_OUTPUT=true
From my log when using the old http.mappers.*:
http.mappers.json-pretty-print is deprecated. If you are using Jackson, spring.jackson.serialization.INDENT_OUTPUT=true should be used instead.
Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72
0 comments:
Post a Comment