From 35b9ecad8f4badc51d20383ece8bf8648dd5ab32 Mon Sep 17 00:00:00 2001 From: luiscal4a <l.delacal@alumnos.upm.es> Date: Wed, 9 Nov 2022 20:28:58 +0100 Subject: [PATCH] - Added endpoint_id field to the monitoring of KPIs in the Centralized Attack Detector. - Minor fixes. --- manifests/monitoringservice.yaml | 152 +++++++++--------- ...alizedattackdetectorServiceServicerImpl.py | 14 +- 2 files changed, 87 insertions(+), 79 deletions(-) diff --git a/manifests/monitoringservice.yaml b/manifests/monitoringservice.yaml index 39acfd523..329082bba 100644 --- a/manifests/monitoringservice.yaml +++ b/manifests/monitoringservice.yaml @@ -30,23 +30,23 @@ spec: terminationGracePeriodSeconds: 5 restartPolicy: Always containers: - - name: metricsdb - image: questdb/questdb - ports: - - name: http - containerPort: 9000 - protocol: TCP - - name: influxdb - containerPort: 9009 - protocol: TCP - - name: postgre - containerPort: 8812 - protocol: TCP - env: - - name: QDB_CAIRO_COMMIT_LAG - value: "1000" - - name: QDB_CAIRO_MAX_UNCOMMITTED_ROWS - value: "100000" + - name: metricsdb + image: questdb/questdb + ports: + - name: http + containerPort: 9000 + protocol: TCP + - name: influxdb + containerPort: 9009 + protocol: TCP + - name: postgre + containerPort: 8812 + protocol: TCP + env: + - name: QDB_CAIRO_COMMIT_LAG + value: "1000" + - name: QDB_CAIRO_MAX_UNCOMMITTED_ROWS + value: "100000" --- apiVersion: apps/v1 kind: Deployment @@ -65,37 +65,37 @@ spec: terminationGracePeriodSeconds: 5 restartPolicy: Always containers: - - name: server - image: registry.gitlab.com/teraflow-h2020/controller/monitoring:latest - imagePullPolicy: Always - ports: - - name: grpc - containerPort: 7070 - protocol: TCP - env: - - name: LOG_LEVEL - value: "INFO" - - name: METRICSDB_HOSTNAME - value: "monitoringservice" - - name: METRICSDB_ILP_PORT - value: "9009" - - name: METRICSDB_REST_PORT - value: "9000" - - name: METRICSDB_TABLE - value: "monitoring" - readinessProbe: - exec: - command: ["/bin/grpc_health_probe", "-addr=:7070"] - livenessProbe: - exec: - command: ["/bin/grpc_health_probe", "-addr=:7070"] - resources: - requests: - cpu: 250m - memory: 512Mi - limits: - cpu: 700m - memory: 1024Mi + - name: server + image: registry.gitlab.com/teraflow-h2020/controller/monitoring:latest + imagePullPolicy: Always + ports: + - name: grpc + containerPort: 7070 + protocol: TCP + env: + - name: LOG_LEVEL + value: "DEBUG" + - name: METRICSDB_HOSTNAME + value: "monitoringservice" + - name: METRICSDB_ILP_PORT + value: "9009" + - name: METRICSDB_REST_PORT + value: "9000" + - name: METRICSDB_TABLE + value: "monitoring" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:7070"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:7070"] + resources: + requests: + cpu: 250m + memory: 512Mi + limits: + cpu: 700m + memory: 1024Mi --- apiVersion: v1 kind: Service @@ -106,22 +106,22 @@ spec: selector: app: monitoringservice ports: - - name: grpc - protocol: TCP - port: 7070 - targetPort: 7070 - - name: http - protocol: TCP - port: 9000 - targetPort: 9000 - - name: influxdb - protocol: TCP - port: 9009 - targetPort: 9009 - - name: postgre - protocol: TCP - port: 8812 - targetPort: 8812 + - name: grpc + protocol: TCP + port: 7070 + targetPort: 7070 + - name: http + protocol: TCP + port: 9000 + targetPort: 9000 + - name: influxdb + protocol: TCP + port: 9009 + targetPort: 9009 + - name: postgre + protocol: TCP + port: 8812 + targetPort: 8812 --- apiVersion: networking.k8s.io/v1 @@ -131,16 +131,16 @@ metadata: spec: podSelector: matchLabels: - app: monitoringservice + app: monitoringservice ingress: - - from: [] - ports: - - port: 7070 - - port: 8812 - - from: - - podSelector: - matchLabels: - app: monitoringservice - ports: - - port: 9009 - - port: 9000 + - from: [] + ports: + - port: 7070 + - port: 8812 + - from: + - podSelector: + matchLabels: + app: monitoringservice + ports: + - port: 9009 + - port: 9000 diff --git a/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py b/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py index 9981dfa9b..305fd979b 100644 --- a/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py +++ b/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py @@ -123,10 +123,14 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto -output: KPI identifier representing the KPI """ - def create_kpi(self, client: MonitoringClient, service_id, kpi_name, kpi_description, kpi_sample_type): + def create_kpi( + self, client: MonitoringClient, service_id, device_id, endpoint_id, kpi_name, kpi_description, kpi_sample_type + ): kpidescriptor = KpiDescriptor() kpidescriptor.kpi_description = kpi_description kpidescriptor.service_id.service_uuid.uuid = service_id.service_uuid.uuid + kpidescriptor.device_id.device_uuid.uuid = device_id.device_uuid.uuid + kpidescriptor.endpoint_id.endpoint_uuid.uuid = endpoint_id.endpoint_uuid.uuid kpidescriptor.kpi_sample_type = kpi_sample_type new_kpi = client.SetKpi(kpidescriptor) @@ -141,12 +145,14 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto -output: None """ - def create_kpis(self, service_id): + def create_kpis(self, service_id, device_id, endpoint_id): # for now, all the KPIs are created for all the services from which requests are received for kpi in self.monitored_kpis: created_kpi = self.create_kpi( self.monitoring_client, service_id, + device_id, + endpoint_id, kpi, self.monitored_kpis[kpi]["description"], self.monitored_kpis[kpi]["kpi_sample_type"], @@ -428,10 +434,12 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto self.inference_results.put({"output": cryptomining_detector_output_serialized, "timestamp": datetime.now()}) service_id = request.service_id + device_id = request.endpoint_id.device_id + endpoint_id = request.endpoint_id # Check if a request of a new service has been received and, if so, create the monitored KPIs for that service if service_id not in self.service_ids: - self.create_kpis(service_id) + self.create_kpis(service_id, device_id, endpoint_id) self.service_ids.append(service_id) # Only notify Attack Mitigator when a cryptomining connection has been detected -- GitLab