...
1 package server
2
3 import (
4
5 "golang.conradwood.net/go-easyops/prometheus"
6 "time"
7 )
8
9 var (
10 grpc_server_req_durations = prometheus.NewSummaryVec(
11 prometheus.SummaryOpts{
12 Name: "grpc_server_request_durations",
13 Help: "V=1 UNIT=s DESC=RPC latency distributions, measured on server",
14 Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
15 MaxAge: time.Hour,
16 },
17 []string{"servicename", "method"},
18 )
19 grpc_failed_requests = prometheus.NewCounterVec(
20 prometheus.CounterOpts{
21 Name: "grpc_server_requests_failed",
22 Help: "number of grpc requests failed by this server",
23 },
24 []string{"servicename", "method", "grpccode"},
25 )
26 grpc_server_requests = prometheus.NewCounterVec(
27 prometheus.CounterOpts{
28 Name: "grpc_server_requests_received",
29 Help: "total number of grpc requests received by this server",
30 },
31 []string{"servicename", "method"},
32 )
33 )
34
35 func init() {
36 prometheus.MustRegister(grpc_server_req_durations, grpc_failed_requests, grpc_server_requests)
37 }
38
39
40 type ServerMetrics struct {
41 concurrent_server_requests *prometheus.GaugeVec
42 inv_auth *prometheus.CounterVec
43 }
44
45
46 func NewServerMetrics() *ServerMetrics {
47 res := &ServerMetrics{
48 concurrent_server_requests: prometheus.NewGaugeVec(
49 prometheus.GaugeOpts{
50 Name: "grpc_concurrent_requests",
51 Help: "how many rpcs are served concurrently at any point in time",
52 },
53 []string{"servicename", "method"},
54 ),
55 inv_auth: prometheus.NewCounterVec(
56 prometheus.CounterOpts{
57 Name: "grpc_requests_invalid_auth",
58 Help: "V=1 UNIT=ops DESC=RPC requests with invalid or obsolete authentication",
59 },
60 []string{"servicename", "method", "reason"},
61 ),
62 }
63 prometheus.MustRegister(res.inv_auth, res.concurrent_server_requests)
64 return res
65 }
66
View as plain text