Skip to content

Issue #5539 - Proper StatisticsServlet output format via content negotiation #5560

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Nov 17, 2020

Conversation

joakime
Copy link
Contributor

@joakime joakime commented Nov 2, 2020

StatisticsServer can now present it's information in (text, html, json, and xml).

Selected via normal HTTP content negotiation.

Example output (expand to see details)

$ curl -H "Accept: text/xml" http://localhost:9090/stats
<statistics>
  <connections>
    <connection>
      <name>org.eclipse.jetty.server.ServerConnector@4A87761D</name>
      <protocols>
        <protocol>http/1.1</protocol>
      </protocols>
      <statsOn>false</statsOn>
    </connection>
  </connections>
  <memory>
    <heapMemoryUsage>359372240</heapMemoryUsage>
    <nonHeapMemoryUsage>22923928</nonHeapMemoryUsage>
  </memory>
  <requests>
    <asyncRequests>0</asyncRequests>
    <dispatched>8</dispatched>
    <dispatchedActive>1</dispatchedActive>
    <dispatchedActiveMax>1</dispatchedActiveMax>
    <dispatchedTimeMax>12</dispatchedTimeMax>
    <dispatchedTimeMean>3.857142857142857</dispatchedTimeMean>
    <dispatchedTimeStdDev>3.0613177990314346</dispatchedTimeStdDev>
    <dispatchedTimeTotal>27</dispatchedTimeTotal>
    <errors>0</errors>
    <requests>8</requests>
    <requestsActive>1</requestsActive>
    <requestsActiveMax>1</requestsActiveMax>
    <requestsExpired>0</requestsExpired>
    <requestsResumed>0</requestsResumed>
    <requestsSuspended>0</requestsSuspended>
    <requestsSuspendedMax>0</requestsSuspendedMax>
    <requestsTimeMax>12</requestsTimeMax>
    <requestsTimeMean>3.857142857142857</requestsTimeMean>
    <requestsTimeStdDev>3.0613177990314346</requestsTimeStdDev>
    <requestsTimeTotal>27</requestsTimeTotal>
    <statsOnMs>132823</statsOnMs>
  </requests>
  <responses>
    <responses1xx>0</responses1xx>
    <responses2xx>6</responses2xx>
    <responses3xx>0</responses3xx>
    <responses4xx>1</responses4xx>
    <responses5xx>0</responses5xx>
    <responsesBytesTotal>6996</responsesBytesTotal>
  </responses>
</statistics>
$ curl -H "Accept: application/json" http://localhost:9090/stats | json_pp
{
   "requests" : {
      "dispatchedActive" : 1,
      "requestsActiveMax" : 1,
      "requestsTimeStdDev" : 3.11094840844396,
      "statsOnMs" : 97118,
      "errors" : 0,
      "requestsActive" : 1,
      "requestsExpired" : 0,
      "dispatchedTimeTotal" : 26,
      "asyncRequests" : 0,
      "dispatchedTimeMax" : 12,
      "requestsSuspendedMax" : 0,
      "requestsTimeTotal" : 26,
      "requestsTimeMax" : 12,
      "requestsSuspended" : 0,
      "requestsTimeMean" : 4.33333333333333,
      "dispatchedTimeStdDev" : 3.11094840844396,
      "dispatchedTimeMean" : 4.33333333333333,
      "dispatched" : 7,
      "requests" : 7,
      "dispatchedActiveMax" : 1,
      "requestsResumed" : 0
   },
   "memory" : {
      "heapMemoryUsage" : 359372240,
      "nonHeapMemoryUsage" : 22911656
   },
   "responses" : {
      "responses3xx" : 0,
      "responses4xx" : 1,
      "responses2xx" : 5,
      "responses1xx" : 0,
      "responsesBytesTotal" : 6171,
      "responses5xx" : 0
   },
   "connections" : [
      {
         "protocols" : [
            "http/1.1"
         ],
         "statsOn" : false,
         "name" : "org.eclipse.jetty.server.ServerConnector@4A87761D"
      }
   ]
}
$ curl -H "Accept: text/plain" http://localhost:9090/stats
statistics: 
  connections: 
    connection: 
      name: org.eclipse.jetty.server.ServerConnector@4A87761D
      protocols: 
        protocol: http/1.1
      statsOn: false
  memory: 
    heapMemoryUsage: 369941880
    nonHeapMemoryUsage: 22951424
  requests: 
    asyncRequests: 0
    dispatched: 9
    dispatchedActive: 1
    dispatchedActiveMax: 1
    dispatchedTimeMax: 12
    dispatchedTimeMean: 3.625
    dispatchedTimeStdDev: 2.8980288867731163
    dispatchedTimeTotal: 29
    errors: 0
    requests: 9
    requestsActive: 1
    requestsActiveMax: 1
    requestsExpired: 0
    requestsResumed: 0
    requestsSuspended: 0
    requestsSuspendedMax: 0
    requestsTimeMax: 12
    requestsTimeMean: 3.625
    requestsTimeStdDev: 2.8980288867731163
    requestsTimeTotal: 29
    statsOnMs: 147503
  responses: 
    responses1xx: 0
    responses2xx: 7
    responses3xx: 0
    responses4xx: 1
    responses5xx: 0
    responsesBytesTotal: 8618
