Skip to content
Merged
Show file tree
Hide file tree
Changes from 45 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
5616c4e
add incremental_to_absolute
GreyLilac09 Jul 14, 2025
9c6e6dc
fix docs
GreyLilac09 Jul 14, 2025
239f7f3
fix tpos
GreyLilac09 Jul 14, 2025
284d9db
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Jul 15, 2025
0d6c9f1
use sync
GreyLilac09 Jul 15, 2025
9d55415
fix extra aggregate
GreyLilac09 Jul 16, 2025
8dedf1c
remove interval_ms
GreyLilac09 Jul 16, 2025
0ee9cb1
address comments
GreyLilac09 Jul 16, 2025
3cc9d8b
Merge branch 'master' into greylilac09/add-incremental-to-absolute
thomasqueirozb Jul 18, 2025
b1a18aa
use lru cache
GreyLilac09 Jul 24, 2025
0761542
use max_bytes or max_events
GreyLilac09 Jul 24, 2025
7c6fa3e
add debug print
GreyLilac09 Jul 24, 2025
bbe41f4
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Jul 24, 2025
5596b9c
Merge branch 'greylilac09/add-incremental-to-absolute' of github.com:…
GreyLilac09 Jul 24, 2025
07db954
remove debug print
GreyLilac09 Jul 24, 2025
a1ce197
use original cache impl
GreyLilac09 Jul 25, 2025
51d959a
restore original formatting
GreyLilac09 Jul 25, 2025
00c2388
use lrucache
GreyLilac09 Jul 26, 2025
c8f73d1
make some optimizations and fix clippy
GreyLilac09 Jul 26, 2025
f832a4e
fix incr_to_absolute and absolute_to_incr
GreyLilac09 Jul 26, 2025
7c692d5
fix
GreyLilac09 Jul 26, 2025
72f86a0
add overhead
GreyLilac09 Jul 29, 2025
3cc49f1
simplify free_items
GreyLilac09 Jul 31, 2025
33680bd
Update lib/vector-core/src/event/metric/data.rs
GreyLilac09 Aug 1, 2025
9a94c3f
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 4, 2025
72df8b0
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 5, 2025
024ae54
Make whitespace consistent
thomasqueirozb Aug 6, 2025
00b3714
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 6, 2025
dbf0297
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 6, 2025
7a9eea7
fix
GreyLilac09 Aug 6, 2025
a62402c
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 7, 2025
7ca83cb
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 7, 2025
1640d9d
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 7, 2025
9510c02
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 8, 2025
ff2ccd4
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 11, 2025
ca1d3a3
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 13, 2025
0e620a5
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 13, 2025
76595bc
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 15, 2025
8676451
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 19, 2025
8db2a10
fmt
GreyLilac09 Aug 19, 2025
f596006
add more examples
GreyLilac09 Aug 21, 2025
c8c743c
exclude cache overhead
GreyLilac09 Aug 21, 2025
0d9e9a2
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 22, 2025
59814cb
fix fmt
GreyLilac09 Aug 22, 2025
c1f7988
Merge remote-tracking branch 'origin/master' into greylilac09/add-inc…
pront Aug 26, 2025
1c07bee
add .
pront Aug 26, 2025
69ab4bc
Merge branch 'master' into greylilac09/add-incremental-to-absolute
GreyLilac09 Aug 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ itertools.workspace = true
k8s-openapi = { version = "0.22.0", default-features = false, features = ["v1_26"], optional = true }
kube = { version = "0.93.0", default-features = false, features = ["client", "openssl-tls", "runtime"], optional = true }
listenfd = { version = "1.0.2", default-features = false, optional = true }
lru = { version = "0.16.0", default-features = false, optional = true }
lru = { version = "0.16.0", default-features = false }
maxminddb = { version = "0.26.0", default-features = false, optional = true, features = ["simdutf8"] }
md-5 = { version = "0.10", default-features = false, optional = true }
mongodb = { version = "2.8.2", default-features = false, features = ["tokio-runtime"], optional = true }
Expand Down Expand Up @@ -711,6 +711,7 @@ transforms-logs = [
transforms-metrics = [
"transforms-aggregate",
"transforms-filter",
"transforms-incremental_to_absolute",
"transforms-log_to_metric",
"transforms-lua",
"transforms-metric_to_log",
Expand All @@ -723,6 +724,7 @@ transforms-aggregate = []
transforms-aws_ec2_metadata = ["dep:arc-swap"]
transforms-dedupe = ["transforms-impl-dedupe"]
transforms-filter = []
transforms-incremental_to_absolute = []
transforms-window = []
transforms-log_to_metric = []
transforms-lua = ["dep:mlua", "vector-lib/lua"]
Expand All @@ -737,7 +739,7 @@ transforms-throttle = ["dep:governor"]

# Implementations of transforms
transforms-impl-sample = []
transforms-impl-dedupe = ["dep:lru"]
transforms-impl-dedupe = []
transforms-impl-reduce = []

# Sinks
Expand Down Expand Up @@ -851,7 +853,7 @@ sinks-opentelemetry = ["sinks-http"]
sinks-papertrail = ["dep:syslog"]
sinks-prometheus = ["dep:base64", "dep:prost", "vector-lib/prometheus"]
sinks-postgres = ["dep:sqlx"]
sinks-pulsar = ["dep:apache-avro", "dep:pulsar", "dep:lru"]
sinks-pulsar = ["dep:apache-avro", "dep:pulsar"]
sinks-redis = ["dep:redis"]
sinks-sematext = ["sinks-elasticsearch", "sinks-influxdb"]
sinks-socket = ["sinks-utils-udp"]
Expand Down
6 changes: 6 additions & 0 deletions changelog.d/incremental_to_absolute_transform.feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Add a new `incremental_to_absolute` transform which converts incremental metrics to absolute metrics. This is useful for
use cases when sending metrics to a sink is lossy or you want to get a historical record of metrics, in which case
incremental metrics may be inaccurate since any gaps in metrics sent will result in an inaccurate reading of the ending
value.

authors: GreyLilac09
7 changes: 5 additions & 2 deletions lib/vector-core/src/event/metric/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,14 @@ impl MetricData {

/// Consumes this metric, returning it as an absolute metric.
///
/// If the metric was already absolute, nothing is changed.
/// The `interval_ms` is set to `None`. If the metric was already absolute, nothing else is changed.
#[must_use]
pub fn into_absolute(self) -> Self {
Self {
time: self.time,
time: MetricTime {
timestamp: self.time.timestamp,
interval_ms: None,
},
kind: MetricKind::Absolute,
value: self.value,
}
Expand Down
7 changes: 6 additions & 1 deletion src/sinks/util/buffer/metrics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,12 @@ impl Batch for MetricsBuffer {
} else {
let max_events = self.max_events;
self.metrics
.get_or_insert_with(|| MetricSet::with_capacity(max_events))
.get_or_insert_with(|| {
MetricSet::new(MetricSetSettings {
max_events: Some(max_events),
..Default::default()
})
})
.insert_update(item);
PushResult::Ok(self.num_items() >= self.max_events)
}
Expand Down
Loading
Loading