Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

Commit eda4101

Browse files
committed
feat(api): Add health check endpoint for services
1 parent c7dc2e3 commit eda4101

3 files changed

Lines changed: 47 additions & 2 deletions

File tree

api/routers/routers.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@ import (
1010

1111
"agones-minecraft/config"
1212
v1Controllers "agones-minecraft/controllers/api/v1"
13+
"agones-minecraft/db"
1314
apiErr "agones-minecraft/middleware/errors"
1415
"agones-minecraft/middleware/jwt"
1516
ginzap "agones-minecraft/middleware/log"
1617
"agones-minecraft/middleware/session"
18+
jwtServicev1 "agones-minecraft/services/auth/jwt"
19+
"agones-minecraft/services/k8s/agones"
20+
1721
twitchMiddleware "agones-minecraft/middleware/twitch"
1822
)
1923

@@ -28,7 +32,28 @@ func NewRouter() *gin.Engine {
2832
engine.Use(ginzap.RecoveryWithZap(zap.L(), false))
2933

3034
engine.GET("/health", func(c *gin.Context) {
31-
c.JSON(http.StatusOK, gin.H{"status": "ok"})
35+
var database bool
36+
var memorystore bool
37+
var cluster bool
38+
39+
if err := db.Ping(); err == nil {
40+
database = true
41+
}
42+
43+
if err := jwtServicev1.Get().Ping(); err == nil {
44+
memorystore = true
45+
}
46+
47+
if err := agones.Client().Ping(); err == nil {
48+
cluster = true
49+
}
50+
51+
c.JSON(http.StatusOK, gin.H{
52+
"api": true,
53+
"database": database,
54+
"memorystore": memorystore,
55+
"cluster": cluster,
56+
})
3257
})
3358

3459
AddV1Router(engine)

api/services/auth/jwt/store.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,8 @@ func (r *RedisStore) Delete(userId string) error {
6969
}
7070

7171
func (r *RedisStore) Ping() error {
72-
return r.redis.Ping(context.Background()).Err()
72+
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
73+
defer cancel()
74+
75+
return r.redis.Ping(ctx).Err()
7376
}

api/services/k8s/agones/agones.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,23 @@ func New(config *rest.Config) (*AgonesClient, error) {
7070
return &AgonesClient{agonesClient, gameServerInformer, recordStore}, nil
7171
}
7272

73+
func (c *AgonesClient) Ping() error {
74+
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
75+
defer cancel()
76+
77+
res, err := c.clientSet.RESTClient().Get().AbsPath("/healthz").DoRaw(ctx)
78+
if err != nil {
79+
return err
80+
}
81+
82+
content := string(res)
83+
if content != "ok" {
84+
return fmt.Errorf("not ok, error: %s", content)
85+
}
86+
87+
return nil
88+
}
89+
7390
// Gets a GameServer by name
7491
func (c *AgonesClient) Get(serverName string) (*agonesv1.GameServer, error) {
7592
return c.informer.Lister().GameServers(metav1.NamespaceDefault).Get(serverName)

0 commit comments

Comments
 (0)