Commit 39d5e97c authored by Your Name's avatar Your Name

add host network mode

parent 91c7f560
......@@ -3,6 +3,8 @@ version: "3.9"
services:
monitor.multi:
image: docker.ai.17xuexi.com/monitorapi/monitor-smi:latest
network_mode: host
privileged: true
ports:
- 9093:9090
- 7000:5000
......
package main
import (
"flag"
"fmt"
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/swagger"
)
func main() {
//ExampleAPI_query()
promethAddr := flag.String("promethaddr", "http://127.0.0.1:9090", "a string parameter")
flag.Parse()
//cli, err := NewProCli("http://192.168.1.21:9090")
fmt.Println("connect to prometh addr-----------", *promethAddr)
//cli, err := NewProCli("http://192.168.1.21:9090")
cli, err := NewProCli(*promethAddr)
if err != nil {
fmt.Println(err.Error())
return
}
// Initialize a new Fiber app
app := fiber.New()
app.Use(cors.New())
app.Static("/swagger/docs", "./docs")
app.Get("/swagger/*", swagger.New(swagger.Config{ // custom
URL: "http://124.193.167.71:5000/swagger/docs/swagger.yaml", //http://124.193.167.71:8000/
DeepLinking: false,
// Expand ("list") or Collapse ("none") tag groups by default
DocExpansion: "none",
// Prefill OAuth ClientId on Authorize popup
// OAuth: &swagger.OAuthConfig{
// AppName: "OAuth Provider",
// ClientId: "21bb4edc-05a7-4afc-86f1-2e151e4ba6e2",
// },
// Ability to change OAuth2 redirect uri location
//OAuth2RedirectUrl: "http://localhost:8080/swagger/oauth2-redirect.html",
}))
app.Get("/hw", func(c *fiber.Ctx) error {
res := NewResponse{}
gpus, err := cli.Gpus()
if err != nil {
fmt.Println("gpu error", err.Error())
res.Msg = err.Error()
res.Code = 500
}
res.Data.Gpus = gpus
cpus, err := cli.Cpus()
if err != nil {
fmt.Println("cpu error", err.Error())
res.Msg = err.Error()
res.Code = 500
}
res.Data.Cpus = cpus
networks, err := cli.Networks()
if err != nil {
fmt.Println("network error", err.Error())
res.Msg = err.Error()
res.Code = 500
}
res.Data.Networks = networks
filesystems, err := cli.Disks()
if err != nil {
fmt.Println("disks error", err.Error())
res.Msg = err.Error()
res.Code = 500
}
res.Data.Disk = filesystems
mem, err := cli.Mem()
if err != nil {
fmt.Println("mem error", err.Error())
res.Msg = err.Error()
res.Code = 500
}
res.Data.Mem = mem
res.Code = 200
return c.JSON(&res)
})
// app.Get("/hw/usage", func(c *fiber.Ctx) error {
// res := make([]DeviceInfo, 0, 10)
// // gpuUtils, err := cli.GpuUtil()
// // if err != nil {
// // return c.JSON(Response{
// // Success: false,
// // Error: err.Error(),
// // })
// // }
// // res = append(res, gpuUtils...)
// // gpuMemUtils, err := cli.GpuMemUtil()
// // if err != nil {
// // return c.JSON(Response{
// // Success: false,
// // Error: err.Error(),
// // })
// // }
// // res = append(res, gpuMemUtils...)
// diskUtil, err := cli.DiskUtil()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, diskUtil...)
// networkSpeed, err := cli.NetworkSpeed()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, networkSpeed...)
// cpuUtils, err := cli.CpuUtil()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, cpuUtils...)
// //MemUtil()
// memUtils, err := cli.MemUtil()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, memUtils...)
// netRece, err := cli.NetworkReceive()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, netRece...)
// netSend, err := cli.NetworkTransmit()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, netSend...)
// diskFreeSize, err := cli.DiskFreeSize()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, diskFreeSize...)
// // power, err := cli.GpuPowerUsage()
// // if err != nil {
// // return c.JSON(Response{
// // Success: false,
// // Error: err.Error(),
// // })
// // }
// // res = append(res, power...)
// memTemp, err := cli.GpuMemTemp()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, memTemp...)
// // gpuTemp, err := cli.GpuTemp()
// // if err != nil {
// // return c.JSON(Response{
// // Success: false,
// // Error: err.Error(),
// // })
// // }
// // res = append(res, gpuTemp...)
// return c.JSON(Response{
// Success: true,
// Devices: res,
// })
// })
// app.Get("/hw/info", func(c *fiber.Ctx) error {
// res := make([]DeviceInfo, 0, 10)
// diskTotalSize, err := cli.DiskTotalSize()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, diskTotalSize...)
// memSize, err := cli.MemInfo()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, memSize...)
// gpuInfo, err := cli.GpuInfo()
// if err != nil {
// return c.JSON(Response{
// Success: false,
// Error: err.Error(),
// })
// }
// res = append(res, gpuInfo...)
// return c.JSON(Response{
// Success: true,
// Devices: res,
// })
// })
// Start the server on port 3000
log.Fatal(app.Listen(":5000"))
}
type Response struct {
Devices []DeviceInfo `json:"devices"`
Success bool `json:"success"`
Error string `json:"error`
}
type NewResponse struct {
Data Data `json:"hardware"`
Code int `json:"code"`
Msg string `json:"msg"`
}
type Data struct {
Cpus Cpu `json:"CPU"`
Gpus []Gpu `json:"GPU"`
Disk []FileSystem `json:"DISK"`
Networks []Network `json:"NET"`
Mem Mem `json:"RAM"`
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment