Go Микросервисы, не выставляющие метрики - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в 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
    }
  ..........
...