Add DAG for collecting VM metrics from GCP
[osm/NG-SA.git] / src / osm_ngsa / dags / multivim_vm_metrics.py
index 6f03292..2e67ce1 100644 (file)
@@ -23,54 +23,56 @@ from airflow import DAG
 from airflow.decorators import task
 from osm_mon.core.common_db import CommonDbClient
 from osm_mon.core.config import Config
+from osm_mon.vim_connectors.azure import AzureCollector
+from osm_mon.vim_connectors.gcp import GcpCollector
 from osm_mon.vim_connectors.openstack import OpenStackCollector
 from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
 
 
 SCHEDULE_INTERVAL = 5
 COLLECTOR_MAX_METRICS_PER_TASK = 100
-SUPPORTED_VIM_TYPES = ["openstack", "vio"]
+SUPPORTED_VIM_TYPES = ["openstack", "vio", "azure", "gcp"]
 PROMETHEUS_PUSHGW = "pushgateway-prometheus-pushgateway:9091"
 PROMETHEUS_JOB_PREFIX = "airflow_osm_vm_metrics_"
 PROMETHEUS_METRICS = {
     "cpu_utilization": {
-        "metric_name": "cpu_utilization",
+        "metric_name": "osm_cpu_utilization",
         "metric_descr": "CPU usage percentage",
     },
     "average_memory_utilization": {
-        "metric_name": "average_memory_utilization",
+        "metric_name": "osm_average_memory_utilization",
         "metric_descr": "Volume of RAM in MB used by the VM",
     },
     "disk_read_ops": {
-        "metric_name": "disk_read_ops",
+        "metric_name": "osm_disk_read_ops",
         "metric_descr": "Number of read requests",
     },
     "disk_write_ops": {
-        "metric_name": "disk_write_ops",
+        "metric_name": "osm_disk_write_ops",
         "metric_descr": "Number of write requests",
     },
     "disk_read_bytes": {
-        "metric_name": "disk_read_bytes",
+        "metric_name": "osm_disk_read_bytes",
         "metric_descr": "Volume of reads in bytes",
     },
     "disk_write_bytes": {
-        "metric_name": "disk_write_bytes",
+        "metric_name": "osm_disk_write_bytes",
         "metric_descr": "Volume of writes in bytes",
     },
     "packets_received": {
-        "metric_name": "packets_received",
+        "metric_name": "osm_packets_received",
         "metric_descr": "Number of incoming packets",
     },
     "packets_sent": {
-        "metric_name": "packets_sent",
+        "metric_name": "osm_packets_sent",
         "metric_descr": "Number of outgoing packets",
     },
     "packets_in_dropped": {
-        "metric_name": "packets_in_dropped",
+        "metric_name": "osm_packets_in_dropped",
         "metric_descr": "Number of incoming dropped packets",
     },
     "packets_out_dropped": {
-        "metric_name": "packets_out_dropped",
+        "metric_name": "osm_packets_out_dropped",
         "metric_descr": "Number of outgoing dropped packets",
     },
 }
@@ -111,7 +113,6 @@ def create_dag(dag_id, dag_number, dag_description, vim_id):
         },
         description=dag_description,
         is_paused_upon_creation=False,
-        # schedule_interval=timedelta(minutes=SCHEDULE_INTERVAL),
         schedule_interval=f"*/{SCHEDULE_INTERVAL} * * * *",
         start_date=datetime(2022, 1, 1),
         tags=["osm", "vdu"],
@@ -227,6 +228,10 @@ def create_dag(dag_id, dag_number, dag_description, vim_id):
                     vim_type = "openstack"
             if vim_type == "openstack":
                 collector = OpenStackCollector(vim_account)
+            elif vim_type == "azure":
+                collector = AzureCollector(vim_account)
+            elif vim_type == "gcp":
+                collector = GcpCollector(vim_account)
             else:
                 logger.error(f"VIM type '{vim_type}' not supported")
                 return None