mdatagen: support setting telemetry level in telemetry builder (#10234)
This allows components to set the minimum level needed for them to produce telemetry. By default, this is set to `configtelemetryLevelBasic`. If the telemetry level is below that minimum level, then the noop meter is used for metrics. --------- Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com>
This commit is contained in:
parent
c7c3401f39
commit
52a9520fdb
|
|
@ -0,0 +1,25 @@
|
|||
# Use this changelog template to create an entry for release notes.
|
||||
|
||||
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
|
||||
change_type: enhancement
|
||||
|
||||
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
|
||||
component: mdatagen
|
||||
|
||||
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
|
||||
note: support using telemetry level in telemetry builder
|
||||
|
||||
# One or more tracking issues or pull requests related to the change
|
||||
issues: [10234]
|
||||
|
||||
# (Optional) One or more lines of additional information to render under the primary note.
|
||||
# These lines will be padded with 2 spaces and then inserted directly into the document.
|
||||
# Use pipe (|) for multiline entries.
|
||||
subtext: This allows components to set the minimum level needed for them to produce telemetry. By default, this is set to configtelemetry.LevelBasic. If the telemetry level is below that minimum level, then the noop meter is used for metrics.
|
||||
|
||||
# Optional: The change log or logs in which this entry should be included.
|
||||
# e.g. '[user]' or '[user, api]'
|
||||
# Include 'user' if the change is relevant to end users.
|
||||
# Include 'api' if there is a change to a library API.
|
||||
# Default: '[user]'
|
||||
change_logs: []
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Use this changelog template to create an entry for release notes.
|
||||
|
||||
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
|
||||
change_type: bug_fix
|
||||
|
||||
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
|
||||
component: batchprocessor
|
||||
|
||||
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
|
||||
note: respect telemetry level for all metrics
|
||||
|
||||
# One or more tracking issues or pull requests related to the change
|
||||
issues: [10234]
|
||||
|
||||
# (Optional) One or more lines of additional information to render under the primary note.
|
||||
# These lines will be padded with 2 spaces and then inserted directly into the document.
|
||||
# Use pipe (|) for multiline entries.
|
||||
subtext:
|
||||
|
||||
# Optional: The change log or logs in which this entry should be included.
|
||||
# e.g. '[user]' or '[user, api]'
|
||||
# Include 'user' if the change is relevant to end users.
|
||||
# Include 'api' if there is a change to a library API.
|
||||
# Default: '[user]'
|
||||
change_logs: []
|
||||
|
|
@ -6,6 +6,7 @@ require (
|
|||
github.com/google/go-cmp v0.6.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
go.opentelemetry.io/collector/component v0.101.0
|
||||
go.opentelemetry.io/collector/config/configtelemetry v0.101.0
|
||||
go.opentelemetry.io/collector/confmap v0.101.0
|
||||
go.opentelemetry.io/collector/confmap/provider/fileprovider v0.101.0
|
||||
go.opentelemetry.io/collector/consumer v0.101.0
|
||||
|
|
@ -43,7 +44,6 @@ require (
|
|||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.53.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.0 // indirect
|
||||
go.opentelemetry.io/collector/config/configtelemetry v0.101.0 // indirect
|
||||
go.opentelemetry.io/otel v1.27.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.49.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.27.0 // indirect
|
||||
|
|
|
|||
|
|
@ -7,9 +7,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -27,11 +29,19 @@ type TelemetryBuilder struct {
|
|||
ProcessRuntimeTotalAllocBytes metric.Int64ObservableCounter
|
||||
observeProcessRuntimeTotalAllocBytes func() int64
|
||||
RequestDuration metric.Float64Histogram
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// WithProcessRuntimeTotalAllocBytesCallback sets callback for observable ProcessRuntimeTotalAllocBytes metric.
|
||||
func WithProcessRuntimeTotalAllocBytesCallback(cb func() int64) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
|
|
@ -42,12 +52,19 @@ func WithProcessRuntimeTotalAllocBytesCallback(cb func() int64) telemetryBuilder
|
|||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelBasic {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.BatchSizeTriggerSend, err = meter.Int64Counter(
|
||||
"batch_size_trigger_send",
|
||||
metric.WithDescription("Number of times the batch was sent due to a size trigger"),
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
"go.opentelemetry.io/collector/confmap"
|
||||
"go.opentelemetry.io/collector/confmap/confmaptest"
|
||||
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
|
||||
|
|
@ -227,6 +228,7 @@ type tests struct {
|
|||
}
|
||||
|
||||
type telemetry struct {
|
||||
Level configtelemetry.Level `mapstructure:"level"`
|
||||
Metrics map[metricName]metric `mapstructure:"metrics"`
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -538,9 +538,12 @@ func TestGenerateTelemetryMetadata(t *testing.T) {
|
|||
package metadata
|
||||
|
||||
import (
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -569,9 +572,12 @@ func Tracer(settings component.TelemetrySettings) trace.Tracer {
|
|||
package metadata
|
||||
|
||||
import (
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
|
|||
|
|
@ -130,6 +130,8 @@ tests:
|
|||
# Optional: map of metric names with the key being the metric name and value
|
||||
# being described below.
|
||||
telemetry:
|
||||
# Optional: level allows components to specify the minimum telemetry level for metrics to be produced. defaults to basic if not set.
|
||||
level: string
|
||||
metrics:
|
||||
<metric.name>:
|
||||
# Required: whether the metric is collected by default.
|
||||
|
|
|
|||
|
|
@ -8,9 +8,12 @@ import (
|
|||
"errors"
|
||||
{{- end }}
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -31,11 +34,19 @@ type TelemetryBuilder struct {
|
|||
observe{{ $name.Render }} func() {{ $metric.Data.BasicType }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
{{- range $name, $metric := .Telemetry.Metrics }}
|
||||
{{ if $metric.Data.Async -}}
|
||||
// With{{ $name.Render }}Callback sets callback for observable {{ $name.Render }} metric.
|
||||
|
|
@ -50,12 +61,20 @@ func With{{ $name.Render }}Callback(cb func() {{ $metric.Data.BasicType }}) tele
|
|||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.Level{{ casesTitle .Telemetry.Level.String }} {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
|
||||
{{- range $name, $metric := .Telemetry.Metrics }}
|
||||
builder.{{ $name.Render }}, err = meter.{{ $metric.Data.Instrument }}(
|
||||
"{{ $name }}",
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -31,20 +33,35 @@ type TelemetryBuilder struct {
|
|||
ExporterSentLogRecords metric.Int64Counter
|
||||
ExporterSentMetricPoints metric.Int64Counter
|
||||
ExporterSentSpans metric.Int64Counter
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelBasic {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.ExporterEnqueueFailedLogRecords, err = meter.Int64Counter(
|
||||
"exporter_enqueue_failed_log_records",
|
||||
metric.WithDescription("Number of log records failed to be added to the sending queue."),
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -26,20 +28,35 @@ type TelemetryBuilder struct {
|
|||
ProcessorBatchBatchSendSizeBytes metric.Int64Histogram
|
||||
ProcessorBatchBatchSizeTriggerSend metric.Int64Counter
|
||||
ProcessorBatchTimeoutTriggerSend metric.Int64Counter
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelNormal {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.ProcessorBatchBatchSendSize, err = meter.Int64Histogram(
|
||||
"processor_batch_batch_send_size",
|
||||
metric.WithDescription("Number of units in the batch"),
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ status:
|
|||
tests:
|
||||
|
||||
telemetry:
|
||||
level: normal
|
||||
metrics:
|
||||
processor_batch_batch_size_trigger_send:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ func (bpt *batchProcessorTelemetry) createOtelMetrics(set component.TelemetrySet
|
|||
meter = noopmetric.Meter{}
|
||||
}
|
||||
|
||||
bpt.telemetryBuilder, err = metadata.NewTelemetryBuilder(set)
|
||||
bpt.telemetryBuilder, err = metadata.NewTelemetryBuilder(set, metadata.WithLevel(bpt.level))
|
||||
errors = multierr.Append(errors, err)
|
||||
|
||||
bpt.batchMetadataCardinality, err = meter.Int64ObservableUpDownCounter(
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -31,20 +33,35 @@ type TelemetryBuilder struct {
|
|||
ProcessorRefusedLogRecords metric.Int64Counter
|
||||
ProcessorRefusedMetricPoints metric.Int64Counter
|
||||
ProcessorRefusedSpans metric.Int64Counter
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelBasic {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.ProcessorAcceptedLogRecords, err = meter.Int64Counter(
|
||||
"processor_accepted_log_records",
|
||||
metric.WithDescription("Number of log records successfully pushed into the next component in the pipeline."),
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -28,20 +30,35 @@ type TelemetryBuilder struct {
|
|||
ReceiverRefusedLogRecords metric.Int64Counter
|
||||
ReceiverRefusedMetricPoints metric.Int64Counter
|
||||
ReceiverRefusedSpans metric.Int64Counter
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelBasic {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.ReceiverAcceptedLogRecords, err = meter.Int64Counter(
|
||||
"receiver_accepted_log_records",
|
||||
metric.WithDescription("Number of log records successfully pushed into the pipeline."),
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ import (
|
|||
"errors"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"go.opentelemetry.io/collector/component"
|
||||
"go.opentelemetry.io/collector/config/configtelemetry"
|
||||
)
|
||||
|
||||
func Meter(settings component.TelemetrySettings) metric.Meter {
|
||||
|
|
@ -24,20 +26,35 @@ func Tracer(settings component.TelemetrySettings) trace.Tracer {
|
|||
type TelemetryBuilder struct {
|
||||
ScraperErroredMetricPoints metric.Int64Counter
|
||||
ScraperScrapedMetricPoints metric.Int64Counter
|
||||
level configtelemetry.Level
|
||||
}
|
||||
|
||||
// telemetryBuilderOption applies changes to default builder.
|
||||
type telemetryBuilderOption func(*TelemetryBuilder)
|
||||
|
||||
// WithLevel sets the current telemetry level for the component.
|
||||
func WithLevel(lvl configtelemetry.Level) telemetryBuilderOption {
|
||||
return func(builder *TelemetryBuilder) {
|
||||
builder.level = lvl
|
||||
}
|
||||
}
|
||||
|
||||
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
|
||||
// for a component
|
||||
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...telemetryBuilderOption) (*TelemetryBuilder, error) {
|
||||
builder := TelemetryBuilder{}
|
||||
builder := TelemetryBuilder{level: configtelemetry.LevelBasic}
|
||||
for _, op := range options {
|
||||
op(&builder)
|
||||
}
|
||||
var err, errs error
|
||||
meter := Meter(settings)
|
||||
var (
|
||||
err, errs error
|
||||
meter metric.Meter
|
||||
)
|
||||
if builder.level >= configtelemetry.LevelBasic {
|
||||
meter = Meter(settings)
|
||||
} else {
|
||||
meter = noop.Meter{}
|
||||
}
|
||||
builder.ScraperErroredMetricPoints, err = meter.Int64Counter(
|
||||
"scraper_errored_metric_points",
|
||||
metric.WithDescription("Number of metric points that were unable to be scraped."),
|
||||
|
|
|
|||
Loading…
Reference in New Issue