$ curl -H "Accept: text/html" http://localhost:9090/stats
<html><head><title>StatisticsServlet</title></head><body>
<ul>
<li><em>statistics</em>: 
  <ul>
    <li><em>connections</em>: 
      <ul>
        <li><em>connection</em>: 
          <ul>
            <li><em>name</em>: org.eclipse.jetty.server.ServerConnector@4A87761D</li>
            <li><em>protocols</em>: 
              <ul>
                <li><em>protocol</em>: http/1.1</li>
              </ul>
              </li>
            <li><em>statsOn</em>: false</li>
          </ul>
          </li>
      </ul>
      </li>
    <li><em>memory</em>: 
      <ul>
        <li><em>heapMemoryUsage</em>: 369941880</li>
        <li><em>nonHeapMemoryUsage</em>: 22965800</li>
      </ul>
      </li>
    <li><em>requests</em>: 
      <ul>
        <li><em>asyncRequests</em>: 0</li>
        <li><em>dispatched</em>: 10</li>
        <li><em>dispatchedActive</em>: 1</li>
        <li><em>dispatchedActiveMax</em>: 1</li>
        <li><em>dispatchedTimeMax</em>: 12</li>
        <li><em>dispatchedTimeMean</em>: 3.4444444444444446</li>
        <li><em>dispatchedTimeStdDev</em>: 2.7556759606310752</li>
        <li><em>dispatchedTimeTotal</em>: 31</li>
        <li><em>errors</em>: 0</li>
        <li><em>requests</em>: 10</li>
        <li><em>requestsActive</em>: 1</li>
        <li><em>requestsActiveMax</em>: 1</li>
        <li><em>requestsExpired</em>: 0</li>
        <li><em>requestsResumed</em>: 0</li>
        <li><em>requestsSuspended</em>: 0</li>
        <li><em>requestsSuspendedMax</em>: 0</li>
        <li><em>requestsTimeMax</em>: 12</li>
        <li><em>requestsTimeMean</em>: 3.4444444444444446</li>
        <li><em>requestsTimeStdDev</em>: 2.7556759606310752</li>
        <li><em>requestsTimeTotal</em>: 31</li>
        <li><em>statsOnMs</em>: 163911</li>
      </ul>
      </li>
    <li><em>responses</em>: 
      <ul>
        <li><em>responses1xx</em>: 0</li>
        <li><em>responses2xx</em>: 8</li>
        <li><em>responses3xx</em>: 0</li>
        <li><em>responses4xx</em>: 1</li>
        <li><em>responses5xx</em>: 0</li>
        <li><em>responsesBytesTotal</em>: 9562</li>
      </ul>
      </li>
  </ul>
  </li>
</ul>

</body></html>

Signed-off-by: Joakim Erdfelt joakim.erdfelt@gmail.com

@joakime joakime requested a review from gregw November 2, 2020 15:52
@joakime joakime self-assigned this Nov 2, 2020
@joakime joakime added Bug For general bugs on Jetty side Enhancement labels Nov 2, 2020
@joakime joakime force-pushed the jetty-9.4.x-5539-statisticsservlet-output branch from 178924b to b02c6b1 Compare November 2, 2020 17:01
@joakime joakime requested a review from gregw November 2, 2020 22:31
@joakime joakime added the Sponsored This issue affects a user with a commercial support agreement label Nov 16, 2020

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
…tiation

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
+ It was matching on jetty-util-ajax-#.jar as well.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
@joakime joakime force-pushed the jetty-9.4.x-5539-statisticsservlet-output branch from 4d415d6 to 683d9a9 Compare November 16, 2020 15:10
@joakime
Copy link
Contributor Author

joakime commented Nov 16, 2020

I need to add test cases to test-distribution for this.

Verified

This commit was signed with the committer’s verified signature.
joakime Joakim Erdfelt
+ Updating module definition for JSON

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
@joakime joakime requested a review from gregw November 17, 2020 03:01
@joakime joakime merged commit 1448444 into jetty-9.4.x Nov 17, 2020
@joakime joakime deleted the jetty-9.4.x-5539-statisticsservlet-output branch November 17, 2020 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug For general bugs on Jetty side Enhancement Sponsored This issue affects a user with a commercial support agreement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants