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.7 kB

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

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