From 7575f5c501c8860da97d31969dfa8e72d50fec14 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Thu, 21 Dec 2023 23:05:41 +0200 Subject: [PATCH] lib/protoparser/datadogv2: take into account source_type_name field, since it contains useful value such as kubernetes, docker, system, etc. --- app/vmagent/datadogv2/request_handler.go | 6 ++++++ app/vminsert/datadogv2/request_handler.go | 3 +++ lib/protoparser/datadogv2/parser.go | 9 +++++---- lib/protoparser/datadogv2/parser_test.go | 2 ++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/vmagent/datadogv2/request_handler.go b/app/vmagent/datadogv2/request_handler.go index 00502c1749..917df7efcb 100644 --- a/app/vmagent/datadogv2/request_handler.go +++ b/app/vmagent/datadogv2/request_handler.go @@ -58,6 +58,12 @@ func insertRows(at *auth.Token, series []datadogv2.Series, extraLabels []prompbm Value: rs.Name, }) } + if ss.SourceTypeName != "" { + labels = append(labels, prompbmarshal.Label{ + Name: "source_type_name", + Value: ss.SourceTypeName, + }) + } for _, tag := range ss.Tags { name, value := datadogutils.SplitTag(tag) if name == "host" { diff --git a/app/vminsert/datadogv2/request_handler.go b/app/vminsert/datadogv2/request_handler.go index 80449b47bb..4523d463ac 100644 --- a/app/vminsert/datadogv2/request_handler.go +++ b/app/vminsert/datadogv2/request_handler.go @@ -59,6 +59,9 @@ func insertRows(series []datadogv2.Series, extraLabels []prompbmarshal.Label) er } ctx.AddLabel(name, value) } + if ss.SourceTypeName != "" { + ctx.AddLabel("source_type_name", ss.SourceTypeName) + } for j := range extraLabels { label := &extraLabels[j] ctx.AddLabel(label.Name, label.Value) diff --git a/lib/protoparser/datadogv2/parser.go b/lib/protoparser/datadogv2/parser.go index 1f9b6e2f6f..55b57b007a 100644 --- a/lib/protoparser/datadogv2/parser.go +++ b/lib/protoparser/datadogv2/parser.go @@ -76,11 +76,10 @@ type Series struct { Metric string `json:"metric"` // Points points for the given metric - Points []Point `json:"points"` - Resources []Resource `json:"resources"` + Points []Point `json:"points"` - // Do not decode SourceTypeName, since it isn't used by VictoriaMetrics - // SourceTypeName string `json:"source_type_name"` + Resources []Resource `json:"resources"` + SourceTypeName string `json:"source_type_name"` Tags []string @@ -106,6 +105,8 @@ func (s *Series) reset() { } s.Resources = resources[:0] + s.SourceTypeName = "" + tags := s.Tags for i := range tags { tags[i] = "" diff --git a/lib/protoparser/datadogv2/parser_test.go b/lib/protoparser/datadogv2/parser_test.go index c63accd0ba..d8ddca4661 100644 --- a/lib/protoparser/datadogv2/parser_test.go +++ b/lib/protoparser/datadogv2/parser_test.go @@ -50,6 +50,7 @@ func TestRequestUnmarshalJSONSuccess(t *testing.T) { "type": "host" } ], + "source_type_name": "kubernetes", "tags": ["environment:test"] } ] @@ -69,6 +70,7 @@ func TestRequestUnmarshalJSONSuccess(t *testing.T) { Type: "host", }, }, + SourceTypeName: "kubernetes", Tags: []string{ "environment:test", },