package agent
import (
"github.com/go-kit/log"
"github.com/grafana/agent/pkg/integrations/v2"
"github.com/grafana/agent/pkg/integrations/v2/common"
"github.com/grafana/agent/pkg/integrations/v2/metricsutils"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
type Config struct {
Common common.MetricsConfig `yaml:",inline"`
}
func (c *Config) Name() string { return "agent" }
func (c *Config) ApplyDefaults(globals integrations.Globals) error {
c.Common.ApplyDefaults(globals.SubsystemOpts.Metrics.Autoscrape)
if id, err := c.Identifier(globals); err == nil {
c.Common.InstanceKey = &id
}
return nil
}
func (c *Config) Identifier(globals integrations.Globals) (string, error) {
if c.Common.InstanceKey != nil {
return *c.Common.InstanceKey, nil
}
return globals.AgentIdentifier, nil
}
func (c *Config) NewIntegration(l log.Logger, globals integrations.Globals) (integrations.Integration, error) {
return metricsutils.NewMetricsHandlerIntegration(l, c, c.Common, globals, promhttp.Handler())
}
func init() {
integrations.Register(&Config{}, integrations.TypeSingleton)
}