From ced9a0e06636fc9166dd1456bdd0304d641ad8b5 Mon Sep 17 00:00:00 2001 From: Edward Welch Date: Tue, 17 Sep 2024 17:32:37 +0000 Subject: [PATCH 1/2] add structured metadata to the promtail push API Signed-off-by: Edward Welch --- clients/pkg/promtail/targets/lokipush/pushtarget.go | 3 ++- .../pkg/promtail/targets/lokipush/pushtarget_test.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/clients/pkg/promtail/targets/lokipush/pushtarget.go b/clients/pkg/promtail/targets/lokipush/pushtarget.go index 63630c6e5ac2..1ec021c0b28a 100644 --- a/clients/pkg/promtail/targets/lokipush/pushtarget.go +++ b/clients/pkg/promtail/targets/lokipush/pushtarget.go @@ -153,7 +153,8 @@ func (t *PushTarget) handleLoki(w http.ResponseWriter, r *http.Request) { e := api.Entry{ Labels: filtered.Clone(), Entry: logproto.Entry{ - Line: entry.Line, + Line: entry.Line, + StructuredMetadata: entry.StructuredMetadata, }, } if t.config.KeepTimestamp { diff --git a/clients/pkg/promtail/targets/lokipush/pushtarget_test.go b/clients/pkg/promtail/targets/lokipush/pushtarget_test.go index 3fe48b599a5e..5ddc5cef930f 100644 --- a/clients/pkg/promtail/targets/lokipush/pushtarget_test.go +++ b/clients/pkg/promtail/targets/lokipush/pushtarget_test.go @@ -15,6 +15,7 @@ import ( "github.com/go-kit/log" "github.com/grafana/dskit/flagext" "github.com/grafana/dskit/server" + "github.com/grafana/loki/pkg/push" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/relabel" @@ -101,6 +102,10 @@ func TestLokiPushTarget(t *testing.T) { Entry: logproto.Entry{ Timestamp: time.Unix(int64(i), 0), Line: "line" + strconv.Itoa(i), + StructuredMetadata: push.LabelsAdapter{ + {Name: "i", Value: strconv.Itoa(i)}, + {Name: "anotherMetaData", Value: "val"}, + }, }, } } @@ -123,6 +128,13 @@ func TestLokiPushTarget(t *testing.T) { // Spot check the first value in the result to make sure relabel rules were applied properly require.Equal(t, expectedLabels, eh.Received()[0].Labels) + expectedStructuredMetadata := push.LabelsAdapter{ + {Name: "i", Value: strconv.Itoa(0)}, + {Name: "anotherMetaData", Value: "val"}, + } + // Spot check the first value in the result to make sure structured metadata was received properly + require.Equal(t, expectedStructuredMetadata, eh.Received()[0].StructuredMetadata) + // With keep timestamp enabled, verify timestamp require.Equal(t, time.Unix(99, 0).Unix(), eh.Received()[99].Timestamp.Unix()) From da883a51eb0d365ba26806236891060abc12dd30 Mon Sep 17 00:00:00 2001 From: Edward Welch Date: Tue, 17 Sep 2024 17:50:24 +0000 Subject: [PATCH 2/2] lint Signed-off-by: Edward Welch --- clients/pkg/promtail/targets/lokipush/pushtarget_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clients/pkg/promtail/targets/lokipush/pushtarget_test.go b/clients/pkg/promtail/targets/lokipush/pushtarget_test.go index 5ddc5cef930f..d94a34eca397 100644 --- a/clients/pkg/promtail/targets/lokipush/pushtarget_test.go +++ b/clients/pkg/promtail/targets/lokipush/pushtarget_test.go @@ -15,12 +15,13 @@ import ( "github.com/go-kit/log" "github.com/grafana/dskit/flagext" "github.com/grafana/dskit/server" - "github.com/grafana/loki/pkg/push" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/relabel" "github.com/stretchr/testify/require" + "github.com/grafana/loki/pkg/push" + "github.com/grafana/loki/v3/clients/pkg/promtail/api" "github.com/grafana/loki/v3/clients/pkg/promtail/client" "github.com/grafana/loki/v3/clients/pkg/promtail/client/fake"