Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new utility CollectorFunc for simple Collector implementations #1701

Open
jzelinskie opened this issue Dec 17, 2024 · 0 comments
Open

Add new utility CollectorFunc for simple Collector implementations #1701

jzelinskie opened this issue Dec 17, 2024 · 0 comments

Comments

@jzelinskie
Copy link

I've used this helper in a few places and wondered if there's interest upstream. Basically, I'm applying a similar pattern to http.Handler/http.HandlerFunc so that you only need to implement one function to implement Collector:

import "github.com/prometheus/client_golang/prometheus"

var _ prometheus.Collector = (CollectorFunc)(nil)

// CollectorFunc is a convenient way to implement a Prometheus Collector
// without interface boilerplate.
//
// This implementation relies on prometheus.DescribeByCollect; familiarize
// yourself with that documentation before using.
type CollectorFunc func(ch chan<- prometheus.Metric)

func (c CollectorFunc) Collect(ch chan<- prometheus.Metric) { c(ch) }
func (c CollectorFunc) Describe(ch chan<- *prometheus.Desc) { prometheus.DescribeByCollect(c, ch) }
@dosubot dosubot bot added the enhancement label Dec 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant