我們的流媒體服務器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)
}
調用成功後,首頁界面就會顯示如下圖的使用情況,數據清晰: