From d984ea22adcc8189085adc1c10e48641474e2327 Mon Sep 17 00:00:00 2001 From: Benjamin Diaz Date: Thu, 1 Aug 2019 11:25:26 -0300 Subject: [PATCH 1/4] Adds summary and overview section and diagram to mon doc Signed-off-by: Benjamin Diaz --- 04-mon.md | 28 +++++++++++++++++++++++++++- assets/MON_Overview_Diagram.jpg | Bin 0 -> 34487 bytes 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 assets/MON_Overview_Diagram.jpg diff --git a/04-mon.md b/04-mon.md index c711d87..e67cb61 100644 --- a/04-mon.md +++ b/04-mon.md @@ -1 +1,27 @@ -# Monitoring module (MON) \ No newline at end of file +# Monitoring module (MON) + +## Summary + +MON accomplishes the following tasks: + +* Collects VDU metrics exposed by the VIM. +* Collects VNF metrics exposed by the VNF via Juju charms. +* Collects infrastructure metrics of external components, such as VIMs, WIMs and SDN controllers. +* Stores metrics in a TSDB. +* Manages and evaluates alarms related to VNF/VDU metrics. + +## Overview + +![](assets/MON_Overview_Diagram.jpg) + +MON has the following components: + +* MON Server: Handles alarms CRUD operations, through messages in the Kafka bus. +* MON Collector: Collects VNF related metrics from VIMs and VCA and infrastructure metrics from external components, and then exports them to a TSDB. It uses a plugin model both for collectors and for backends. +* MON Evaluator: Evaluates alarms and sends notifications through the Kafka bus when they trigger. + +## MON Server + +## MON Collector + +## MON Evaluator \ No newline at end of file diff --git a/assets/MON_Overview_Diagram.jpg b/assets/MON_Overview_Diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c804347a1256c0bfdcd77626a488df107dfabd27 GIT binary patch literal 34487 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 Date: Fri, 2 Aug 2019 12:27:32 -0300 Subject: [PATCH 2/4] Adds MON server section and diagram Signed-off-by: Benjamin Diaz --- 04-mon.md | 9 +++++++++ assets/MON_Server_Create_Alarm.jpg | Bin 0 -> 20229 bytes 2 files changed, 9 insertions(+) create mode 100644 assets/MON_Server_Create_Alarm.jpg diff --git a/04-mon.md b/04-mon.md index e67cb61..431d33a 100644 --- a/04-mon.md +++ b/04-mon.md @@ -22,6 +22,15 @@ MON has the following components: ## MON Server +![](assets/MON_Server_Create_Alarm.jpg) + +MON Server subscribes to the message bus and waits for the following messages: + +* topic: alarm_request - key: create_alarm_request +* topic: alarm_request - key: delete_alarm_request + +It performs the corresponding action and sends a response through a unique topic made of 'alarm_response_' plus a correlation_id, which is a field contained in the request message. + ## MON Collector ## MON Evaluator \ No newline at end of file diff --git a/assets/MON_Server_Create_Alarm.jpg b/assets/MON_Server_Create_Alarm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4b6b9d28af054146274084432fd9573755b7ab1 GIT binary patch literal 20229 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 z Date: Mon, 5 Aug 2019 12:41:01 -0300 Subject: [PATCH 3/4] Adds MON Collector section and diagram Signed-off-by: Benjamin Diaz --- 04-mon.md | 11 +++++++++++ assets/MON_Collector_VNF_Metric.jpg | Bin 0 -> 26471 bytes 2 files changed, 11 insertions(+) create mode 100644 assets/MON_Collector_VNF_Metric.jpg diff --git a/04-mon.md b/04-mon.md index 431d33a..6d510c6 100644 --- a/04-mon.md +++ b/04-mon.md @@ -33,4 +33,15 @@ It performs the corresponding action and sends a response through a unique topic ## MON Collector +![](assets/MON_Collector_VNF_Metric.jpg) + +MON Collector handles two different types of metrics: + +* VNF related metrics: Provided by the VIM (eg. cpu utilization of a VDU) or directly from the VNF itself (eg. number of users connected). +* Infrastructure metrics: Correspond to metrics regarding external components such as VIMs (eg. status, hypervisor capacity, etc), WIMs and SDN controllers. + +The module uses a plugin model to do the metric collection. In every collection cycle, it iterates over the running VNFs (VNFRs) as obtains the declared metrics in their VNFD. If it is a VIM provided metric (nfvi_metric), it selects the corresponding VIM plugin for doing that collection. In the case of an application metric (defined using proxy charms and the juju metrics framework), it is done through the Juju plugin. + +Similar situation happens for external components. The module iterates over the registered VIMs, SDNCs and WIMs, and does collection of the status and other metrics through the corresponding plugin (eg. OpenStack, ONOS). + ## MON Evaluator \ No newline at end of file diff --git a/assets/MON_Collector_VNF_Metric.jpg b/assets/MON_Collector_VNF_Metric.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d83486e6338e3735eca7671868c04810b820cda8 GIT binary patch literal 26471 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 literal 0 HcmV?d00001 -- GitLab From 2c0124d3acab201a0b2e1eb9e2c7765b5528db23 Mon Sep 17 00:00:00 2001 From: Benjamin Diaz Date: Tue, 6 Aug 2019 13:37:47 -0300 Subject: [PATCH 4/4] Adds MON Evaluator section and diagram Signed-off-by: Benjamin Diaz --- 04-mon.md | 16 ++++++++++++++-- assets/MON_Evaluator_Evaluate_Alarm.jpg | Bin 0 -> 17581 bytes 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 assets/MON_Evaluator_Evaluate_Alarm.jpg diff --git a/04-mon.md b/04-mon.md index 6d510c6..5d29165 100644 --- a/04-mon.md +++ b/04-mon.md @@ -17,7 +17,7 @@ MON accomplishes the following tasks: MON has the following components: * MON Server: Handles alarms CRUD operations, through messages in the Kafka bus. -* MON Collector: Collects VNF related metrics from VIMs and VCA and infrastructure metrics from external components, and then exports them to a TSDB. It uses a plugin model both for collectors and for backends. +* MON Collector: Collects VNF related metrics from VIMs and VCA and infrastructure metrics from external components, and then exports them to a Prometheus TSDB. It uses a plugin model both for collectors and for backends. * MON Evaluator: Evaluates alarms and sends notifications through the Kafka bus when they trigger. ## MON Server @@ -31,6 +31,8 @@ MON Server subscribes to the message bus and waits for the following messages: It performs the corresponding action and sends a response through a unique topic made of 'alarm_response_' plus a correlation_id, which is a field contained in the request message. +Alarms are stored in MON database in the OSM MySQL engine. + ## MON Collector ![](assets/MON_Collector_VNF_Metric.jpg) @@ -44,4 +46,14 @@ The module uses a plugin model to do the metric collection. In every collection Similar situation happens for external components. The module iterates over the registered VIMs, SDNCs and WIMs, and does collection of the status and other metrics through the corresponding plugin (eg. OpenStack, ONOS). -## MON Evaluator \ No newline at end of file +## MON Evaluator + +![](assets/MON_Evaluator_Evaluate_Alarm.jpg) + +MON Evaluator iterates over the alarms stored in the system and evaluates the corresponding metric by querying the TSDB against the alarm defined threshold. Then it published to the message bus a message containing the alarm info and the corresponding status. + +An alarm can have three status: + +* ok: The metric has not crossed the threshold. +* alarm: The metric crossed the threshold. +* insufficient-data: There is no metric data in the TSDB. \ No newline at end of file diff --git a/assets/MON_Evaluator_Evaluate_Alarm.jpg b/assets/MON_Evaluator_Evaluate_Alarm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..930380f6ba54874f233073d23c443c457ce0967b GIT binary patch literal 17581 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

s) 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 flUJ^-6@J