7 stdprometheus "github.com/prometheus/client_golang/prometheus"
8 "github.com/prometheus/client_golang/prometheus/promhttp"
10 "github.com/go-kit/kit/log"
11 kitprometheus "github.com/go-kit/kit/metrics/prometheus"
12 httptransport "github.com/go-kit/kit/transport/http"
16 logger := log.NewLogfmtLogger(os.Stderr)
18 fieldKeys := []string{"method", "error"}
19 requestCount := kitprometheus.NewCounterFrom(stdprometheus.CounterOpts{
20 Namespace: "my_group",
21 Subsystem: "string_service",
22 Name: "request_count",
23 Help: "Number of requests received.",
25 requestLatency := kitprometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
26 Namespace: "my_group",
27 Subsystem: "string_service",
28 Name: "request_latency_microseconds",
29 Help: "Total duration of requests in microseconds.",
31 countResult := kitprometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
32 Namespace: "my_group",
33 Subsystem: "string_service",
35 Help: "The result of each count method.",
36 }, []string{}) // no fields here
40 svc = loggingMiddleware{logger, svc}
41 svc = instrumentingMiddleware{requestCount, requestLatency, countResult, svc}
43 uppercaseHandler := httptransport.NewServer(
44 makeUppercaseEndpoint(svc),
45 decodeUppercaseRequest,
49 countHandler := httptransport.NewServer(
50 makeCountEndpoint(svc),
55 http.Handle("/uppercase", uppercaseHandler)
56 http.Handle("/count", countHandler)
57 http.Handle("/metrics", promhttp.Handler())
58 logger.Log("msg", "HTTP", "addr", ":8080")
59 logger.Log("err", http.ListenAndServe(":8080", nil))