Skip to content

Commit 64bee69

Browse files
committed
prometheusremotewrite: Don't generate target_info if no metrics
Modify prometheusremotewrite.FromMetrics to not generate target_info if there are no metrics, as you can't detect the most recent timestamp. Currently, if there are no metrics, a target_info metric is generated with the Unix epoch for timestamp. Signed-off-by: Arve Knudsen <[email protected]>
1 parent c268b28 commit 64bee69

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: bug_fix
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
7+
component: prometheusremotewrite
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Modify prometheusremotewrite.FromMetrics to only generate target_info if there are metrics, as otherwise you can't deduce the timestamp.
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [32318]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: [user,api]

pkg/translator/prometheusremotewrite/helper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ func addCreatedTimeSeriesIfNeeded(
526526

527527
// addResourceTargetInfo converts the resource to the target info metric
528528
func addResourceTargetInfo(resource pcommon.Resource, settings Settings, timestamp pcommon.Timestamp, tsMap map[string]*prompb.TimeSeries) {
529-
if settings.DisableTargetInfo {
529+
if settings.DisableTargetInfo || timestamp == 0 {
530530
return
531531
}
532532
// Use resource attributes (other than those used for job+instance) as the

pkg/translator/prometheusremotewrite/helper_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,13 @@ func TestAddResourceTargetInfo(t *testing.T) {
622622
timestamp: testdata.TestMetricStartTimestamp,
623623
expected: map[string]*prompb.TimeSeries{},
624624
},
625+
{
626+
// If there's no timestamp, target_info shouldn't be generated, since we don't know when the write is from.
627+
desc: "with resource, with service attributes, without timestamp",
628+
resource: resourceWithServiceAttrs,
629+
timestamp: 0,
630+
expected: map[string]*prompb.TimeSeries{},
631+
},
625632
} {
626633
t.Run(tc.desc, func(t *testing.T) {
627634
tsMap := map[string]*prompb.TimeSeries{}

0 commit comments

Comments
 (0)