github.com/inspektor-gadget/inspektor-gadget@v0.28.1/pkg/operators/prometheus/view.go (about) 1 // Copyright 2023 The Inspektor Gadget authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package prometheus 16 17 import ( 18 sdkmetric "go.opentelemetry.io/otel/sdk/metric" 19 ) 20 21 // histogramViewFunc returns a view function for a histogram instrument. 22 // It allows using custom aggregation (e.g histogram buckets) for a given instrument. 23 func (p *Prometheus) histogramViewFunc() sdkmetric.View { 24 return func(instrument sdkmetric.Instrument) (sdkmetric.Stream, bool) { 25 if instrument.Kind != sdkmetric.InstrumentKindHistogram { 26 return sdkmetric.Stream{}, false 27 } 28 bc, ok := p.bucketConfigs[instrument.Name] 29 if !ok { 30 return sdkmetric.Stream{}, false 31 } 32 return sdkmetric.Stream{ 33 Name: instrument.Name, 34 Description: instrument.Description, 35 Unit: instrument.Unit, 36 Aggregation: sdkmetric.AggregationExplicitBucketHistogram{ 37 Boundaries: bc.buckets(), 38 }, 39 }, true 40 } 41 }