» Go:使用Gin构建REST API » 2. 开发 » 2.2 健康端点

健康端点

健康端点指服务器提供的特定端点或路由,用于确定服务器或应用程序的健康状态。该端点通常用于监控和管理目的,允许外部系统或监控工具通过其 API 检测系统否正常运行。

修改 main.go

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()

	// 定义一个健康端点,通常使用 `/health` 或 `/`
	router.GET("/", func(c *gin.Context) {
		// 返回一个表示健康的简单响应
		c.JSON(http.StatusOK, gin.H{
			"status": "ok",
		})
	})

	// 在 8080 端口运行服务器
	router.Run(":8080")
}

/ 端点的响应:

{"status":"ok"}

可选
如果想在健康端点的响应中包括 CPU 或内存数据,需要你在 Go 程序的运行环境中收集相关数据。

修改 main.go [可选]:

@@ -2,6 +2,7 @@ package main
 
 import (
        "net/http"
+       "runtime"
 
        "github.com/gin-gonic/gin"
 )
@@ -12,9 +13,20 @@ func main() {
 
        // 定义健康端点处理器
        router.GET("/", func(c *gin.Context) {
+               // 获取内存使用数据
+               var m runtime.MemStats
+               runtime.ReadMemStats(&m)
+               // 获取 CPU 使用数据
+               // 无法直接从 Go 运行时读取 CPU 数据,可考虑使用三方库
+               // e.g. https://github.com/shirou/gopsutil
+               cpuUsage := 50.0 // 占位符
+
                // 返回一个表示健康的简单响应
                c.JSON(http.StatusOK, gin.H{
-                       "status": "ok",
+                       "status":      "ok",
+                       "memory_byte": m.Alloc,
+                       "memory_MB":   m.Alloc / 1024 / 1024,
+                       "cpu_usage":   cpuUsage,
                })
        })

该响应如下所示:

{"cpu_usage":50,"memory_MB":2,"memory_byte":3049016,"status":"ok"}