Несколько конечных точек для Prometheus in Go
В настоящее время я работаю над программой, написанной на Go (golang)
это контролируется Прометеем.
Теперь программа должна обслуживать две конечные точки /metrics
а также /service
, Когда прометей на Прометея /metrics
, он должен выставлять свои собственные метрики (например, сделанные запросы, задержка запроса, ...) и при проверке на /service
, он должен запросить API, получить метрики оттуда и выставить их Прометею.
Для первой части я создаю, например, счетчик через
requestCount := kitprometheus.NewCounterFrom(stdprometheus.CounterOpts{
Namespace: "SERVICE",
Subsystem: "service_metrics",
Name: "request_count",
Help: "Number of requests received.",
}, fieldKeys)
и обслуживать вещи через:
http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8090", nil)
для /service
часть, я запрашиваю API, извлекаю значение и обновляю другой датчик с помощью Gauge.Set(value)
- Как мне выставить этот последний датчик на другой конечной точке, не запуская другой сервер (другой порт)?
- Нужно ли создавать свой собственный коллектор (у меня нет пользовательских метрик, так что нет, верно?)?
0 ответов
Ты можешь использовать prometheus.NewRegistry
создать пользовательский коллектор и выставить его на нужную конечную точку, используя promhttp.HandlerFor
,
var (
// custom collector
reg = prometheus.NewRegistry()
// some metrics
myGauge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "gauge_name",
Help: "guage_help",
},
[]string{"l"},
)
)
func init() {
// register metrics to my collector
reg.MustRegister(myGauge)
}
func main() {
// instrument
myGauge.WithLabelValues("l").Set(123)
// expose endpoint
http.Handle("/service", promhttp.HandlerFor(reg, promhttp.HandlerOpts{}))
}