OSM Performance Management: Difference between revisions
Garciadeblas (talk | contribs) |
(Updating PM basic functionality for Release FIVE) |
||
Line 1: | Line 1: | ||
This | This documentation corresponds now to Release FIVE, previous documentation is deprecated. | ||
==Basic functionality== | ==Basic functionality== | ||
OSM MON features a "mon-collector" module which will collect metrics whenever specified at the descriptor level. | |||
Please note that: | |||
* As of Release 5.0.0, metric export has been tested with OpenStack VIM with Keystone v3 authentication and legacy or Gnocchi-based telemetry services. Other VIM types will soon be added during the Release FIVE cycle. | |||
* For metrics to be exported, they have to exist at the VIM (Telemetry system) or at the VNF (Juju Metrics), so for recently created VDUs, it might take some time after they start being successfully collected by MON. | |||
=== Describing VIM Metrics === | |||
Every metric made available by the VIM for each VDU, has to be described both at the VDU level, and then at the VNF level. For example: | |||
vdu: | |||
id: vdu1 | |||
... | |||
monitoring-param: | |||
- id: metric_vdu1_cpu | |||
nfvi-metric: cpu_utilization | |||
- id: metric_vdu1_memory | |||
nfvi-metric: average_memory_utilization | |||
... | |||
monitoring-param: | |||
- id: metric_vim_vnf1_cpu | |||
name: metric_vim_vnf1_cpu | |||
aggregation-type: AVERAGE | |||
vdu-monitoring-param: | |||
vdu-ref: vdu1 | |||
vdu-monitoring-param-ref: metric_vdu1_cpu | |||
- id: metric_vim_vnf1_memory | |||
name: metric_vim_vnf1_memory | |||
aggregation-type: AVERAGE | |||
vdu-monitoring-param: | |||
vdu-ref: vdu1 | |||
vdu-monitoring-param-ref: metric_vdu1_memory | |||
As you can see, a list of "NFVI metrics" is defined first at the VDU level, which contain an ID and the corresponding normalized metric name (in this case, "cpu_utilization" and "average_memory_utilization") | |||
Then, at the VNF level, a list of monitoring-params is referred, with an ID, name, aggregation-type and their source, which is a 'vdu-monitoring-param' in this case. | |||
A complete VNFD example can be downloaded from [https://osm-download.etsi.org/ftp/osm-4.0-four/4th-hackfest/packages/webserver_vimmetric_autoscale_vnfd.tar.gz here]. | |||
=== Describing VNF Metrics === | |||
Metrics can also be collected directly from VNFs using VCA, through the [https://docs.jujucharms.com/2.4/en/developer-metrics Juju Metrics] framework. A simple charm containing a metrics.yaml file at its root folder specifies the metrics to be collected and the associated command. | |||
For example, the following metrics.yaml file collects three metrics from the VNF, called 'users', 'load' and 'load_pct' | |||
metrics: | |||
users: | |||
type: gauge | |||
description: "# of users" | |||
command: who|wc -l | |||
load: | |||
type: gauge | |||
description: "5 minute load average" | |||
command: cat /proc/loadavg |awk '{print $1}' | |||
load_pct: | |||
type: gauge | |||
description: "1 minute load average percent" | |||
command: cat /proc/loadavg | awk '{load_pct=$1*100.00} END {print load_pct}' | |||
Please note that the granularity of this metric collection method is fixed to 5 minutes. | |||
After metrics.yaml is available, you have two options for describing the metric collection in the VNFD: | |||
1) VNF-level VNF metrics | |||
. | mgmt-interface: | ||
cp: vdu_mgmt # is important to set the mgmt VDU or CP for metrics collection | |||
vnf-configuration: | |||
initial-config-primitive: | |||
... | |||
juju: | |||
charm: testmetrics | |||
metrics: | |||
- name: load | |||
- name: load_pct | |||
- name: users | |||
... | |||
monitoring-param: | |||
- id: metric_vim_vnf1_load | |||
name: metric_vim_vnf1_load | |||
aggregation-type: AVERAGE | |||
vnf-metric: | |||
vnf-metric-name-ref: load | |||
- id: metric_vim_vnf1_loadpct | |||
name: metric_vim_vnf1_loadpct | |||
aggregation-type: AVERAGE | |||
vnf-metric: | |||
vnf-metric-name-ref: load_pct | |||
A complete VNFD example can be downloaded from [https://osm-download.etsi.org/ftp/osm-4.0-four/4th-hackfest/packages/ubuntuvm_vnfvdumetric_autoscale_vnfd.tar.gz here]. | |||
2) VDU-level VNF metrics | |||
vdu: | |||
- id: vdu1 | |||
... | |||
interface: | |||
- ... | |||
mgmt-interface: true ! is important to set the mgmt interface for metrics collection | |||
... | |||
vdu-configuration: | |||
initial-config-primitive: | |||
... | |||
juju: | |||
charm: testmetrics | |||
metrics: | |||
- name: load | |||
- name: load_pct | |||
- name: users | |||
... | |||
monitoring-param: | |||
- id: metric_vim_vnf1_load | |||
name: metric_vim_vnf1_load | |||
aggregation-type: AVERAGE | |||
vdu-metric: | |||
vdu-ref: vdu1 | |||
vdu-metric-name-ref: load | |||
- id: metric_vim_vnf1_loadpct | |||
name: metric_vim_vnf1_loadpct | |||
aggregation-type: AVERAGE | |||
vdu-metric: | |||
vdu-ref: vdu1 | |||
vdu-metric-name-ref: load_pct | |||
A complete VNFD example can be downloaded from [https://osm-download.etsi.org/ftp/osm-4.0-four/4th-hackfest/packages/ubuntuvm_vnfmetric_autoscale_vnfd.tar.gz here]. | |||
As you can see, a list of "metrics" is defined first either at the VNF or VDU "configuration" level, which contain a name that comes from the metrics.yaml file. | |||
Then, at the VNF level, a list of monitoring-params is referred, with an ID, name, aggregation-type and their source, which can be a "vdu-metric" or a "vnf-metric" in this case. | |||
==Interacting with Prometheus TSDB== | |||
[WIP] | |||
==Experimental functionality== | |||
[ | [WIP] | ||
{{Feedback}} | {{Feedback}} |
Revision as of 15:11, 3 December 2018
This documentation corresponds now to Release FIVE, previous documentation is deprecated.
Basic functionality
OSM MON features a "mon-collector" module which will collect metrics whenever specified at the descriptor level.
Please note that:
- As of Release 5.0.0, metric export has been tested with OpenStack VIM with Keystone v3 authentication and legacy or Gnocchi-based telemetry services. Other VIM types will soon be added during the Release FIVE cycle.
- For metrics to be exported, they have to exist at the VIM (Telemetry system) or at the VNF (Juju Metrics), so for recently created VDUs, it might take some time after they start being successfully collected by MON.
Describing VIM Metrics
Every metric made available by the VIM for each VDU, has to be described both at the VDU level, and then at the VNF level. For example:
vdu: id: vdu1 ... monitoring-param: - id: metric_vdu1_cpu nfvi-metric: cpu_utilization - id: metric_vdu1_memory nfvi-metric: average_memory_utilization ... monitoring-param: - id: metric_vim_vnf1_cpu name: metric_vim_vnf1_cpu aggregation-type: AVERAGE vdu-monitoring-param: vdu-ref: vdu1 vdu-monitoring-param-ref: metric_vdu1_cpu - id: metric_vim_vnf1_memory name: metric_vim_vnf1_memory aggregation-type: AVERAGE vdu-monitoring-param: vdu-ref: vdu1 vdu-monitoring-param-ref: metric_vdu1_memory
As you can see, a list of "NFVI metrics" is defined first at the VDU level, which contain an ID and the corresponding normalized metric name (in this case, "cpu_utilization" and "average_memory_utilization") Then, at the VNF level, a list of monitoring-params is referred, with an ID, name, aggregation-type and their source, which is a 'vdu-monitoring-param' in this case.
A complete VNFD example can be downloaded from here.
Describing VNF Metrics
Metrics can also be collected directly from VNFs using VCA, through the Juju Metrics framework. A simple charm containing a metrics.yaml file at its root folder specifies the metrics to be collected and the associated command.
For example, the following metrics.yaml file collects three metrics from the VNF, called 'users', 'load' and 'load_pct'
metrics: users: type: gauge description: "# of users" command: who|wc -l load: type: gauge description: "5 minute load average" command: cat /proc/loadavg |awk '{print $1}' load_pct: type: gauge description: "1 minute load average percent" command: cat /proc/loadavg | awk '{load_pct=$1*100.00} END {print load_pct}'
Please note that the granularity of this metric collection method is fixed to 5 minutes.
After metrics.yaml is available, you have two options for describing the metric collection in the VNFD:
1) VNF-level VNF metrics
mgmt-interface: cp: vdu_mgmt # is important to set the mgmt VDU or CP for metrics collection vnf-configuration: initial-config-primitive: ... juju: charm: testmetrics metrics: - name: load - name: load_pct - name: users ... monitoring-param: - id: metric_vim_vnf1_load name: metric_vim_vnf1_load aggregation-type: AVERAGE vnf-metric: vnf-metric-name-ref: load - id: metric_vim_vnf1_loadpct name: metric_vim_vnf1_loadpct aggregation-type: AVERAGE vnf-metric: vnf-metric-name-ref: load_pct
A complete VNFD example can be downloaded from here.
2) VDU-level VNF metrics
vdu: - id: vdu1 ... interface: - ... mgmt-interface: true ! is important to set the mgmt interface for metrics collection ... vdu-configuration: initial-config-primitive: ... juju: charm: testmetrics metrics: - name: load - name: load_pct - name: users ... monitoring-param: - id: metric_vim_vnf1_load name: metric_vim_vnf1_load aggregation-type: AVERAGE vdu-metric: vdu-ref: vdu1 vdu-metric-name-ref: load - id: metric_vim_vnf1_loadpct name: metric_vim_vnf1_loadpct aggregation-type: AVERAGE vdu-metric: vdu-ref: vdu1 vdu-metric-name-ref: load_pct
A complete VNFD example can be downloaded from here.
As you can see, a list of "metrics" is defined first either at the VNF or VDU "configuration" level, which contain a name that comes from the metrics.yaml file. Then, at the VNF level, a list of monitoring-params is referred, with an ID, name, aggregation-type and their source, which can be a "vdu-metric" or a "vnf-metric" in this case.
Interacting with Prometheus TSDB
[WIP]
Experimental functionality
[WIP]
Your feedback is most welcome! You can send us your comments and questions to OSM_TECH@list.etsi.org Or join the OpenSourceMANO Slack Workplace See hereafter some best practices to report issues on OSM