title: Tool to monitor & log system metrics during automated Java performance tests
body: <p>We have an application using Spring Integration in its core, and have created performance tests to see what is the processing speed (msgs/sec) for different generated input types.</p>
  
  <p>This process is automated, so whenever such test is run, a separate instance is created in cloud, and disposed after done &amp; output artefacts copied.</p>
  
  <p>What I want to do is to have those performance tests monitored during the run for basic system metrics -- CPU, memory, I/O, GC runs/time. Obviously, the result of this should be some CSV files with metrics readings (e.g., once or twice a second).</p>
  
  <p>So my question is: <strong>Are there any good and configurable tools for these purposes?</strong></p>
  
  <p>I'm in the middle of investigation, but profiling tools I reviewed so far mainly require human interaction and are UI oriented.</p>
  
  <p>An option I'm considering is writing a separate tool to access MXBean &amp; use it to log such data during the performance tests. Just wondering if anything good is around.</p>
  
  <p>Please note that this application is running in Tomcat, however for the performance tests we are only using Spring Integration's File endpoints.</p>
  
  <p>Please also note, that 'switchable' component within application is also possible solution. However, I'm currently looking for application-agnostic external tools-first solution.</p>