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.

stats_log.go 1.4 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package ticktock
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/logger"
  4. "gitlink.org.cn/cloudream/common/utils/reflect2"
  5. stgtypes "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/types"
  6. jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types"
  7. "gitlink.org.cn/cloudream/jcs-pub/common/types/datamap"
  8. )
  9. type StatsLog struct {
  10. }
  11. func (j *StatsLog) Name() string {
  12. return reflect2.TypeNameOf[StatsLog]()
  13. }
  14. func (j *StatsLog) Execute(t *TickTock) {
  15. j.logGlobalObjectStats(t)
  16. }
  17. func (j *StatsLog) logGlobalObjectStats(t *TickTock) {
  18. log := logger.WithType[StatsLog]("Event")
  19. cnt, size, err := t.db.Object().Summary(t.db.DefCtx())
  20. if err != nil {
  21. log.Warnf("get object summary: %v", err)
  22. return
  23. }
  24. usIDs, err := t.db.UserSpace().GetAllIDs(t.db.DefCtx())
  25. if err != nil {
  26. log.Warnf("get user space ids: %v", err)
  27. return
  28. }
  29. var logUsIDs []jcstypes.UserSpaceID
  30. var usStats []stgtypes.ShardStoreStats
  31. details := t.spaceMeta.GetMany(usIDs)
  32. for _, d := range details {
  33. if d.UserSpace.ShardStore == nil {
  34. continue
  35. }
  36. store, err := t.stgPool.GetShardStore(d)
  37. if err != nil {
  38. log.Warnf("get shard store %v: %v", d, err)
  39. continue
  40. }
  41. logUsIDs = append(logUsIDs, d.UserSpace.UserSpaceID)
  42. usStats = append(usStats, store.Stats())
  43. }
  44. t.evtPub.Publish(&datamap.BodyGlobalObjectStats{
  45. TotalObjectCount: cnt,
  46. TotalDataSize: size,
  47. UserSpaceIDs: logUsIDs,
  48. UserSpaceStats: usStats,
  49. })
  50. }

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