metrics.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package models
  2. import (
  3. "time"
  4. proxy "github.com/gravitl/netclient/nmproxy/metrics"
  5. )
  6. // Metrics - metrics struct
  7. type Metrics struct {
  8. Network string `json:"network" bson:"network" yaml:"network"`
  9. NodeID string `json:"node_id" bson:"node_id" yaml:"node_id"`
  10. NodeName string `json:"node_name" bson:"node_name" yaml:"node_name"`
  11. IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
  12. Connectivity map[string]Metric `json:"connectivity" bson:"connectivity" yaml:"connectivity"`
  13. FailoverPeers map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"`
  14. ProxyMetrics map[string]proxy.Metric `json:"proxy_metrics" bson:"proxy_metrics" yaml:"proxy_metrics"`
  15. }
  16. // Metric - holds a metric for data between nodes
  17. type Metric struct {
  18. NodeName string `json:"node_name" bson:"node_name" yaml:"node_name"`
  19. IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
  20. Uptime int64 `json:"uptime" bson:"uptime" yaml:"uptime"`
  21. TotalTime int64 `json:"totaltime" bson:"totaltime" yaml:"totaltime"`
  22. Latency int64 `json:"latency" bson:"latency" yaml:"latency"`
  23. TotalReceived int64 `json:"totalreceived" bson:"totalreceived" yaml:"totalreceived"`
  24. TotalSent int64 `json:"totalsent" bson:"totalsent" yaml:"totalsent"`
  25. ActualUptime time.Duration `json:"actualuptime" bson:"actualuptime" yaml:"actualuptime"`
  26. PercentUp float64 `json:"percentup" bson:"percentup" yaml:"percentup"`
  27. Connected bool `json:"connected" bson:"connected" yaml:"connected"`
  28. }
  29. // IDandAddr - struct to hold ID and primary Address
  30. type IDandAddr struct {
  31. ID string `json:"id" bson:"id" yaml:"id"`
  32. Address string `json:"address" bson:"address" yaml:"address"`
  33. Name string `json:"name" bson:"name" yaml:"name"`
  34. IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
  35. }
  36. // PeerMap - peer map for ids and addresses in metrics
  37. type PeerMap map[string]IDandAddr
  38. // MetricsMap - map for holding multiple metrics in memory
  39. type MetricsMap map[string]Metrics
  40. // NetworkMetrics - metrics model for all nodes in a network
  41. type NetworkMetrics struct {
  42. Nodes MetricsMap `json:"nodes" bson:"nodes" yaml:"nodes"`
  43. }