import peewee
from osm_mon.collector.backends.prometheus import PrometheusBackend
+from osm_mon.collector.infra_collectors.onos import OnosInfraCollector
from osm_mon.collector.infra_collectors.openstack import OpenstackInfraCollector
-from osm_mon.collector.metric import Metric
from osm_mon.collector.vnf_collectors.juju import VCACollector
from osm_mon.collector.vnf_collectors.openstack import OpenstackCollector
from osm_mon.collector.vnf_collectors.vmware import VMwareCollector
+from osm_mon.collector.vnf_collectors.vio import VIOCollector
from osm_mon.core.common_db import CommonDbClient
from osm_mon.core.config import Config
from osm_mon.core.database import DatabaseManager
VIM_COLLECTORS = {
"openstack": OpenstackCollector,
- "vmware": VMwareCollector
+ "vmware": VMwareCollector,
+ "vio": VIOCollector
}
VIM_INFRA_COLLECTORS = {
"openstack": OpenstackInfraCollector
}
+SDN_INFRA_COLLECTORS = {
+ "onos": OnosInfraCollector
+}
METRIC_BACKENDS = [
PrometheusBackend
]
log.exception("Error collecting metrics")
def _collect_vim_metrics(self, vnfr: dict, vim_account_id: str):
- # TODO(diazb) Add support for vrops and aws
+ # TODO(diazb) Add support for aws
database_manager = DatabaseManager(self.conf)
vim_type = database_manager.get_vim_type(vim_account_id)
if vim_type in VIM_COLLECTORS:
vim_type = database_manager.get_vim_type(vim_account_id)
if vim_type in VIM_INFRA_COLLECTORS:
collector = VIM_INFRA_COLLECTORS[vim_type](self.conf, vim_account_id)
- status = collector.is_vim_ok()
- status_metric = Metric({'vim_id': vim_account_id}, 'vim_status', status)
- self.queue.put(status_metric)
+ metrics = collector.collect()
+ for metric in metrics:
+ self.queue.put(metric)
else:
log.debug("vimtype %s is not supported.", vim_type)
+ def _collect_sdnc_infra_metrics(self, sdnc_id: str):
+ common_db = CommonDbClient(self.conf)
+ sdn_type = common_db.get_sdnc(sdnc_id)['type']
+ if sdn_type in SDN_INFRA_COLLECTORS:
+ collector = SDN_INFRA_COLLECTORS[sdn_type](self.conf, sdnc_id)
+ metrics = collector.collect()
+ for metric in metrics:
+ self.queue.put(metric)
+ else:
+ log.debug("sdn_type %s is not supported.", sdn_type)
+
def _collect_vca_metrics(self, vnfr: dict):
log.debug('_collect_vca_metrics')
log.debug('vnfr: %s', vnfr)
args=(vim['_id'],))
processes.append(p)
p.start()
+ sdncs = self.common_db.get_sdncs()
+ for sdnc in sdncs:
+ p = multiprocessing.Process(target=self._collect_sdnc_infra_metrics,
+ args=(sdnc['_id'],))
+ processes.append(p)
+ p.start()
for process in processes:
process.join(timeout=10)
metrics = []