MCPcopy Create free account
hub / github.com/netdata/netdata / parse

Method parse

src/go/plugin/ibm.d/protocols/openmetrics/parser.go:18–54  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

16}
17
18func (p *seriesParser) parse(data []byte) (prometheus.Series, error) {
19 var series prometheus.Series
20 parser := textparse.NewPromParser(data, promLabels.NewSymbolTable())
21 var tmp promLabels.Labels
22
23 for {
24 entry, err := parser.Next()
25 if err != nil {
26 if err == io.EOF {
27 break
28 }
29 if entry == textparse.EntryInvalid {
30 // Skip invalid metric types and continue.
31 continue
32 }
33 return nil, fmt.Errorf("openmetrics parser: failed to parse metrics: %w", err)
34 }
35
36 if entry != textparse.EntrySeries {
37 continue
38 }
39
40 tmp = tmp[:0]
41 parser.Metric(&tmp)
42
43 if p.selector != nil && !p.selector.Matches(tmp) {
44 continue
45 }
46
47 _, _, value := parser.Series()
48 labels := append(promLabels.Labels(nil), tmp...)
49 series.Add(prometheus.SeriesSample{Labels: labels, Value: value})
50 }
51
52 series.Sort()
53 return series, nil
54}

Callers 1

FetchSeriesMethod · 0.95

Calls 6

AddMethod · 0.95
SortMethod · 0.95
NextMethod · 0.65
ErrorfMethod · 0.65
MatchesMethod · 0.65
LabelsMethod · 0.45

Tested by

no test coverage detected