2025-04-02 14:29:57 +08:00

39 lines
884 B
Go

package handler
import (
"runtime"
"time"
"gitee.ltd/lxh/wechat-robot/internal/model"
"github.com/gofiber/fiber/v2"
)
// HealthCheck 提供容器健康检查接口
func HealthCheck(c *fiber.Ctx) error {
// 检查数据库连接
var count int64
dbErr := model.GetDB().Raw("SELECT 1").Count(&count).Error
// 获取运行时信息
var m runtime.MemStats
runtime.ReadMemStats(&m)
return c.JSON(fiber.Map{
"status": "ok",
"message": "service is healthy",
"timestamp": time.Now().Format(time.RFC3339),
"database": map[string]interface{}{
"connected": dbErr == nil,
},
"system": map[string]interface{}{
"goroutines": runtime.NumGoroutine(),
"memory": map[string]interface{}{
"alloc": m.Alloc / 1024 / 1024,
"total_alloc": m.TotalAlloc / 1024 / 1024,
"sys": m.Sys / 1024 / 1024,
"gc_cycles": m.NumGC,
},
},
})
}