92 lines
3.2 KiB
Go
92 lines
3.2 KiB
Go
package botser
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"stat/common/redis"
|
|
"stat/common/utils"
|
|
"stat/common/version"
|
|
"stat/statg"
|
|
"strconv"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
sysOnce sync.Once
|
|
)
|
|
|
|
func GetServerInformation() string {
|
|
text := fmt.Sprintf("统计中心:【%s】编号【%d】:\n", statg.Conf.ServerIndex.Name(), statg.Conf.ServerIndex)
|
|
text += fmt.Sprintf("机器名称:【%s】\n", version.HostName())
|
|
text += fmt.Sprintf("监听地址:【%s】\n", statg.Conf.Host)
|
|
text += fmt.Sprintf("监听端口:【%d】\n", statg.Conf.Port)
|
|
text += fmt.Sprintf("服务进程:【%d】\n", os.Getpid())
|
|
text += fmt.Sprintf("程序版本:【%s】\n", version.SERVICE_VERSION)
|
|
text += fmt.Sprintf("源码分支:【%s】\n", version.GIT_BRANCH)
|
|
text += fmt.Sprintf("提交版本:【%s】\n", version.GIT_VERSION)
|
|
text += fmt.Sprintf("编译日期:【%s】\n", version.BUILD_DATE)
|
|
text += fmt.Sprintf("编译地址:【%s】\n", version.BUILD_IP)
|
|
text += fmt.Sprintf("运行模式:【%s】\n", statg.Conf.RunMod)
|
|
text += fmt.Sprintf("启动时间:【%s】\n", version.ServerStartTime.Format("2006-01-02T15:04:05"))
|
|
text += fmt.Sprintf("运行时长:【%s】\n", time.Since(version.ServerStartTime))
|
|
return text
|
|
}
|
|
|
|
func SaveServerKeepAliveTime() {
|
|
defer utils.RecoverError(nil)
|
|
keyAlive := redis.GetServerKeepAliveHashKey(int(statg.Conf.ServerIndex))
|
|
_ = redis.StatRds.Set(keyAlive, time.Now().Unix(), 0)
|
|
}
|
|
|
|
func SaveServerNormalCloseFlag() {
|
|
defer utils.RecoverError(nil)
|
|
keyClose := redis.GetServerCloseFlagHashKey(int(statg.Conf.ServerIndex))
|
|
_ = redis.StatRds.Set(keyClose, time.Now().Unix(), 0)
|
|
}
|
|
|
|
func GetServerInformationLastTime() string {
|
|
ret := ""
|
|
srvStart := int64(0)
|
|
srvAlive := int64(0)
|
|
srvClose := int64(0)
|
|
sysOnce.Do(func() {
|
|
keyStart := redis.GetServerStartTimeHashKey(int(statg.Conf.ServerIndex))
|
|
if usStart, err := redis.StatRds.Get(keyStart); err == nil && usStart != nil {
|
|
if ut, err2 := strconv.ParseInt(*usStart, 10, 64); err2 == nil {
|
|
srvStart = ut
|
|
}
|
|
}
|
|
keyAlive := redis.GetServerKeepAliveHashKey(int(statg.Conf.ServerIndex))
|
|
if usAlive, err := redis.StatRds.Get(keyAlive); err == nil && usAlive != nil {
|
|
if ut, err2 := strconv.ParseInt(*usAlive, 10, 64); err2 == nil {
|
|
srvAlive = ut
|
|
}
|
|
}
|
|
keyClose := redis.GetServerCloseFlagHashKey(int(statg.Conf.ServerIndex))
|
|
if usClose, err := redis.StatRds.Get(keyClose); err == nil && usClose != nil {
|
|
if ut, err2 := strconv.ParseInt(*usClose, 10, 64); err2 == nil {
|
|
srvClose = ut
|
|
}
|
|
}
|
|
|
|
version.ServerStartLast = time.Unix(srvStart, 0)
|
|
version.ServerAliveLast = time.Unix(srvAlive, 0)
|
|
version.ServerCloseLast = time.Unix(srvClose, 0)
|
|
|
|
_ = redis.StatRds.Set(keyStart, version.ServerStartTime.Unix(), 0)
|
|
_ = redis.StatRds.Set(keyClose, version.ServerStartTime.Unix(), 0)
|
|
_ = redis.StatRds.Set(keyAlive, time.Now().Unix(), 0)
|
|
})
|
|
if version.ServerAliveLast.After(version.ServerStartLast) {
|
|
ret = fmt.Sprintf("上次运行:【%v】\n", version.ServerAliveLast.Sub(version.ServerStartLast))
|
|
if version.ServerCloseLast.After(version.ServerStartLast) {
|
|
ret += fmt.Sprintf("上次关闭:【正常关闭🟢】\n")
|
|
} else {
|
|
ret += fmt.Sprintf("上次关闭:【异常关闭🔴】\n")
|
|
}
|
|
}
|
|
|
|
return ret
|
|
}
|