44 lines
1011 B
Go
44 lines
1011 B
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package scraper // import "go.opentelemetry.io/collector/scraper"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/collector/component"
|
|
"go.opentelemetry.io/collector/pdata/pmetric"
|
|
)
|
|
|
|
// Metrics is the base interface for metrics scrapers.
|
|
type Metrics interface {
|
|
component.Component
|
|
|
|
ScrapeMetrics(context.Context) (pmetric.Metrics, error)
|
|
}
|
|
|
|
// ScrapeMetricsFunc is a helper function that is similar to Metrics.ScrapeMetrics.
|
|
type ScrapeMetricsFunc ScrapeFunc[pmetric.Metrics]
|
|
|
|
func (sf ScrapeMetricsFunc) ScrapeMetrics(ctx context.Context) (pmetric.Metrics, error) {
|
|
return sf(ctx)
|
|
}
|
|
|
|
type metrics struct {
|
|
baseScraper
|
|
ScrapeMetricsFunc
|
|
}
|
|
|
|
// NewMetrics creates a new Metrics scraper.
|
|
func NewMetrics(scrape ScrapeMetricsFunc, options ...Option) (Metrics, error) {
|
|
if scrape == nil {
|
|
return nil, errNilFunc
|
|
}
|
|
bs := &metrics{
|
|
baseScraper: newBaseScraper(options),
|
|
ScrapeMetricsFunc: scrape,
|
|
}
|
|
|
|
return bs, nil
|
|
}
|