| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- """
- Prometheus metrics exported by Jupyter Server
- Read https://prometheus.io/docs/practices/naming/ for naming
- conventions for metrics & labels.
- """
- from prometheus_client import Gauge, Histogram, Info
- from jupyter_server._version import version_info as server_version_info
- try:
- from notebook._version import version_info as notebook_version_info
- except ImportError:
- notebook_version_info = None
- if (
- notebook_version_info is not None # No notebook package found
- and notebook_version_info < (7,) # Notebook package found, is version 6
- # Notebook package found, but its version is the same as jupyter_server
- # version. This means some package (looking at you, nbclassic) has shimmed
- # the notebook package to instead be imports from the jupyter_server package.
- # In such cases, notebook.prometheus.metrics is actually *this file*, so
- # trying to import it will cause a circular import. So we don't.
- and notebook_version_info != server_version_info
- ):
- # Jupyter Notebook v6 also defined these metrics. Re-defining them results in a ValueError,
- # so we simply re-export them if we are co-existing with the notebook v6 package.
- # See https://github.com/jupyter/jupyter_server/issues/209
- from notebook.prometheus.metrics import (
- HTTP_REQUEST_DURATION_SECONDS,
- KERNEL_CURRENTLY_RUNNING_TOTAL,
- TERMINAL_CURRENTLY_RUNNING_TOTAL,
- )
- else:
- HTTP_REQUEST_DURATION_SECONDS = Histogram(
- "http_request_duration_seconds",
- "duration in seconds for all HTTP requests",
- ["method", "handler", "status_code"],
- )
- TERMINAL_CURRENTLY_RUNNING_TOTAL = Gauge(
- "terminal_currently_running_total",
- "counter for how many terminals are running",
- )
- KERNEL_CURRENTLY_RUNNING_TOTAL = Gauge(
- "kernel_currently_running_total",
- "counter for how many kernels are running labeled by type",
- ["type"],
- )
- # New prometheus metrics that do not exist in notebook v6 go here
- SERVER_INFO = Info("jupyter_server", "Jupyter Server Version information")
- SERVER_EXTENSION_INFO = Info(
- "jupyter_server_extension",
- "Jupyter Server Extension Version Information",
- ["name", "version", "enabled"],
- )
- LAST_ACTIVITY = Gauge(
- "jupyter_server_last_activity_timestamp_seconds",
- "Timestamp of last seen activity on this Jupyter Server",
- )
- SERVER_STARTED = Gauge(
- "jupyter_server_started_timestamp_seconds", "Timestamp of when this Jupyter Server was started"
- )
- ACTIVE_DURATION = Gauge(
- "jupyter_server_active_duration_seconds",
- "Number of seconds this Jupyter Server has been active",
- )
- __all__ = [
- "HTTP_REQUEST_DURATION_SECONDS",
- "TERMINAL_CURRENTLY_RUNNING_TOTAL",
- "KERNEL_CURRENTLY_RUNNING_TOTAL",
- "SERVER_INFO",
- ]
|