Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gpuhw
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
gpuhw
Commits
39d5e97c
Commit
39d5e97c
authored
May 23, 2024
by
Your Name
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add host network mode
parent
91c7f560
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
313 additions
and
0 deletions
+313
-0
docker-compose-smi.yml
docker-compose-smi.yml
+2
-0
main.go.bak
main.go.bak
+311
-0
No files found.
docker-compose-smi.yml
View file @
39d5e97c
...
...
@@ -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
...
...
main.go.bak
0 → 100644
View file @
39d5e97c
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
"`
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment