我們的流媒體服務器EasyNVR、EasyDSS等都是分為直播版和錄像版的,就拿EasyDSS來説,直播版也就是服務器本身不帶雲端存儲功能,不需要額外的空間進行視頻的錄像,而錄像版就是能夠將直播的視頻流實時存儲錄像。

對於錄像版的流媒體服務器EasyDSS來説,運維人員需要時刻關注着服務器的存儲情況,以免出現空間過小導致無法進行視頻存儲、或者視頻存儲錄像不完整的情況。

在我們新版EasyDSS的首頁,放置了很多關於服務器運行情況的模塊,這些模塊都是可以調用接口展示的,可以方便運維人員的信息獲取。其中也包括了服務器存儲情況的模塊。

易流雲平台接口文檔_#視頻實時流

對於代碼層次的話需要調用psutil(進程和系統實用程序),這是一個跨平台的庫,用於檢索正在運行的進程和系統利用率(CPU,內存,磁盤,網絡,傳感器)的信息。之後將返回的數據進行封裝,傳到前端去渲染。

代碼如下,大家可以自行參考下:

func (r *ConfigRouter) stateStore(c *gin.Context) {
   var diskData []*UsageStat
   parts, _ := disk.Partitions(true)
   for _, part := range parts {
      if usage, err := disk.Usage(part.Mountpoint); err == nil {
         us := &UsageStat{}
         us.Unit = "G"
         us.Name = usage.Path
         us.Size = fmt.Sprintf("%.2f", float64(usage.Total)/1024/1024/1024)
         us.FreeSpace = fmt.Sprintf("%.2f", float64(usage.Free)/1024/1024/1024)
         us.Used = fmt.Sprintf("%.2f", float64(usage.Used)/1024/1024/1024)
         us.Percent = fmt.Sprintf("%.2f", float64(usage.UsedPercent))
         if usage.Total != 0 {
            diskData = append(diskData, us)
         }
      }
   }
   c.AbortWithStatusJSON(http.StatusOK, diskData)
}

調用成功後,首頁界面就會顯示如下圖的使用情況,數據清晰:

易流雲平台接口文檔_#視頻實時流_02