|
|
/*
|
|
|
*
|
|
|
@author: sre
|
|
|
@date: 2023/11/19 0019
|
|
|
@desc: todo
|
|
|
*
|
|
|
*/
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
// getMemoryInfo 返回总内存 可用内存
|
|
|
func getMemoryInfo(ip, port string) (float64, float64, error) {
|
|
|
var memTotal, memAvailable float64
|
|
|
data, err := getMetrics(ip, port)
|
|
|
if err != nil {
|
|
|
return 0, 0, err
|
|
|
}
|
|
|
// 解析metrics数据
|
|
|
lines := strings.Split(data, "\n")
|
|
|
for _, line := range lines {
|
|
|
//memTotal
|
|
|
if strings.HasPrefix(line, "node_memory_MemTotal_bytes ") {
|
|
|
fields := strings.Fields(line)
|
|
|
if len(fields) == 2 {
|
|
|
memTotal, err = extractMetricValue(fields[1])
|
|
|
if err != nil {
|
|
|
return 0, 0, err
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
//memAvailable
|
|
|
if strings.HasPrefix(line, "node_memory_MemAvailable_bytes ") {
|
|
|
fields := strings.Fields(line)
|
|
|
if len(fields) == 2 {
|
|
|
memAvailable, err = extractMetricValue(fields[1])
|
|
|
if err != nil {
|
|
|
return 0, 0, err
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return memTotal, memAvailable, nil
|
|
|
}
|
|
|
|
|
|
//// 解析Node Exporter的响应内容,提取内存使用率指标
|
|
|
//func parseMemoryUsage(response string) float64 {
|
|
|
// // 在响应中找到相关的指标行,例如 "node_memory_MemTotal: 167772160000 149510252888 149510252888"
|
|
|
// lines := strings.Split(response, "\n")
|
|
|
// for _, line := range lines {
|
|
|
// if strings.Contains(line, "node_memory_MemTotal") {
|
|
|
// fields := strings.Fields(line)
|
|
|
// if len(fields) >= 4 {
|
|
|
// // 从指标行中提取内存使用率指标,并将其转换为百分比形式
|
|
|
// memoryUsage := strings.TrimSuffix(fields[2], " ") + "%"
|
|
|
// return getPercentage(memoryUsage)
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// // 如果找不到相关的指标行,则返回0%
|
|
|
// return 0.0
|
|
|
//}
|
|
|
//
|
|
|
//// 从字符串中提取百分比值,并将其转换为浮点数形式
|
|
|
//func getPercentage(percentage string) float64 {
|
|
|
// // 去掉百分号,并将其转换为浮点数形式
|
|
|
// percentage = strings.ReplaceAll(percentage, "%", "")
|
|
|
// return parseFloat(percentage) * (100.0 / 100) // 将字符串转换为浮点数,并乘以100转换为百分比形式
|
|
|
//}
|