|
|
|
@ -3,15 +3,14 @@ package main |
|
|
|
|
import ( |
|
|
|
|
"context" |
|
|
|
|
"fmt" |
|
|
|
|
"log" |
|
|
|
|
|
|
|
|
|
"github.com/go-kratos/kratos/v2/middleware/metrics" |
|
|
|
|
prom "github.com/go-kratos/prometheus/metrics" |
|
|
|
|
"github.com/prometheus/client_golang/prometheus/promhttp" |
|
|
|
|
"log" |
|
|
|
|
|
|
|
|
|
"github.com/go-kratos/kratos/examples/helloworld/helloworld" |
|
|
|
|
"github.com/go-kratos/kratos/v2" |
|
|
|
|
"github.com/go-kratos/kratos/v2/errors" |
|
|
|
|
"github.com/go-kratos/kratos/v2/middleware/recovery" |
|
|
|
|
"github.com/go-kratos/kratos/v2/transport/grpc" |
|
|
|
|
"github.com/go-kratos/kratos/v2/transport/http" |
|
|
|
|
"github.com/prometheus/client_golang/prometheus" |
|
|
|
@ -26,14 +25,16 @@ var ( |
|
|
|
|
|
|
|
|
|
_metricSeconds = prometheus.NewHistogramVec(prometheus.HistogramOpts{ |
|
|
|
|
Namespace: "server", |
|
|
|
|
Name: "request_duration_millisecond", |
|
|
|
|
Subsystem: "requests", |
|
|
|
|
Name: "duration_ms", |
|
|
|
|
Help: "server requests duration(ms).", |
|
|
|
|
Buckets: []float64{5, 10, 25, 50, 100, 250, 500, 1000}, |
|
|
|
|
}, []string{"kind", "operation"}) |
|
|
|
|
|
|
|
|
|
_metricRequests = prometheus.NewCounterVec(prometheus.CounterOpts{ |
|
|
|
|
Namespace: "client", |
|
|
|
|
Name: "api_requests_total", |
|
|
|
|
Subsystem: "requests", |
|
|
|
|
Name: "code_total", |
|
|
|
|
Help: "The total number of processed requests", |
|
|
|
|
}, []string{"kind", "operation", "code", "reason"}) |
|
|
|
|
) |
|
|
|
@ -45,12 +46,6 @@ type server struct { |
|
|
|
|
|
|
|
|
|
// SayHello implements helloworld.GreeterServer
|
|
|
|
|
func (s *server) SayHello(ctx context.Context, in *helloworld.HelloRequest) (*helloworld.HelloReply, error) { |
|
|
|
|
if in.Name == "error" { |
|
|
|
|
return nil, errors.BadRequest("custom_error", fmt.Sprintf("invalid argument %s", in.Name)) |
|
|
|
|
} |
|
|
|
|
if in.Name == "panic" { |
|
|
|
|
panic("server panic") |
|
|
|
|
} |
|
|
|
|
return &helloworld.HelloReply{Message: fmt.Sprintf("Hello %+v", in.Name)}, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -59,16 +54,11 @@ func init() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func main() { |
|
|
|
|
s := &server{} |
|
|
|
|
|
|
|
|
|
grpcSrv := grpc.NewServer( |
|
|
|
|
grpc.Address(":9000"), |
|
|
|
|
grpc.Middleware( |
|
|
|
|
recovery.Recovery(), |
|
|
|
|
metrics.Server( |
|
|
|
|
metrics.WithSeconds( |
|
|
|
|
prom.NewHistogram(_metricSeconds), |
|
|
|
|
), |
|
|
|
|
metrics.WithSeconds(prom.NewHistogram(_metricSeconds)), |
|
|
|
|
metrics.WithRequests(prom.NewCounter(_metricRequests)), |
|
|
|
|
), |
|
|
|
|
), |
|
|
|
@ -76,18 +66,15 @@ func main() { |
|
|
|
|
httpSrv := http.NewServer( |
|
|
|
|
http.Address(":8000"), |
|
|
|
|
http.Middleware( |
|
|
|
|
recovery.Recovery(), |
|
|
|
|
metrics.Server( |
|
|
|
|
metrics.WithSeconds( |
|
|
|
|
prom.NewHistogram(_metricSeconds), |
|
|
|
|
), |
|
|
|
|
metrics.WithSeconds(prom.NewHistogram(_metricSeconds)), |
|
|
|
|
metrics.WithRequests(prom.NewCounter(_metricRequests)), |
|
|
|
|
), |
|
|
|
|
), |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
httpSrv.Handle("/metrics", promhttp.Handler()) |
|
|
|
|
|
|
|
|
|
s := &server{} |
|
|
|
|
helloworld.RegisterGreeterServer(grpcSrv, s) |
|
|
|
|
helloworld.RegisterGreeterHTTPServer(httpSrv, s) |
|
|
|
|
|
|
|
|
|