H2O

the optimized HTTP/1.x, HTTP/2, HTTP/3 server

Powered by Oktavia

Configure > Status Directives

The status handler exposes the current states of the HTTP server. This document describes the configuration directives of the handler.

since v2.0

"status"

Description:

If the argument is ON, the directive registers the status handler to the current path.

Access to the handler should be restricted, considering the fact that the status includes the details of in-flight HTTP requests. The example below uses Basic authentication.

Example. Exposing status with Basic authentication
paths:
  /server-status:
    mruby.handler: |
      require "htpasswd.rb"
      Htpasswd.new("/path/to/.htpasswd", "status")
    status: ON

The information returned by the /json handler can be filtered out using the optional show=module1,module2 parameter. There are currently three modules defined:

  • requests: displays the requests currently in-flight.
  • durations: displays durations statistics for requests since server start time in seconds (returns all zeros unless duration-stats is ON).
  • errors: displays counters for internally generated errors.
  • main: displays general daemon-wide stats.

Level:
path
since v2.1

"duration-stats"

Description:

Gather timing stats for requests.

If the argument is ON, this directive populates duration statistics in seconds, to be consumed by status handlers. Enabling this feature has a noticeable CPU and memory impact.

Note that the time spent while processing a request in a blocking manner (such as opening a file or a mruby handler that does invoke a network operation) will not be reflected to the process_time element of the duration stats due to the fact that the timer being used for measuring the time spent is updated only once per loop.

Level:
global
Default:
duration-stats: OFF