完善直播节点监控与边缘代理
This commit is contained in:
1 parent
058bb4b99f
commit
20cd99efa4
19 files changed
+401
-47
No files matched your search
@@ -4,7 +4,9 @@ import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -21,6 +23,12 @@ type HeartbeatPayload struct {
|
||||
BandwidthMbps float64 `json:"bandwidth_mbps"`
|
||||
ActiveConnections int `json:"active_connections"`
|
||||
HlsReaders int `json:"hls_readers"`
|
||||
NetworkInMbps float64 `json:"network_in_mbps"`
|
||||
NetworkOutMbps float64 `json:"network_out_mbps"`
|
||||
ViewerCount int `json:"viewer_count"`
|
||||
FrameDrops int `json:"frame_drop_indicators"`
|
||||
PacketLoss int `json:"packet_loss_indicators"`
|
||||
MediaAvailable bool `json:"media_metrics_available"`
|
||||
}
|
||||
|
||||
type RegisterPayload struct {
|
||||
@@ -54,6 +62,37 @@ func (h *Heartbeat) Register() error {
|
||||
return h.post("/api/nodes/register", payload)
|
||||
}
|
||||
|
||||
func (h *Heartbeat) Discover() error {
|
||||
if h.cfg.DiscoveryURL == "" {
|
||||
return nil
|
||||
}
|
||||
resp, err := h.client.Get(h.cfg.DiscoveryURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode >= 400 {
|
||||
return fmt.Errorf("discovery status %d", resp.StatusCode)
|
||||
}
|
||||
body, err := io.ReadAll(io.LimitReader(resp.Body, 4096))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
host := strings.TrimSpace(string(body))
|
||||
if host == "" {
|
||||
return fmt.Errorf("discovery returned an empty address")
|
||||
}
|
||||
if !strings.HasPrefix(host, "http://") && !strings.HasPrefix(host, "https://") {
|
||||
host = "http://" + host
|
||||
}
|
||||
h.cfg.OriginURL = strings.TrimRight(host, "/")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *Heartbeat) OriginURL() string {
|
||||
return h.cfg.OriginURL
|
||||
}
|
||||
|
||||
func (h *Heartbeat) Send(m Metrics) error {
|
||||
payload := HeartbeatPayload{
|
||||
NodeID: h.nodeID,
|
||||
@@ -62,6 +101,12 @@ func (h *Heartbeat) Send(m Metrics) error {
|
||||
BandwidthMbps: m.Bandwidth,
|
||||
ActiveConnections: m.ActiveConns,
|
||||
HlsReaders: m.HlsReaders,
|
||||
NetworkInMbps: m.NetworkIn,
|
||||
NetworkOutMbps: m.NetworkOut,
|
||||
ViewerCount: m.ViewerCount,
|
||||
FrameDrops: m.FrameDrops,
|
||||
PacketLoss: m.PacketLoss,
|
||||
MediaAvailable: m.MediaAvailable,
|
||||
}
|
||||
return h.post("/api/nodes/heartbeat", payload)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user