Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
2deb9d3df9 | |||
f071b4b145 |
26
handler.go
26
handler.go
@ -454,19 +454,19 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !slices.Contains(meter.DefaultSkipEndpoints, endpointName) {
|
if !slices.Contains(meter.DefaultSkipEndpoints, endpointName) {
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", endpointName).Inc()
|
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", endpointName, "server", "http").Inc()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
n := GetRspCode(ctx)
|
n := GetRspCode(ctx)
|
||||||
if n > 399 {
|
if n > 399 {
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", endpointName, "status", "success", "code", strconv.Itoa(n)).Inc()
|
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", endpointName, "server", "http", "status", "success", "code", strconv.Itoa(n)).Inc()
|
||||||
} else {
|
} else {
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", endpointName, "status", "failure", "code", strconv.Itoa(n)).Inc()
|
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", endpointName, "server", "http", "status", "failure", "code", strconv.Itoa(n)).Inc()
|
||||||
}
|
}
|
||||||
te := time.Since(ts)
|
te := time.Since(ts)
|
||||||
h.opts.Meter.Summary(semconv.ServerRequestLatencyMicroseconds, "endpoint", endpointName).Update(te.Seconds())
|
h.opts.Meter.Summary(semconv.ServerRequestLatencyMicroseconds, "endpoint", endpointName, "server", "http").Update(te.Seconds())
|
||||||
h.opts.Meter.Histogram(semconv.ServerRequestDurationSeconds, "endpoint", endpointName).Update(te.Seconds())
|
h.opts.Meter.Histogram(semconv.ServerRequestDurationSeconds, "endpoint", endpointName, "server", "http").Update(te.Seconds())
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", endpointName).Dec()
|
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", endpointName, "server", "http").Dec()
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,6 +480,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
tracer.WithSpanKind(tracer.SpanKindServer),
|
tracer.WithSpanKind(tracer.SpanKindServer),
|
||||||
tracer.WithSpanLabels(
|
tracer.WithSpanLabels(
|
||||||
"endpoint", r.URL.Path,
|
"endpoint", r.URL.Path,
|
||||||
|
"server", "http",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -506,6 +507,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
tracer.WithSpanKind(tracer.SpanKindServer),
|
tracer.WithSpanKind(tracer.SpanKindServer),
|
||||||
tracer.WithSpanLabels(
|
tracer.WithSpanLabels(
|
||||||
"endpoint", endpointName,
|
"endpoint", endpointName,
|
||||||
|
"server", "http",
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,20 +515,20 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
topts = append(topts, tracer.WithSpanRecord(false))
|
topts = append(topts, tracer.WithSpanRecord(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, sp = h.opts.Tracer.Start(ctx, endpointName+" rpc-server", topts...)
|
ctx, sp = h.opts.Tracer.Start(ctx, "rpc-server", topts...)
|
||||||
|
|
||||||
if !slices.Contains(meter.DefaultSkipEndpoints, handler.name) {
|
if !slices.Contains(meter.DefaultSkipEndpoints, handler.name) {
|
||||||
defer func() {
|
defer func() {
|
||||||
te := time.Since(ts)
|
te := time.Since(ts)
|
||||||
h.opts.Meter.Summary(semconv.ServerRequestLatencyMicroseconds, "endpoint", handler.name).Update(te.Seconds())
|
h.opts.Meter.Summary(semconv.ServerRequestLatencyMicroseconds, "endpoint", handler.name, "server", "http").Update(te.Seconds())
|
||||||
h.opts.Meter.Histogram(semconv.ServerRequestDurationSeconds, "endpoint", handler.name).Update(te.Seconds())
|
h.opts.Meter.Histogram(semconv.ServerRequestDurationSeconds, "endpoint", handler.name, "server", "http").Update(te.Seconds())
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", handler.name).Dec()
|
h.opts.Meter.Counter(semconv.ServerRequestInflight, "endpoint", handler.name, "server", "http").Dec()
|
||||||
|
|
||||||
n := GetRspCode(ctx)
|
n := GetRspCode(ctx)
|
||||||
if n > 399 {
|
if n > 399 {
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", handler.name, "status", "failure", "code", strconv.Itoa(n)).Inc()
|
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", handler.name, "server", "http", "status", "failure", "code", strconv.Itoa(n)).Inc()
|
||||||
} else {
|
} else {
|
||||||
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", handler.name, "status", "success", "code", strconv.Itoa(n)).Inc()
|
h.opts.Meter.Counter(semconv.ServerRequestTotal, "endpoint", handler.name, "server", "http", "status", "success", "code", strconv.Itoa(n)).Inc()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ var bufPool = sync.Pool{
|
|||||||
var _ MeterServiceServer = &Handler{}
|
var _ MeterServiceServer = &Handler{}
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
opts Options
|
Options Options
|
||||||
}
|
}
|
||||||
|
|
||||||
type Option func(*Options)
|
type Option func(*Options)
|
||||||
@ -81,7 +81,7 @@ func NewOptions(opts ...Option) Options {
|
|||||||
|
|
||||||
func NewHandler(opts ...Option) *Handler {
|
func NewHandler(opts ...Option) *Handler {
|
||||||
options := NewOptions(opts...)
|
options := NewOptions(opts...)
|
||||||
return &Handler{opts: options}
|
return &Handler{Options: options}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.Frame) error {
|
||||||
@ -96,7 +96,7 @@ func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.
|
|||||||
|
|
||||||
w := io.Writer(buf)
|
w := io.Writer(buf)
|
||||||
|
|
||||||
if md, ok := metadata.FromOutgoingContext(ctx); gzipAccepted(md) && ok && !h.opts.DisableCompress {
|
if md, ok := metadata.FromOutgoingContext(ctx); gzipAccepted(md) && ok && !h.Options.DisableCompress {
|
||||||
omd, _ := metadata.FromOutgoingContext(ctx)
|
omd, _ := metadata.FromOutgoingContext(ctx)
|
||||||
omd.Set(contentEncodingHeader, "gzip")
|
omd.Set(contentEncodingHeader, "gzip")
|
||||||
gz := gzipPool.Get().(*gzip.Writer)
|
gz := gzipPool.Get().(*gzip.Writer)
|
||||||
@ -109,7 +109,7 @@ func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.
|
|||||||
gz.Flush()
|
gz.Flush()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := h.opts.Meter.Write(w, h.opts.MeterOptions...); err != nil {
|
if err := h.Options.Meter.Write(w, h.Options.MeterOptions...); err != nil {
|
||||||
log.Error(ctx, "http/meter write failed", err)
|
log.Error(ctx, "http/meter write failed", err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user