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>