API updates for metrics framework.

- Removed default logging.  Now a function is available for the new
  $period_finished filter field to get the same behavior for logging
  named Metrics::write_log.

- Added index rollups for getting multiple metrics result values
  as the same time.
This commit is contained in:
Seth Hall 2012-12-18 01:08:59 -05:00
parent 69030fdff3
commit 69b7ce12d2
17 changed files with 304 additions and 162 deletions

View file

@ -19,11 +19,23 @@ redef Cluster::nodes = {
redef Log::default_rotation_interval = 0secs;
global n = 0;
event bro_init() &priority=5
{
Metrics::add_filter("test.metric",
[$every=3secs,
$measure=set(Metrics::SUM, Metrics::MIN, Metrics::MAX, Metrics::AVG, Metrics::STD_DEV, Metrics::VARIANCE)]);
$measure=set(Metrics::SUM, Metrics::MIN, Metrics::MAX, Metrics::AVG, Metrics::STD_DEV, Metrics::VARIANCE, Metrics::UNIQUE),
$period_finished(ts: time, metric_name: string, filter_name: string, data: Metrics::MetricTable) =
{
Metrics::write_log(ts, metric_name, filter_name, data);
if ( ++n == 3 )
{
terminate_communication();
terminate();
}
}
]);
}
event remote_connection_closed(p: event_peer)
@ -64,22 +76,10 @@ event ready_for_data()
@if ( Cluster::local_node_type() == Cluster::MANAGER )
global n = 0;
global peer_count = 0;
event Metrics::log_metrics(rec: Metrics::Info)
{
++n;
if ( n == 3 )
{
terminate_communication();
terminate();
}
}
event remote_connection_handshake_done(p: event_peer)
{
print p;
++peer_count;
if ( peer_count == 3 )
event ready_for_data();

View file

@ -6,7 +6,9 @@ event bro_init() &priority=5
Metrics::add_filter("test.metric",
[$name="foo-bar",
$every=3secs,
$measure=set(Metrics::SUM, Metrics::VARIANCE, Metrics::AVG, Metrics::MAX, Metrics::MIN, Metrics::STD_DEV)]);
$measure=set(Metrics::SUM, Metrics::VARIANCE, Metrics::AVG, Metrics::MAX, Metrics::MIN, Metrics::STD_DEV),
$period_finished=Metrics::write_log]);
Metrics::add_data("test.metric", [$host=1.2.3.4], [$num=5]);
Metrics::add_data("test.metric", [$host=1.2.3.4], [$num=22]);
Metrics::add_data("test.metric", [$host=1.2.3.4], [$num=94]);

View file

@ -26,8 +26,7 @@ event bro_init() &priority=5
$threshold_crossed(index: Metrics::Index, val: Metrics::ResultVal) = {
print "A test metric threshold was crossed!";
terminate();
}
]);
}]);
}
event remote_connection_closed(p: event_peer)

View file

@ -15,8 +15,7 @@ event bro_init() &priority=5
$threshold=5,
$threshold_crossed(index: Metrics::Index, val: Metrics::ResultVal) = {
print fmt("THRESHOLD: hit a threshold value at %.0f for %s", val$sum, Metrics::index2str(index));
},
$log=F]);
}]);
Metrics::add_filter("test.metric",
[$name="foobar2",
@ -25,8 +24,7 @@ event bro_init() &priority=5
$threshold_series=vector(3,6,800),
$threshold_crossed(index: Metrics::Index, val: Metrics::ResultVal) = {
print fmt("THRESHOLD_SERIES: hit a threshold series value at %.0f for %s", val$sum, Metrics::index2str(index));
},
$log=F]);
}]);
Metrics::add_filter("test.metric",
[$every=3secs,
$measure=set(Metrics::SUM),
@ -36,8 +34,7 @@ event bro_init() &priority=5
},
$threshold_crossed(index: Metrics::Index, val: Metrics::ResultVal) = {
print fmt("THRESHOLD_FUNC: hit a threshold function value at %.0f for %s", val$sum, Metrics::index2str(index));
},
$log=F]);
}]);
Metrics::add_data("test.metric", [$host=1.2.3.4], [$num=3]);
Metrics::add_data("test.metric", [$host=6.5.4.3], [$num=2]);