NAME
Metrics::Any::Adapter::Routable
- configurable routing of reported metrics
SYNOPSIS
use Metrics::Any::Adapter 'Routable',
targets => [
[ "important", "Statsd" ],
[ "default", "Prometheus" ],
[ ["default", "debug"], "File", path => "metrics.log" ],
],
packages => {
"My::Application" => "important",
"Net::Async::HTTP" => "debug",
"IO::Async::*" => "debug", # wildcard matches
# anything else will be assigned "default"
};
DESCRIPTION
This Metrics::Any adapter type acts as a proxy for a set of multiple other adapters, allowing an application to configure which adapter (or adapters) to send particular metrics into.
Routing of metrics is done by a "category" name. Each reported metric is assigned into a category, which is a string. Each configured adapter declares an interest in one or more category names. Reported metrics are then routed only to those adapters which declared an interest in the category.
Primarily the category names are set by the packages
configuration argument. Additionally, this can be overridden by any individual metric when it is constructed by providing a category
parameter to the make_*
method which created it.
ARGUMENTS
The following additional arguments are recognised
targets
targets => [
[ $category, $type, ],
[ $category, $type, @args ],
[ [ @categories ], $type, @args ],
...
],
A reference to an array containing a list of targets. Each target consists of a category name (or reference array containing a list of categories), a type name, and an optional set of constructor arguments, all stored in its own array reference.
These targets will all be constructed and stored by the adapter.
packages
packages => {
$package => $category,
...
}
A reference to a hash associating a category name with a reporting package. Any metrics registered by the given package will be associated with the given category name.
A pattern can also be specified with a trailing ::*
wildcard; this will match any package name within the given namespace. Longer matches will take precedence over shorter ones.
Any reported metric that does not otherwise have a category configured will be assigned the category default
.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>