1 Star 0 Fork 0

liucxer/ceph-tools

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
free.go 1.54 KB
一键复制 编辑 原始数据 按行查看 历史
刘昌喜 提交于 2023-11-24 16:10 . update
package monitor
import (
"gitee.com/liucxer/ceph-tools/pkg/host_client"
"github.com/sirupsen/logrus"
"io/ioutil"
"regexp"
"strconv"
"strings"
)
func GetHostFree(client *host_client.HostClient) (MonitorResultItem, error) {
var (
res MonitorResultItem
err error
)
bts, err := client.ExecCmd("free -m")
if err != nil {
res.Error = err.Error()
return res, err
}
freeInt, err := DecodeByte(bts)
if err != nil {
res.Error = err.Error()
return res, err
}
if freeInt < 5*1024 {
res.IsOk = false
res.Error = strconv.Itoa(int(freeInt/1024)) + "G"
res.Success = strconv.Itoa(int(freeInt/1024)) + "G"
} else {
res.IsOk = true
res.Error = strconv.Itoa(int(freeInt/1024)) + "G"
res.Success = strconv.Itoa(int(freeInt/1024)) + "G"
}
return res, err
}
func DecodeFree() (int64, error) {
var (
free int64
)
bts, err := ioutil.ReadFile("/Users/liucx/Documents/gopath/src/gitee.com/liucxer/ceph-tools/pkg/monitor/free_data.json")
if err != nil {
return free, err
}
return DecodeByte(bts)
}
func DecodeByte(bts []byte) (int64, error) {
var (
free int64
freeStr string
)
str := string(bts)
list := strings.Split(str, "\n")
for _, item := range list {
if strings.Contains(item, "Mem") {
re := regexp.MustCompile(`\s+`)
result := re.ReplaceAllString(item, " ")
subList := strings.Split(result, " ")
freeStr = subList[3]
}
}
freeInt, err := strconv.Atoi(freeStr)
if err != nil {
logrus.Errorf("strconv.Atoi err:%v, freeStr:%s", err, freeStr)
return free, err
}
free = int64(freeInt)
return free, err
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/liucxer/ceph-tools.git
git@gitee.com:liucxer/ceph-tools.git
liucxer
ceph-tools
ceph-tools
ecdc69b73bfe

搜索帮助