diff --git a/api/cron/job_telemetry.go b/api/cron/job_telemetry.go index 689ca4fea..6ca2755a0 100644 --- a/api/cron/job_telemetry.go +++ b/api/cron/job_telemetry.go @@ -74,8 +74,10 @@ type ( } EndpointTelemetryData struct { - Count int `json:"Count"` - Endpoints []EndpointEnvironmentTelemetryData `json:"Endpoints"` + Count int `json:"Count"` + DockerEndpointCount int `json:"DockerEndpointCount"` + KubernetesEndpointCount int `json:"KubernetesEndpointCount"` + Endpoints []EndpointEnvironmentTelemetryData `json:"Endpoints"` // TODO: revamp //TLSEndpointCount int `json:"TLSEndpointCount"` @@ -351,6 +353,7 @@ func computeEndpointTelemetry(telemetryData *TelemetryData, dataStore portainer. } endpointsTelemetry := make([]EndpointEnvironmentTelemetryData, 0) + dockerEndpoints, kubernetesEndpoints := 0, 0 for _, endpoint := range endpoints { endpointTelemetry := EndpointEnvironmentTelemetryData{} @@ -360,24 +363,31 @@ func computeEndpointTelemetry(telemetryData *TelemetryData, dataStore portainer. endpointTelemetry.Agent = false endpointTelemetry.Edge = false endpointTelemetry.Docker = computeEndpointEnvironmentDockerTelemetry(&endpoint) + dockerEndpoints++ case portainer.AgentOnDockerEnvironment: endpointTelemetry.Environment = EndpointEnvironmentDocker endpointTelemetry.Agent = true endpointTelemetry.Edge = false endpointTelemetry.Docker = computeEndpointEnvironmentDockerTelemetry(&endpoint) + dockerEndpoints++ case portainer.EdgeAgentEnvironment: endpointTelemetry.Environment = EndpointEnvironmentDocker endpointTelemetry.Agent = true endpointTelemetry.Edge = true endpointTelemetry.Docker = computeEndpointEnvironmentDockerTelemetry(&endpoint) + dockerEndpoints++ + default: + kubernetesEndpoints++ } endpointsTelemetry = append(endpointsTelemetry, endpointTelemetry) } telemetryData.Endpoint = EndpointTelemetryData{ - Count: len(endpoints), - Endpoints: endpointsTelemetry, + Count: len(endpoints), + DockerEndpointCount: dockerEndpoints, + KubernetesEndpointCount: kubernetesEndpoints, + Endpoints: endpointsTelemetry, } return nil diff --git a/api/cron/job_telemetry_test.go b/api/cron/job_telemetry_test.go index 2dff8ea0a..ad9e60ac6 100644 --- a/api/cron/job_telemetry_test.go +++ b/api/cron/job_telemetry_test.go @@ -13,13 +13,13 @@ import ( ) // max number of instances -const instanceCount = 3000 +const instanceCount = 1500 // min date for initial report -var minInitialReportDate = time.Date(2020, 1, 0, 0, 0, 0, 0, time.UTC).Unix() +var minInitialReportDate = time.Date(2020, 3, 0, 0, 0, 0, 0, time.UTC).Unix() // max date for initial report -var maxInitialReportDate = time.Date(2020, 5, 0, 0, 0, 0, 0, time.UTC).Unix() +var maxInitialReportDate = time.Date(2020, 4, 0, 0, 0, 0, 0, time.UTC).Unix() // edge compute const edgeComputeMaxScheduleCount = 10 @@ -149,7 +149,7 @@ func TestGenerator(t *testing.T) { instanceID := token.String() - reportsPerInstance := rand.Intn(12) + 1 + reportsPerInstance := rand.Intn(30) + 1 log.Printf("Instance %s (#%d): generating %d reports", instanceID, i, reportsPerInstance) reportDateTime := utilsRandDateTime(minInitialReportDate, maxInitialReportDate) @@ -174,7 +174,7 @@ func TestGenerator(t *testing.T) { t.Fatalf("an error occured: %s", err) } - reportDateTime = reportDateTime.AddDate(0, 0, 7) + reportDateTime = reportDateTime.AddDate(0, 0, 1) } } } @@ -246,24 +246,36 @@ func randomEndpointTelemetryData() EndpointTelemetryData { endpointCount := rand.Intn(endpointMaxCount) endpoints := make([]EndpointEnvironmentTelemetryData, 0) + dockerEndpoints, KubernetesEndpoints := 0, 0 for i := 0; i < endpointCount; i++ { - endpointEnvTelemetry := randomEndpointEnvironmentTelemetryData() + endpointEnvTelemetry, dockerEnv := randomEndpointEnvironmentTelemetryData() + + if dockerEnv { + dockerEndpoints++ + } else { + KubernetesEndpoints++ + } + endpoints = append(endpoints, endpointEnvTelemetry) } return EndpointTelemetryData{ - Count: endpointCount, - Endpoints: endpoints, + Count: endpointCount, + Endpoints: endpoints, + DockerEndpointCount: dockerEndpoints, + KubernetesEndpointCount: KubernetesEndpoints, } } -func randomEndpointEnvironmentTelemetryData() EndpointEnvironmentTelemetryData { +func randomEndpointEnvironmentTelemetryData() (EndpointEnvironmentTelemetryData, bool) { endpointEnvTelemetry := EndpointEnvironmentTelemetryData{ Environment: EndpointEnvironmentDocker, Agent: utilsRandBool(), Edge: false, } + dockerEnvironment := true + if utilsRandBool() { endpointEnvTelemetry.Environment = EndpointEnvironmentKubernetes } @@ -291,13 +303,14 @@ func randomEndpointEnvironmentTelemetryData() EndpointEnvironmentTelemetryData { } } else { + dockerEnvironment = false endpointEnvTelemetry.Kubernetes = EndpointEnvironmentKubernetesTelemetryData{ Version: utilsRandChoice(kubernetesVersions), Nodes: rand.Intn(kubernetesNodeMaxCount) + 1, } } - return endpointEnvTelemetry + return endpointEnvTelemetry, dockerEnvironment } func randomEndpointGroupTelemetryData() EndpointGroupTelemetryData {