You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

report_hub_stats.go 1.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package tickevent
  2. import (
  3. "gitlink.org.cn/cloudream/common/utils/math2"
  4. stgglb "gitlink.org.cn/cloudream/storage/common/globals"
  5. stgmod "gitlink.org.cn/cloudream/storage/common/models"
  6. "gitlink.org.cn/cloudream/storage/common/pkgs/storage/agtpool"
  7. "gitlink.org.cn/cloudream/storage/common/pkgs/sysevent"
  8. )
  9. func ReportHubTransferStats(evtPub *sysevent.Publisher) {
  10. if stgglb.Stats.HubTransfer == nil {
  11. return
  12. }
  13. data := stgglb.Stats.HubTransfer.DumpData()
  14. endTime := stgglb.Stats.HubTransfer.Reset()
  15. for hubID, entry := range data.Entries {
  16. evtPub.Publish(&stgmod.BodyHubTransferStats{
  17. SourceHubID: *stgglb.Local.HubID,
  18. TargetHubID: hubID,
  19. Send: stgmod.DataTrans{
  20. TotalTransfer: entry.OutputBytes,
  21. RequestCount: entry.TotalOutput,
  22. FailedRequestCount: entry.TotalInput - entry.SuccessInput,
  23. AvgTransfer: math2.DivOrDefault(entry.OutputBytes, entry.TotalOutput, 0),
  24. MinTransfer: entry.MinOutputBytes,
  25. MaxTransfer: entry.MaxOutputBytes,
  26. },
  27. StartTimestamp: data.StartTime,
  28. EndTimestamp: endTime,
  29. })
  30. }
  31. }
  32. func ReportHubStorageTransferStats(stgAgts *agtpool.AgentPool, evtPub *sysevent.Publisher) {
  33. if stgglb.Stats.HubStorageTransfer == nil {
  34. return
  35. }
  36. data := stgglb.Stats.HubStorageTransfer.DumpData()
  37. endTime := stgglb.Stats.HubStorageTransfer.Reset()
  38. for storageID, stg := range data.Entries {
  39. evtPub.Publish(&stgmod.BodyHubStorageTransferStats{
  40. HubID: *stgglb.Local.HubID,
  41. StorageID: storageID,
  42. Send: stgmod.DataTrans{
  43. TotalTransfer: stg.OutputBytes,
  44. RequestCount: stg.TotalOutput,
  45. FailedRequestCount: stg.TotalInput - stg.SuccessInput,
  46. AvgTransfer: math2.DivOrDefault(stg.OutputBytes, stg.TotalOutput, 0),
  47. MinTransfer: stg.MinOutputBytes,
  48. MaxTransfer: stg.MaxOutputBytes,
  49. },
  50. StartTimestamp: data.StartTime,
  51. EndTimestamp: endTime,
  52. })
  53. }
  54. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。