From d2de3f134eef91e69dc8702edcd24ae570269f13 Mon Sep 17 00:00:00 2001 From: "k4.rahul" Date: Wed, 24 May 2023 02:03:49 +0530 Subject: [PATCH 1/3] feature 10945 Service KPI of VNF using exporter endpoint Signed-off-by: k4.rahul --- 05-osm-usage.md | 21 +++++++++++++++++++++ assets/700px_service_kpi_vnf.png | Bin 0 -> 43767 bytes 2 files changed, 21 insertions(+) create mode 100644 assets/700px_service_kpi_vnf.png diff --git a/05-osm-usage.md b/05-osm-usage.md index 52353ec..e6f7d22 100644 --- a/05-osm-usage.md +++ b/05-osm-usage.md @@ -2038,3 +2038,24 @@ From the UI: - Fill in the form, adding at least the member vnf index: ![VM Migration](assets/500px-VM_Migration.png) + +## VNF Service KPI of VNF using Exporter Endpoint + +### The Service KPI (Key Performance Indicator) feature in OSM enables efficient monitoring and assurance of network service performance. With the introduction of the Exporter Endpoint, users can now collect Service KPIs directly from VNFs. + +Reference diagram: +![Service KPI of VNF using Exporter Endpoint Reference Diagram](assets/700px_service_kpi_vnf.png) + +### At the VNF package level: +- Ensure that the VNF package includes the necessary components for exporting metrics, including the exporter endpoints along with Prometheus job template. + +```yaml +vnfd: + df: + exporters-endpoints: + metric-path: /metrics + metric-port: 9100 + external-connection-point-ref: vnf-cp0-ext +``` +- Instantiate the NS (Network Service) within the OSM environment using the onboarded VNF package. +- Confirm that the Service KPI metrics are flowing seamlessly from the VNF instances to OSM-Prometheus. \ No newline at end of file diff --git a/assets/700px_service_kpi_vnf.png b/assets/700px_service_kpi_vnf.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f8f3d64538cf3cdaedae0847f398cd90747762 GIT binary patch literal 43767 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 em_~H_w^$8 Date: Wed, 24 May 2023 02:03:49 +0530 Subject: [PATCH 2/3] feature 10945 Service KPI of VNF using exporter endpoint Signed-off-by: k4.rahul --- 05-osm-usage.md | 30 ++++++++++++++++++++++++++++++ assets/700px_service_kpi_vnf.png | Bin 0 -> 43767 bytes 2 files changed, 30 insertions(+) create mode 100644 assets/700px_service_kpi_vnf.png diff --git a/05-osm-usage.md b/05-osm-usage.md index 52353ec..67db7a4 100644 --- a/05-osm-usage.md +++ b/05-osm-usage.md @@ -2038,3 +2038,33 @@ From the UI: - Fill in the form, adding at least the member vnf index: ![VM Migration](assets/500px-VM_Migration.png) + +## How to deploy a VNF that comes with a Prometheus exporter + +The Service KPI (Key Performance Indicator) feature in OSM enables efficient monitoring and assurance of network service performance. With the introduction of the Exporter Endpoint, users can now collect Service KPIs directly from VNFs. + +### Usage of Service KPI feature +Service KPIs are metrics used to measure the performance of a VNF (Virtualized Network Function) service. These metrics can help operators to ensure that the VNF service is meeting the required service level agreements (SLAs) and to identify any issues that may be impacting service quality. + +VNF Package is onboarded with Prometheus job template, and this template is stored in the mongo dB OSM will add the Prometheus job for collection of service KPI metrics. Prometheus will start collecting the service KPI metrics for the VNF using the provided exporter endpoint. + +By monitoring and analyzing these Service KPI metrics, network operators can gain insight into the performance of VNFs and take proactive steps to optimize service delivery and ensure that quality of service is as per expectation. + + +Reference diagram: +![Service KPI of VNF using Exporter Endpoint Reference Diagram](assets/700px_service_kpi_vnf.png) + +### At the VNF package level: +- Ensure that the VNF package includes the necessary components for exporting metrics, including the exporter endpoints along with Prometheus job template. + +```yaml +vnfd: + df: + exporters-endpoints: + metric-path: /metrics + metric-port: 9100 + external-connection-point-ref: vnf-cp0-ext +``` +### Deployment of NS +- Instantiate the NS (Network Service) within the OSM environment using the onboarded VNF package. +- Confirm that the Service KPI metrics are flowing seamlessly from the VNF instances to OSM-Prometheus. \ No newline at end of file diff --git a/assets/700px_service_kpi_vnf.png b/assets/700px_service_kpi_vnf.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f8f3d64538cf3cdaedae0847f398cd90747762 GIT binary patch literal 43767 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 em_~H_w^$8 Date: Wed, 21 Jun 2023 14:40:57 +0000 Subject: [PATCH 3/3] Update 05-osm-usage.md --- 05-osm-usage.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/05-osm-usage.md b/05-osm-usage.md index 67db7a4..f1da630 100644 --- a/05-osm-usage.md +++ b/05-osm-usage.md @@ -2041,20 +2041,22 @@ From the UI: ## How to deploy a VNF that comes with a Prometheus exporter -The Service KPI (Key Performance Indicator) feature in OSM enables efficient monitoring and assurance of network service performance. With the introduction of the Exporter Endpoint, users can now collect Service KPIs directly from VNFs. +The Service KPI (Key Performance Indicator) feature in OSM enables efficient monitoring and assurance of network service performance. With the introduction of the Exporter Endpoint, users can now collect Service KPIs directly from VNFs that come with a Prometheus Exporter. ### Usage of Service KPI feature + Service KPIs are metrics used to measure the performance of a VNF (Virtualized Network Function) service. These metrics can help operators to ensure that the VNF service is meeting the required service level agreements (SLAs) and to identify any issues that may be impacting service quality. VNF Package is onboarded with Prometheus job template, and this template is stored in the mongo dB OSM will add the Prometheus job for collection of service KPI metrics. Prometheus will start collecting the service KPI metrics for the VNF using the provided exporter endpoint. By monitoring and analyzing these Service KPI metrics, network operators can gain insight into the performance of VNFs and take proactive steps to optimize service delivery and ensure that quality of service is as per expectation. - Reference diagram: + ![Service KPI of VNF using Exporter Endpoint Reference Diagram](assets/700px_service_kpi_vnf.png) -### At the VNF package level: +### How to change the VNF package to include the VNF exporter endpoints + - Ensure that the VNF package includes the necessary components for exporting metrics, including the exporter endpoints along with Prometheus job template. ```yaml @@ -2065,6 +2067,7 @@ vnfd: metric-port: 9100 external-connection-point-ref: vnf-cp0-ext ``` -### Deployment of NS +### How to check that the VNF exporter endpoints are exposing their metrics + - Instantiate the NS (Network Service) within the OSM environment using the onboarded VNF package. -- Confirm that the Service KPI metrics are flowing seamlessly from the VNF instances to OSM-Prometheus. \ No newline at end of file +- Confirm that the Service KPI metrics are flowing seamlessly from the VNF instances to OSM-Prometheus, whose graphical interface can be visited at the URL . -- GitLab