mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-03 19:48:45 +00:00
[TRA-4189] Traffic Volume in GB for General Status and telemetry (#696)
This commit is contained in:
committed by
GitHub
parent
a9a61edd50
commit
843ac722c9
@@ -117,8 +117,6 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
for item := range outputItems {
|
for item := range outputItems {
|
||||||
providers.EntryAdded()
|
|
||||||
|
|
||||||
extension := extensionsMap[item.Protocol.Name]
|
extension := extensionsMap[item.Protocol.Name]
|
||||||
resolvedSource, resolvedDestionation := resolveIP(item.ConnectionInfo)
|
resolvedSource, resolvedDestionation := resolveIP(item.ConnectionInfo)
|
||||||
mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestionation)
|
mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestionation)
|
||||||
@@ -147,6 +145,9 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
providers.EntryAdded(len(data))
|
||||||
|
|
||||||
connection.SendText(string(data))
|
connection.SendText(string(data))
|
||||||
|
|
||||||
servicemap.GetInstance().NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol)
|
servicemap.GetInstance().NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol)
|
||||||
|
@@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
type GeneralStats struct {
|
type GeneralStats struct {
|
||||||
EntriesCount int
|
EntriesCount int
|
||||||
|
EntriesVolumeInGB float64
|
||||||
FirstEntryTimestamp int
|
FirstEntryTimestamp int
|
||||||
LastEntryTimestamp int
|
LastEntryTimestamp int
|
||||||
}
|
}
|
||||||
@@ -21,8 +22,9 @@ func GetGeneralStats() GeneralStats {
|
|||||||
return generalStats
|
return generalStats
|
||||||
}
|
}
|
||||||
|
|
||||||
func EntryAdded() {
|
func EntryAdded(size int) {
|
||||||
generalStats.EntriesCount++
|
generalStats.EntriesCount++
|
||||||
|
generalStats.EntriesVolumeInGB += float64(size) / (1 << 30)
|
||||||
|
|
||||||
currentTimestamp := int(time.Now().Unix())
|
currentTimestamp := int(time.Now().Unix())
|
||||||
|
|
||||||
@@ -32,5 +34,3 @@ func EntryAdded() {
|
|||||||
|
|
||||||
generalStats.LastEntryTimestamp = currentTimestamp
|
generalStats.LastEntryTimestamp = currentTimestamp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -12,6 +12,10 @@ func TestNoEntryAddedCount(t *testing.T) {
|
|||||||
if entriesStats.EntriesCount != 0 {
|
if entriesStats.EntriesCount != 0 {
|
||||||
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesCount)
|
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if entriesStats.EntriesVolumeInGB != 0 {
|
||||||
|
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesVolumeInGB)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEntryAddedCount(t *testing.T) {
|
func TestEntryAddedCount(t *testing.T) {
|
||||||
@@ -20,7 +24,7 @@ func TestEntryAddedCount(t *testing.T) {
|
|||||||
for _, entriesCount := range tests {
|
for _, entriesCount := range tests {
|
||||||
t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) {
|
||||||
for i := 0; i < entriesCount; i++ {
|
for i := 0; i < entriesCount; i++ {
|
||||||
providers.EntryAdded()
|
providers.EntryAdded(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
entriesStats := providers.GetGeneralStats()
|
entriesStats := providers.GetGeneralStats()
|
||||||
@@ -29,7 +33,38 @@ func TestEntryAddedCount(t *testing.T) {
|
|||||||
t.Errorf("unexpected result - expected: %v, actual: %v", entriesCount, entriesStats.EntriesCount)
|
t.Errorf("unexpected result - expected: %v, actual: %v", entriesCount, entriesStats.EntriesCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if entriesStats.EntriesVolumeInGB != 0 {
|
||||||
|
t.Errorf("unexpected result - expected: %v, actual: %v", 0, entriesStats.EntriesVolumeInGB)
|
||||||
|
}
|
||||||
|
|
||||||
t.Cleanup(providers.ResetGeneralStats)
|
t.Cleanup(providers.ResetGeneralStats)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEntryAddedVolume(t *testing.T) {
|
||||||
|
// 6 bytes + 4 bytes
|
||||||
|
tests := [][]byte{[]byte("volume"), []byte("test")}
|
||||||
|
var expectedEntriesCount int
|
||||||
|
var expectedVolumeInGB float64
|
||||||
|
|
||||||
|
for _, data := range tests {
|
||||||
|
t.Run(fmt.Sprintf("%d", len(data)), func(t *testing.T) {
|
||||||
|
expectedEntriesCount++
|
||||||
|
expectedVolumeInGB += float64(len(data)) / (1 << 30)
|
||||||
|
|
||||||
|
providers.EntryAdded(len(data))
|
||||||
|
|
||||||
|
entriesStats := providers.GetGeneralStats()
|
||||||
|
|
||||||
|
if entriesStats.EntriesCount != expectedEntriesCount {
|
||||||
|
t.Errorf("unexpected result - expected: %v, actual: %v", expectedEntriesCount, entriesStats.EntriesCount)
|
||||||
|
}
|
||||||
|
|
||||||
|
if entriesStats.EntriesVolumeInGB != expectedVolumeInGB {
|
||||||
|
t.Errorf("unexpected result - expected: %v, actual: %v", expectedVolumeInGB, entriesStats.EntriesVolumeInGB)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -53,6 +53,7 @@ func ReportTapTelemetry(apiProvider *apiserver.Provider, args interface{}, start
|
|||||||
"args": string(argsBytes),
|
"args": string(argsBytes),
|
||||||
"executionTimeInSeconds": int(time.Since(startTime).Seconds()),
|
"executionTimeInSeconds": int(time.Since(startTime).Seconds()),
|
||||||
"apiCallsCount": generalStats["EntriesCount"],
|
"apiCallsCount": generalStats["EntriesCount"],
|
||||||
|
"trafficVolumeInGB": generalStats["EntriesVolumeInGB"],
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sendTelemetry(argsMap); err != nil {
|
if err := sendTelemetry(argsMap); err != nil {
|
||||||
|
Reference in New Issue
Block a user