model/modeljson/metricset.pb.json.go (45 lines of code) (raw):
// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package modeljson
import (
modeljson "github.com/elastic/apm-data/model/modeljson/internal"
"github.com/elastic/apm-data/model/modelpb"
)
var metricTypeText = map[modelpb.MetricType]string{
modelpb.MetricType_METRIC_TYPE_GAUGE: "gauge",
modelpb.MetricType_METRIC_TYPE_COUNTER: "counter",
modelpb.MetricType_METRIC_TYPE_HISTOGRAM: "histogram",
modelpb.MetricType_METRIC_TYPE_SUMMARY: "summary",
}
func MetricsetModelJSON(me *modelpb.Metricset, out *modeljson.Metricset) {
var samples []modeljson.MetricsetSample
if n := len(me.Samples); n > 0 {
samples = make([]modeljson.MetricsetSample, n)
for i, sample := range me.Samples {
if sample != nil {
sampleJson := modeljson.MetricsetSample{
Name: sample.Name,
Type: metricTypeText[sample.Type],
Unit: sample.Unit,
Value: sample.Value,
}
if sample.Histogram != nil {
sampleJson.Histogram = modeljson.Histogram{
Values: sample.Histogram.Values,
Counts: sample.Histogram.Counts,
}
}
if sample.Summary != nil {
sampleJson.Summary = modeljson.SummaryMetric{
Count: sample.Summary.Count,
Sum: sample.Summary.Sum,
}
}
samples[i] = sampleJson
}
}
}
*out = modeljson.Metricset{
Name: me.Name,
Interval: me.Interval,
Samples: samples,
}
}