feat: remove useless fields in network topology (#2439)

Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
Gaius 2023-06-06 12:47:37 +08:00
parent f610ab9c0d
commit 691e884d35
No known key found for this signature in database
GPG Key ID: 8B4E5D1290FA2FFB
4 changed files with 88 additions and 206 deletions

View File

@ -173,7 +173,7 @@ const (
DefaultProbeInterval = 15 * time.Minute
// DefaultProbeCount is the default number of probing hosts.
DefaultProbeCount = 10
DefaultProbeCount = 5
)
const (

View File

@ -274,72 +274,16 @@ func (nt *networkTopology) Snapshot() error {
}
destHost := storage.DestHost{
Host: storage.Host{
ID: host.ID,
Type: host.Type.Name(),
Hostname: host.Hostname,
IP: host.IP,
Port: host.Port,
DownloadPort: host.DownloadPort,
OS: host.OS,
Platform: host.Platform,
PlatformFamily: host.PlatformFamily,
PlatformVersion: host.PlatformVersion,
KernelVersion: host.KernelVersion,
ConcurrentUploadLimit: host.ConcurrentUploadLimit.Load(),
ConcurrentUploadCount: host.ConcurrentUploadCount.Load(),
UploadCount: host.UploadCount.Load(),
UploadFailedCount: host.UploadFailedCount.Load(),
CPU: resource.CPU{
LogicalCount: host.CPU.LogicalCount,
PhysicalCount: host.CPU.PhysicalCount,
Percent: host.CPU.Percent,
ProcessPercent: host.CPU.ProcessPercent,
Times: resource.CPUTimes{
User: host.CPU.Times.User,
System: host.CPU.Times.System,
Idle: host.CPU.Times.Idle,
Nice: host.CPU.Times.Nice,
Iowait: host.CPU.Times.Iowait,
Irq: host.CPU.Times.Irq,
Softirq: host.CPU.Times.Softirq,
Steal: host.CPU.Times.Steal,
Guest: host.CPU.Times.Guest,
GuestNice: host.CPU.Times.GuestNice,
},
},
Memory: resource.Memory{
Total: host.Memory.Total,
Available: host.Memory.Available,
Used: host.Memory.Used,
UsedPercent: host.Memory.UsedPercent,
ProcessUsedPercent: host.Memory.ProcessUsedPercent,
Free: host.Memory.Free,
},
Network: resource.Network{
TCPConnectionCount: host.Network.TCPConnectionCount,
UploadTCPConnectionCount: host.Network.UploadTCPConnectionCount,
Location: host.Network.Location,
IDC: host.Network.IDC,
},
Disk: resource.Disk{
Total: host.Disk.Total,
Free: host.Disk.Free,
Used: host.Disk.Used,
UsedPercent: host.Disk.UsedPercent,
InodesTotal: host.Disk.InodesTotal,
InodesUsed: host.Disk.InodesUsed,
InodesFree: host.Disk.InodesFree,
InodesUsedPercent: host.Disk.InodesUsedPercent,
},
Build: resource.Build{
GitVersion: host.Build.GitVersion,
GitCommit: host.Build.GitCommit,
GoVersion: host.Build.GoVersion,
Platform: host.Build.Platform,
},
CreatedAt: host.CreatedAt.Load().UnixNano(),
UpdatedAt: host.UpdatedAt.Load().UnixNano(),
ID: host.ID,
Type: host.Type.Name(),
Hostname: host.Hostname,
IP: host.IP,
Port: host.Port,
Network: resource.Network{
TCPConnectionCount: host.Network.TCPConnectionCount,
UploadTCPConnectionCount: host.Network.UploadTCPConnectionCount,
Location: host.Network.Location,
IDC: host.Network.IDC,
},
Probes: storage.Probes{
AverageRTT: averageRTT.Nanoseconds(),
@ -360,72 +304,18 @@ func (nt *networkTopology) Snapshot() error {
if err = nt.storage.CreateNetworkTopology(storage.NetworkTopology{
ID: uuid.NewString(),
Host: storage.Host{
ID: host.ID,
Type: host.Type.Name(),
Hostname: host.Hostname,
IP: host.IP,
Port: host.Port,
DownloadPort: host.DownloadPort,
OS: host.OS,
Platform: host.Platform,
PlatformFamily: host.PlatformFamily,
PlatformVersion: host.PlatformVersion,
KernelVersion: host.KernelVersion,
ConcurrentUploadLimit: host.ConcurrentUploadLimit.Load(),
ConcurrentUploadCount: host.ConcurrentUploadCount.Load(),
UploadCount: host.UploadCount.Load(),
UploadFailedCount: host.UploadFailedCount.Load(),
CPU: resource.CPU{
LogicalCount: host.CPU.LogicalCount,
PhysicalCount: host.CPU.PhysicalCount,
Percent: host.CPU.Percent,
ProcessPercent: host.CPU.ProcessPercent,
Times: resource.CPUTimes{
User: host.CPU.Times.User,
System: host.CPU.Times.System,
Idle: host.CPU.Times.Idle,
Nice: host.CPU.Times.Nice,
Iowait: host.CPU.Times.Iowait,
Irq: host.CPU.Times.Irq,
Softirq: host.CPU.Times.Softirq,
Steal: host.CPU.Times.Steal,
Guest: host.CPU.Times.Guest,
GuestNice: host.CPU.Times.GuestNice,
},
},
Memory: resource.Memory{
Total: host.Memory.Total,
Available: host.Memory.Available,
Used: host.Memory.Used,
UsedPercent: host.Memory.UsedPercent,
ProcessUsedPercent: host.Memory.ProcessUsedPercent,
Free: host.Memory.Free,
},
Host: storage.SrcHost{
ID: host.ID,
Type: host.Type.Name(),
Hostname: host.Hostname,
IP: host.IP,
Port: host.Port,
Network: resource.Network{
TCPConnectionCount: host.Network.TCPConnectionCount,
UploadTCPConnectionCount: host.Network.UploadTCPConnectionCount,
Location: host.Network.Location,
IDC: host.Network.IDC,
},
Disk: resource.Disk{
Total: host.Disk.Total,
Free: host.Disk.Free,
Used: host.Disk.Used,
UsedPercent: host.Disk.UsedPercent,
InodesTotal: host.Disk.InodesTotal,
InodesUsed: host.Disk.InodesUsed,
InodesFree: host.Disk.InodesFree,
InodesUsedPercent: host.Disk.InodesUsedPercent,
},
Build: resource.Build{
GitVersion: host.Build.GitVersion,
GitCommit: host.Build.GitCommit,
GoVersion: host.Build.GoVersion,
Platform: host.Build.Platform,
},
CreatedAt: host.CreatedAt.Load().UnixNano(),
UpdatedAt: host.UpdatedAt.Load().UnixNano(),
},
DestHosts: destHosts,
CreatedAt: now.UnixNano(),

View File

@ -116,74 +116,6 @@ var (
UpdatedAt: time.Now().UnixNano(),
}
mockSeedHost = Host{
ID: "3",
Type: "super",
Hostname: "foo",
IP: "127.0.0.1",
Port: 8080,
DownloadPort: 8081,
OS: "linux",
Platform: "ubuntu",
PlatformFamily: "debian",
PlatformVersion: "1.0.0",
KernelVersion: "1.0.0",
ConcurrentUploadLimit: 100,
ConcurrentUploadCount: 40,
UploadCount: 20,
UploadFailedCount: 3,
CPU: resource.CPU{
LogicalCount: 24,
PhysicalCount: 12,
Percent: 0.8,
ProcessPercent: 0.4,
Times: resource.CPUTimes{
User: 100,
System: 101,
Idle: 102,
Nice: 103,
Iowait: 104,
Irq: 105,
Softirq: 106,
Steal: 107,
Guest: 108,
GuestNice: 109,
},
},
Memory: resource.Memory{
Total: 20,
Available: 19,
Used: 16,
UsedPercent: 0.7,
ProcessUsedPercent: 0.2,
Free: 15,
},
Network: resource.Network{
TCPConnectionCount: 400,
UploadTCPConnectionCount: 200,
Location: "china",
IDC: "e1",
},
Disk: resource.Disk{
Total: 100,
Free: 88,
Used: 56,
UsedPercent: 0.9,
InodesTotal: 200,
InodesUsed: 180,
InodesFree: 160,
InodesUsedPercent: 0.6,
},
Build: resource.Build{
GitVersion: "3.0.0",
GitCommit: "2bf4d5e",
GoVersion: "1.19",
Platform: "linux",
},
CreatedAt: time.Now().UnixNano(),
UpdatedAt: time.Now().UnixNano(),
}
mockParent = Parent{
ID: "4",
Tag: "m",
@ -215,15 +147,32 @@ var (
UpdatedAt: time.Now().UnixNano(),
}
mockNetworkTopology = NetworkTopology{
ID: "6",
Host: mockSeedHost,
DestHosts: mockDestHosts,
CreatedAt: time.Now().UnixNano(),
mockSrcHost = SrcHost{
ID: "3",
Type: "super",
Hostname: "foo",
IP: "127.0.0.1",
Port: 8080,
Network: resource.Network{
TCPConnectionCount: 400,
UploadTCPConnectionCount: 200,
Location: "china",
IDC: "e1",
},
}
mockDestHost = DestHost{
Host: mockHost,
ID: "2",
Type: "normal",
Hostname: "localhost",
IP: "127.0.0.1",
Port: 8080,
Network: resource.Network{
TCPConnectionCount: 400,
UploadTCPConnectionCount: 200,
Location: "china",
IDC: "e1",
},
Probes: Probes{
AverageRTT: 10,
CreatedAt: time.Now().UnixNano(),
@ -231,7 +180,14 @@ var (
},
}
mockDestHosts = append(make([]DestHost, 9), mockDestHost)
mockDestHosts = []DestHost{mockDestHost, mockDestHost, mockDestHost, mockDestHost, mockDestHost}
mockNetworkTopology = NetworkTopology{
ID: "6",
Host: mockSrcHost,
DestHosts: mockDestHosts,
CreatedAt: time.Now().UnixNano(),
}
)
func TestStorage_New(t *testing.T) {

View File

@ -212,10 +212,46 @@ type Probes struct {
UpdatedAt int64 `csv:"updatedAt"`
}
// SrcHost contains content for source host.
type SrcHost struct {
// ID is host id.
ID string `csv:"id"`
// Type is host type.
Type string `csv:"type"`
// Hostname is host name.
Hostname string `csv:"hostname"`
// IP is host ip.
IP string `csv:"ip"`
// Port is grpc service port.
Port int32 `csv:"port"`
// Network Stat.
Network resource.Network `csv:"network"`
}
// DestHost contains content for destination host.
type DestHost struct {
// Host is probe destination host.
Host Host `csv:"host"`
// ID is host id.
ID string `csv:"id"`
// Type is host type.
Type string `csv:"type"`
// Hostname is host name.
Hostname string `csv:"hostname"`
// IP is host ip.
IP string `csv:"ip"`
// Port is grpc service port.
Port int32 `csv:"port"`
// Network Stat.
Network resource.Network `csv:"network"`
// Probes is the network information probed to destination host.
Probes Probes `csv:"probes"`
@ -227,10 +263,10 @@ type NetworkTopology struct {
ID string `csv:"id"`
// Host is probe source host.
Host Host `csv:"host"`
Host SrcHost `csv:"host"`
// DestHosts is the destination hosts probed from source host.
DestHosts []DestHost `csv:"destHosts" csv[]:"10"`
DestHosts []DestHost `csv:"destHosts" csv[]:"5"`
// CreatedAt is network topology create nanosecond time.
CreatedAt int64 `csv:"createdAt"`