Expose Prometheus metrics #2547

Closed
opened 2025-12-29 18:19:50 +01:00 by adam · 0 comments
Owner

Originally created by @lampwins on GitHub (Apr 24, 2019).

Environment

  • Python version: 3.7
  • NetBox version: develop-2.6

Proposed Functionality

As NetBox continues to grow in both functionality and the scale at which users deploy the application, the need for more insight into performance has become apparent. Prometheus is a time series metric platform which has become quite popular in the monitoring space. This is to propose exposing Prometheus metrics from the NetBox codebase by way of django-prometheus and the client_python Prometheus libraries.

Use Case

As an administrator of NetBox, there is a need to better monitor and understand the running performance state of NetBox. Prometheus will allow us to expose metrics about the run time environment resources, request and response times per django view, database query performance, and more. All of these metrics will be exposed via /metrics in the standard Prometheus fashion.

Administrators will be able to toggle whether or not metrics are exposed on this endpoint with a simple configuration parameter.

Database Changes

No schema changes, but django-prometheus will proxy a middleware to obtain performance metrics on database calls.

External Dependencies

New dependency on django-prometheus which is stable, mature, and used in many django projects.

Originally created by @lampwins on GitHub (Apr 24, 2019). <!-- NOTE: This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.7 * NetBox version: develop-2.6 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality As NetBox continues to grow in both functionality and the scale at which users deploy the application, the need for more insight into performance has become apparent. Prometheus is a time series metric platform which has become quite popular in the monitoring space. This is to propose exposing Prometheus metrics from the NetBox codebase by way of `django-prometheus` and the `client_python` Prometheus libraries. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case As an administrator of NetBox, there is a need to better monitor and understand the running performance state of NetBox. Prometheus will allow us to expose metrics about the run time environment resources, request and response times per django view, database query performance, and more. All of these metrics will be exposed via `/metrics` in the standard Prometheus fashion. Administrators will be able to toggle whether or not metrics are exposed on this endpoint with a simple configuration parameter. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes No schema changes, but `django-prometheus` will proxy a middleware to obtain performance metrics on database calls. <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies New dependency on `django-prometheus` which is stable, mature, and used in many django projects.
adam added the status: accepted label 2025-12-29 18:19:50 +01:00
adam closed this issue 2025-12-29 18:19:50 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#2547