Я новичок в Prometheus и go lang, и я пытаюсь научиться выставлять метрики из hotrod микро-сервисов Jaeger на localhost. Приложение написано на языке go и состоит из 4 микро-сервисов с именами frontend, customer, driver и route, работающих на портах 8080, 8081, 8082 и 8083 соответственно. В соответствии с документацией Prometheus go я могу раскрыть метрики определенного микросервиса, установив для него значение http.Handle ("/ metrics", promhttp.Handler ()) '. В настоящее время микросервис, называемый маршрутом, инструментирован (внутри server. go файл) и предоставляет метрики на локальном узле: 8083 / конечная точка метрики. Тем не менее, когда я пытался таким же образом обрабатывать другие три микросервиса, только метрики, предоставленные микросервисом «заказчика» на локальном хосте: 8081 / metrics, тогда как я не получаю никаких сообщений об ошибках для двух других микросервисов.
Может ли кто-нибудь подсказать, почему метрики не раскрываются и как я могу правильно настроить два других микросервиса (например, интерфейс и драйвер)?
Пример блокировки кода из служб / интерфейса / сервера. go (добавлены контрольно-измерительные приборы, но не показывается конечная точка метри c):
..........
func (s *Server) createServeMux() http.Handler {
mux := tracing.NewServeMux(s.tracer)
p := path.Join("/", s.basepath)
mux.Handle(p, http.StripPrefix(p, http.FileServer(s.assetFS)))
mux.Handle(path.Join(p, "/dispatch"), http.HandlerFunc(s.dispatch))
mux.Handle("/metrics", promhttp.Handler()) // Prometheus
return mux
}
..........