func()

in internal/beatcmd/beat.go [494:555]


func (b *Beat) registerStatsMetrics() {
	libbeatRegistry := monitoring.Default.GetRegistry("libbeat")
	monitoring.NewFunc(libbeatRegistry, "output", func(_ monitoring.Mode, v monitoring.Visitor) {
		var rm metricdata.ResourceMetrics
		if err := b.metricReader.Collect(context.Background(), &rm); err != nil {
			return
		}
		v.OnRegistryStart()
		defer v.OnRegistryFinished()
		for _, sm := range rm.ScopeMetrics {
			switch {
			case sm.Scope.Name == "github.com/elastic/go-docappender":
				monitoring.ReportString(v, "type", "elasticsearch")
				addDocappenderLibbeatOutputMetrics(context.Background(), v, sm)
			}
		}
	})
	monitoring.NewFunc(libbeatRegistry, "pipeline", func(_ monitoring.Mode, v monitoring.Visitor) {
		var rm metricdata.ResourceMetrics
		if err := b.metricReader.Collect(context.Background(), &rm); err != nil {
			return
		}
		v.OnRegistryStart()
		defer v.OnRegistryFinished()
		for _, sm := range rm.ScopeMetrics {
			switch {
			case sm.Scope.Name == "github.com/elastic/go-docappender":
				addDocappenderLibbeatPipelineMetrics(context.Background(), v, sm)
			}
		}
	})
	monitoring.NewFunc(monitoring.Default, "output.elasticsearch", func(_ monitoring.Mode, v monitoring.Visitor) {
		var rm metricdata.ResourceMetrics
		if err := b.metricReader.Collect(context.Background(), &rm); err != nil {
			return
		}
		v.OnRegistryStart()
		defer v.OnRegistryFinished()
		for _, sm := range rm.ScopeMetrics {
			switch {
			case sm.Scope.Name == "github.com/elastic/go-docappender":
				addDocappenderOutputElasticsearchMetrics(context.Background(), v, sm)
			}
		}
	})
	monitoring.NewFunc(monitoring.Default, "apm-server", func(_ monitoring.Mode, v monitoring.Visitor) {
		var rm metricdata.ResourceMetrics
		if err := b.metricReader.Collect(context.Background(), &rm); err != nil {
			return
		}
		v.OnRegistryStart()
		defer v.OnRegistryFinished()
		for _, sm := range rm.ScopeMetrics {
			switch {
			case strings.HasPrefix(sm.Scope.Name, "github.com/elastic/apm-server"):
				// All simple scalar metrics that begin with the name "apm-server."
				// in github.com/elastic/apm-server/... scopes are mapped directly.
				addAPMServerMetrics(v, sm)
			}
		}
	})
}