First, you need to install the metrics
package:
$ cd ${PROJECT_ROOT}
$ tarantoolctl rocks install metrics
Next, require it in your code:
local metrics = require('metrics')
Set a global label for your metrics:
metrics.set_global_labels({alias = 'alias'})
Enable default Tarantool metrics such as network, memory, operations, etc:
metrics.enable_default_metrics()
If you use Cartridge, enable Cartridge metrics:
metrics.enable_cartridge_metrics()
Initialize the Prometheus Exporter, or export metrics in any other format:
local httpd = require('http.server')
local http_handler = require('metrics.plugins.prometheus').collect_http
httpd.new('0.0.0.0', 8088)
:route({path = '/metrics'}, function(...)
return http_handler(...)
end)
:start()
box.cfg{
listen = 3302
}
Now you can use the HTTP API endpoint /metrics
to collect your metrics in the Prometheus format. If you need your custom metrics, see the API reference <metrics-api-reference>
.
cartridge.roles.metrics
is a role for Tarantool Cartridge. It allows using default metrics in a Cartridge application and manage them via configuration.
Usage
Add
metrics
package to dependencies in the.rockspec
file. Make sure that you are using version 0.3.0 or higher.dependencies = { ... 'metrics >= 0.3.0-1', ... }
Make sure that you have
cartridge.roles.metrics
in the roles list incartridge.cfg
in your entry-point file (e.g.init.lua
).local ok, err = cartridge.cfg({ ... roles = { ... 'cartridge.roles.metrics', ... }, })
Enable role in the interface:
Since version 0.6.0 metrics role is permanent and enabled on instances by default.
After role initialization, default metrics will be enabled and the global label
'alias'
will be set. Note that'alias'
label value is set by instanceconfiguration option <cartridge-cfg>
alias
orinstance_name
(since 0.6.1).If you need to use the functionality of any metrics package, you may get it as a Cartridge service and use it like a regular package after
require
:local cartridge = require('cartridge') local metrics = cartridge.service_get('metrics')
To view metrics via API endpoints, use the following configuration (to learn more about Cartridge configuration, see this):
metrics: export: - path: '/path_for_json_metrics' format: 'json' - path: '/path_for_prometheus_metrics' format: 'prometheus'
OR
Use
set_export
:NOTE that
set_export
has lower priority than clusterwide config and won't work if metrics config is present.metrics.set_export({ { path = '/path_for_json_metrics', format = 'json' }, { path = '/path_for_prometheus_metrics', format = 'prometheus' } })
The metrics will be available on the path specified in
path
in the format specified informat
.You can add several entry points of the same format by different paths, like this:
metrics: export: - path: '/path_for_json_metrics' format: 'json' - path: '/another_path_for_json_metrics' format: 'json'