Skip to content
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

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

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 added this to In progress in Jetty 9.4.35 via automation Nov 2, 2020
@joakime joakime moved this from In progress to Review in progress in Jetty 9.4.35 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
…tiation

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
+ It was matching on jetty-util-ajax-#.jar as well.

Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
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.

+ 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
Jetty 9.4.35 automation moved this from Review in progress to Reviewer approved Nov 17, 2020
@joakime joakime merged commit 1448444 into jetty-9.4.x Nov 17, 2020
Jetty 9.4.35 automation moved this from Reviewer approved to Done 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
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

2 participants