From c9a39a348b450cce20a121e9f14fc5af75f503f3 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 18 Aug 2023 09:38:07 +0800 Subject: [PATCH] =?UTF-8?q?IP=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/monitor/monitor/monitor.go | 29 +++++++++++++++++++++++++++++ lib/routes/routes.go | 1 + 2 files changed, 30 insertions(+) diff --git a/features/monitor/monitor/monitor.go b/features/monitor/monitor/monitor.go index db91d634..a23f03ad 100644 --- a/features/monitor/monitor/monitor.go +++ b/features/monitor/monitor/monitor.go @@ -1,8 +1,10 @@ package monitor import ( + "fmt" "net/http" "sort" + "strings" "time" "ems.agt/lib/dborm" @@ -19,6 +21,8 @@ import ( // 监控数据默认保存30天,可以自行修改,也可手动清理该日志。 var ( + // IP地址 + UriIPAddr = config.DefaultUriPrefix + "/monitor/{apiVersion}/monitor/ipaddr" // 可选网络 UriNetOpt = config.DefaultUriPrefix + "/monitor/{apiVersion}/monitor/netoptions" // 可选磁盘 @@ -26,6 +30,9 @@ var ( // 加载 UriLoad = config.DefaultUriPrefix + "/monitor/{apiVersion}/monitor/load" + // IP地址 + UriIPAddrOAM = config.UriPrefix + "/monitor/{apiVersion}/monitor/ipaddr" + // 可选网络 UriNetOptOAM = config.UriPrefix + "/monitor/{apiVersion}/monitor/netoptions" // 可选磁盘 UriIoOptOAM = config.UriPrefix + "/monitor/{apiVersion}/monitor/iooptions" @@ -33,6 +40,28 @@ var ( UriLoadOAM = config.UriPrefix + "/monitor/{apiVersion}/monitor/load" ) +// IPAddr IP地址 +func IPAddr(w http.ResponseWriter, r *http.Request) { + ipAddrs := make(map[string]string) + interfaces, err := net.Interfaces() + if err == nil { + for _, iface := range interfaces { + var addrs []string + for _, v := range iface.Addrs { + prefix := strings.Split(v.Addr, "/")[0] + if strings.Contains(prefix, "::") { + addrs = append(addrs, fmt.Sprintf("IPv6 %s", prefix)) + } + if strings.Contains(prefix, ".") { + addrs = append(addrs, fmt.Sprintf("IPv4 %s", prefix)) + } + } + ipAddrs[iface.Name] = strings.Join(addrs, " / ") + } + } + services.ResponseWithJson(w, 200, ipAddrs) +} + // Netoptions 可选网络 func Netoptions(w http.ResponseWriter, r *http.Request) { netStat, _ := net.IOCounters(true) diff --git a/lib/routes/routes.go b/lib/routes/routes.go index 54ffa63c..40af722b 100644 --- a/lib/routes/routes.go +++ b/lib/routes/routes.go @@ -227,6 +227,7 @@ func init() { // 主机CPU内存监控 Register("POST", monitor.UriLoad, monitor.LoadMonitor, nil) Register("GET", monitor.UriNetOpt, monitor.Netoptions, nil) + Register("GET", monitor.UriIPAddr, monitor.IPAddr, nil) Register("GET", monitor.UriIoOpt, monitor.Iooptions, nil) // 文件资源