|
7 | 7 |
|
8 | 8 | "github.com/VictoriaMetrics/VictoriaMetrics/lib/flagutil" |
9 | 9 | "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" |
10 | | - "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/opentelemetry/pb" |
11 | 10 | "github.com/VictoriaMetrics/VictoriaMetrics/lib/protoparser/protoparserutil" |
12 | 11 | "github.com/VictoriaMetrics/metrics" |
13 | 12 |
|
@@ -76,80 +75,20 @@ var ( |
76 | 75 | ) |
77 | 76 |
|
78 | 77 | func pushProtobufRequest(data []byte, lmp insertutil.LogMessageProcessor, msgFields []string, useDefaultStreamFields bool) error { |
79 | | - var req pb.ExportLogsServiceRequest |
80 | | - if err := req.UnmarshalProtobuf(data); err != nil { |
81 | | - errorsTotal.Inc() |
82 | | - return fmt.Errorf("cannot unmarshal request from %d bytes: %w", len(data), err) |
83 | | - } |
84 | | - |
85 | | - var commonFields []logstorage.Field |
86 | | - for _, rl := range req.ResourceLogs { |
87 | | - commonFields = commonFields[:0] |
88 | | - commonFields = appendKeyValues(commonFields, rl.Resource.Attributes, "") |
89 | | - commonFieldsLen := len(commonFields) |
90 | | - for _, sc := range rl.ScopeLogs { |
91 | | - commonFields = pushFieldsFromScopeLogs(&sc, commonFields[:commonFieldsLen], lmp, msgFields, useDefaultStreamFields) |
92 | | - } |
93 | | - } |
94 | | - |
95 | | - return nil |
96 | | -} |
97 | | - |
98 | | -func pushFieldsFromScopeLogs(sc *pb.ScopeLogs, commonFields []logstorage.Field, lmp insertutil.LogMessageProcessor, msgFields []string, useDefaultStreamFields bool) []logstorage.Field { |
99 | | - fields := commonFields |
100 | | - for _, lr := range sc.LogRecords { |
101 | | - fields = fields[:len(commonFields)] |
102 | | - if lr.Body.KeyValueList != nil { |
103 | | - fields = appendKeyValues(fields, lr.Body.KeyValueList.Values, "") |
104 | | - logstorage.RenameField(fields[len(commonFields):], msgFields, "_msg") |
105 | | - } else { |
106 | | - fields = append(fields, logstorage.Field{ |
107 | | - Name: "_msg", |
108 | | - Value: lr.Body.FormatString(true), |
109 | | - }) |
110 | | - } |
111 | | - fields = appendKeyValues(fields, lr.Attributes, "") |
112 | | - if len(lr.TraceID) > 0 { |
113 | | - fields = append(fields, logstorage.Field{ |
114 | | - Name: "trace_id", |
115 | | - Value: lr.TraceID, |
116 | | - }) |
117 | | - } |
118 | | - if len(lr.SpanID) > 0 { |
119 | | - fields = append(fields, logstorage.Field{ |
120 | | - Name: "span_id", |
121 | | - Value: lr.SpanID, |
122 | | - }) |
123 | | - } |
124 | | - fields = append(fields, logstorage.Field{ |
125 | | - Name: "severity", |
126 | | - Value: lr.FormatSeverity(), |
127 | | - }) |
| 78 | + pushLogs := func(timestamp int64, fields []logstorage.Field, resourceFieldsLen int) { |
| 79 | + logstorage.RenameField(fields[resourceFieldsLen:], msgFields, "_msg") |
128 | 80 |
|
129 | 81 | var streamFields []logstorage.Field |
130 | 82 | if useDefaultStreamFields { |
131 | | - streamFields = commonFields |
| 83 | + streamFields = fields[:resourceFieldsLen] |
132 | 84 | } |
133 | | - lmp.AddRow(lr.ExtractTimestampNano(), fields, streamFields) |
134 | | - } |
135 | | - return fields |
136 | | -} |
137 | 85 |
|
138 | | -func appendKeyValues(fields []logstorage.Field, kvs []*pb.KeyValue, parentField string) []logstorage.Field { |
139 | | - for _, attr := range kvs { |
140 | | - fieldName := attr.Key |
141 | | - if parentField != "" { |
142 | | - fieldName = parentField + "." + fieldName |
143 | | - } |
| 86 | + lmp.AddRow(timestamp, fields, streamFields) |
| 87 | + } |
144 | 88 |
|
145 | | - if attr.Value.KeyValueList != nil { |
146 | | - fields = appendKeyValues(fields, attr.Value.KeyValueList.Values, fieldName) |
147 | | - } else { |
148 | | - fields = append(fields, logstorage.Field{ |
149 | | - Name: fieldName, |
150 | | - Value: attr.Value.FormatString(true), |
151 | | - }) |
152 | | - } |
| 89 | + if err := decodeLogsData(data, pushLogs); err != nil { |
| 90 | + errorsTotal.Inc() |
| 91 | + return fmt.Errorf("cannot decode LogsData request from %d bytes: %w", len(data), err) |
153 | 92 | } |
154 | | - return fields |
| 93 | + return nil |
155 | 94 | } |
0 commit comments