refactor: nodes analytics (#847)

* refactor: nodes analytics

* feat(debug): add pprof in debug mode

* refactor: websocket error handler
This commit is contained in:
Jacky 2025-02-05 17:25:29 +08:00
parent b1ba719cb1
commit cb4977e5ab
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D
17 changed files with 276 additions and 155 deletions

View file

@ -2,6 +2,10 @@ package analytic
import (
"fmt"
"net/http"
"runtime"
"time"
"github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/shirou/gopsutil/v4/cpu"
@ -10,9 +14,6 @@ import (
"github.com/shirou/gopsutil/v4/net"
"github.com/spf13/cast"
"github.com/uozi-tech/cosy/logger"
"net/http"
"runtime"
"time"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
@ -86,12 +87,14 @@ func Analytic(c *gin.Context) {
// write
err = ws.WriteJSON(stat)
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
if err != nil {
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
}
break
}
time.Sleep(1000 * time.Microsecond)
time.Sleep(1 * time.Second)
}
}

View file

@ -1,13 +1,14 @@
package analytic
import (
"net/http"
"time"
"github.com/0xJacky/Nginx-UI/internal/analytic"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/uozi-tech/cosy/logger"
"net/http"
"time"
)
func GetNodeStat(c *gin.Context) {
@ -28,8 +29,10 @@ func GetNodeStat(c *gin.Context) {
for {
// write
err = ws.WriteJSON(analytic.GetNodeStat())
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
if err != nil {
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
}
break
}
@ -55,8 +58,10 @@ func GetNodesAnalytic(c *gin.Context) {
for {
// write
err = ws.WriteJSON(analytic.NodeMap)
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
if err != nil {
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
}
break
}

View file

@ -2,6 +2,7 @@ package nginx_log
import (
"encoding/json"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/0xJacky/Nginx-UI/internal/nginx_log"
"github.com/gin-gonic/gin"
@ -252,9 +253,10 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
}
err = ws.WriteMessage(websocket.TextMessage, []byte(line.Text))
if err != nil && websocket.IsUnexpectedCloseError(err, websocket.CloseNormalClosure) {
errChan <- errors.Wrap(err, "error tailNginxLog write message")
if err != nil {
if helper.IsUnexpectedWebsocketError(err) {
errChan <- errors.Wrap(err, "error tailNginxLog write message")
}
return
}
case control = <-controlChan:

View file

@ -36,8 +36,10 @@ func AvailabilityTest(c *gin.Context) {
for {
err = ws.WriteJSON(upstream.AvailabilityTest(body))
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
if err != nil {
if helper.IsUnexpectedWebsocketError(err) {
logger.Error(err)
}
break
}