Skip to main content
Version: Next

measure

Replaces the input with metrics describing the input.

measure [real_time=bool, cumulative=bool]

Description

The measure operator yields metrics for each received batch of events or bytes using the following schema, respectively:

Events Metrics
type tenzir.metrics.events = record{
  timestamp: time,
  schema: string,
  schema_id: string,
  events: uint64,
}
Bytes Metrics
type tenzir.metrics.bytes = record{
  timestamp: time,
  bytes: uint64,
}

real_time = bool (optional)

Whether to emit metrics immediately with every batch, rather than buffering until the upstream operator stalls, i.e., is idle or waiting for further input.

The is especially useful when measure should emit data without latency.

cumulative = bool (optional)

Whether to emit running totals for the events and bytes fields rather than per-batch statistics.

Examples

Get the number of bytes read incrementally for a file

load_file "input.json"
measure
{timestamp: 2023-04-28T10:22:10.192322, bytes: 16384}
{timestamp: 2023-04-28T10:22:10.223612, bytes: 16384}
{timestamp: 2023-04-28T10:22:10.297169, bytes: 16384}
{timestamp: 2023-04-28T10:22:10.387172, bytes: 16384}
{timestamp: 2023-04-28T10:22:10.408171, bytes: 8232}

Get the number of events read incrementally from a file

load_file "eve.json"
read_suricata
measure
{
  timestamp: 2023-04-28T10:26:45.159885,
  events: 65536,
  schema: "suricata.dns",
  schema_id: "d49102998baae44a"
}
{
  timestamp: 2023-04-28T10:26:45.812321,
  events: 412,
  schema: "suricata.dns",
  schema_id: "d49102998baae44a"
}

Get the total number of events in a file, grouped by schema

load_file "eve.json"
read_suricata
measure
summarize schema, events=sum(events)
{schema: "suricata.dns", events: 65948}