Prometheus metrics
New in version 2.12.0.
MWDB allows to enable Prometheus metrics to grab information about API usage by users.
Warning
This feature requires Redis database to be configured.
Available metrics:
mwdb_api_requests (method, endpoint, user, status_code)that tracks usage of specific endpoints by users and status codes.mwdb_deprecated_usage (feature, method, endpoint, user)that tracks usage of deprecated API endpoints
Useful PromQL queries (in most cases we use 5-minute window):
sum(increase(mwdb_api_requests{}[5m])/5) by (user)- counts general API usage by MWDB users in requests per minutesum(increase(mwdb_api_requests{status_code != "200"}[5m])) by (user, status_code)- API error rate grouped by user and status_codesum(increase(mwdb_api_requests{endpoint=~"api.filedownloadresource|api.requestsampledownloadresource|api.downloadresource|api.filedownloadzipresource", method="GET"}[5m])/5) by (user)- file download ratesum(increase(mwdb_api_requests{endpoint=~"api.fileresource|api.fileitemresource", method="POST"}[5m])/5) by (user)- file upload rate
Setup guide
First, you need to configure Redis server where metric counters are stored. Redis instance can be configured in MWDB via
redis_urioption in mwdb.ini file orMWDB_REDIS_URIenvironment variable.Then you need to enable metrics by setting
enable_prometheus_metrics=1in configuration orMWDB_ENABLE_PROMETHEUS_METRICS=1in env varsLog in as admin in MWDB and go to http://<mwdb>/settings/users. Create user account that will be used to access prometheus metrics.
Go to
Check user capabilitiesor http://<mwdb>/settings/user/<username>/capabilities to setaccess_prometheus_metricsACL for created account.Then generate API key on http://<mwdb>>/settings/user/<username>/api-keys that will be used to scrape metrics by Prometheus
After setup, metrics can be scraped using http://<mwdb-api>/api/varz endpoint with API key provided in Authorization: Bearer <api_key> HTTP header.
You can test it before setting up Prometheus using curl:
$ curl http://<mwdb-api>/api/varz -H 'Authorization: Bearer <api_key>'
Detailed instructions about Prometheus configuration can be found in Prometheus docs.