@@ -36,27 +36,46 @@ func New(name string, opts ...Option) server.Runnable {
36
36
}
37
37
38
38
// NewMetrics 新建默认监控服务
39
- func NewMetrics (name string , opts ... Option ) server.Runnable {
39
+ func NewMetrics (opts ... Option ) server.Runnable {
40
40
s := & Server {
41
- name : name ,
41
+ name : "metrics" ,
42
42
opts : setDefaultOption (),
43
43
}
44
44
s .opts .addr = ":3000"
45
- s .opts .handler = promhttp .Handler ()
45
+ h := http .NewServeMux ()
46
+ h .Handle ("/metrics" , promhttp .Handler ())
47
+ s .opts .handler = h
46
48
s .Options (opts ... )
47
49
return s
48
50
}
49
51
50
- // NewHealth 默认健康检查服务
51
- func NewHealth ( name string , opts ... Option ) server.Runnable {
52
+ // NewHealthz 默认健康检查服务
53
+ func NewHealthz ( opts ... Option ) server.Runnable {
52
54
s := & Server {
53
- name : name ,
55
+ name : "healthz" ,
54
56
opts : setDefaultOption (),
55
57
}
56
58
s .opts .addr = ":4000"
57
- s .opts .handler = http .HandlerFunc (func (w http.ResponseWriter , _ * http.Request ) {
58
- _ , _ = w .Write ([]byte ("ok" ))
59
+ h := http .NewServeMux ()
60
+ h .HandleFunc ("/healthz" , func (w http.ResponseWriter , _ * http.Request ) {
61
+ w .WriteHeader (http .StatusOK )
62
+ })
63
+ s .opts .handler = h
64
+ s .Options (opts ... )
65
+ return s
66
+ }
67
+
68
+ func NewReadyz (opts ... Option ) server.Runnable {
69
+ s := & Server {
70
+ name : "readyz" ,
71
+ opts : setDefaultOption (),
72
+ }
73
+ s .opts .addr = ":2000"
74
+ h := http .NewServeMux ()
75
+ h .HandleFunc ("/readyz" , func (w http.ResponseWriter , _ * http.Request ) {
76
+ w .WriteHeader (http .StatusOK )
59
77
})
78
+ s .opts .handler = h
60
79
s .Options (opts ... )
61
80
return s
62
81
}
@@ -81,14 +100,33 @@ func (e *Server) Start(ctx context.Context) error {
81
100
e .ctx = ctx
82
101
e .started = true
83
102
e .srv = & http.Server {Handler : e .opts .handler }
84
- log .Infof ("%e Server listening on %e" , e .name , l .Addr ().String ())
103
+ if e .opts .endHook != nil {
104
+ e .srv .RegisterOnShutdown (e .opts .endHook )
105
+ }
106
+ e .srv .BaseContext = func (_ net.Listener ) context.Context {
107
+ return ctx
108
+ }
109
+ log .Infof ("%s Server listening on %s" , e .name , l .Addr ().String ())
85
110
go func () {
86
- if err = e .srv .Serve (l ); err != nil {
87
- log .Errorf ("%e gRPC Server start error: %e" , e .name , err .Error ())
111
+ if e .opts .keyFile == "" || e .opts .certFile == "" {
112
+ if err = e .srv .Serve (l ); err != nil {
113
+ log .Errorf ("%s Server start error: %s" , e .name , err .Error ())
114
+ }
115
+ } else {
116
+ if err = e .srv .ServeTLS (l , e .opts .certFile , e .opts .keyFile ); err != nil {
117
+ log .Errorf ("%s Server start error: %s" , e .name , err .Error ())
118
+ }
119
+ }
120
+ <- ctx .Done ()
121
+ err = e .Shutdown (ctx )
122
+ if err != nil {
123
+ log .Errorf ("%S Server shutdown error: %s" , e .name , err .Error ())
88
124
}
89
125
}()
90
- <- ctx .Done ()
91
- return e .Shutdown (ctx )
126
+ if e .opts .startedHook != nil {
127
+ e .opts .startedHook ()
128
+ }
129
+ return nil
92
130
}
93
131
94
132
// Attempt 判断是否可以启动
0 commit comments