2016-09-04 21:31:53 -07:00
|
|
|
..
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
|
|
not use this file except in compliance with the License. You may obtain
|
|
|
|
a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
|
License for the specific language governing permissions and limitations
|
|
|
|
under the License.
|
|
|
|
|
|
|
|
.. _ref-alarm_frm:
|
|
|
|
|
|
|
|
==========================
|
|
|
|
Alarm monitoring framework
|
|
|
|
==========================
|
|
|
|
|
|
|
|
This document describes how to use alarm-based monitoring driver in Tacker.
|
|
|
|
|
|
|
|
Sample TOSCA with monitoring policy
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
The following example shows monitoring policy using TOSCA template.
|
|
|
|
The target (VDU1) of the monitoring policy in this example need to be
|
|
|
|
described firstly like other TOSCA templates in Tacker.
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
policies:
|
|
|
|
- vdu1_cpu_usage_monitoring_policy:
|
|
|
|
type: tosca.policies.tacker.Alarming
|
|
|
|
triggers:
|
|
|
|
resize_compute:
|
|
|
|
event_type:
|
|
|
|
type: tosca.events.resource.utilization
|
|
|
|
implementation: ceilometer
|
|
|
|
metrics: cpu_util
|
|
|
|
condition:
|
|
|
|
threshold: 50
|
|
|
|
constraint: utilization greater_than 50%
|
|
|
|
period: 65
|
|
|
|
evaluations: 1
|
|
|
|
method: avg
|
|
|
|
comparison_operator: gt
|
2016-10-05 07:51:17 -07:00
|
|
|
actions: [respawn]
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
Alarm framework already supported the some default backend actions like
|
2016-10-05 07:51:17 -07:00
|
|
|
**scaling, respawn, log, and log_and_kill**.
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
Tacker users could change the desired action as described in the above example.
|
|
|
|
Until now, the backend actions could be pointed to the specific policy which
|
|
|
|
is also described in TOSCA template like scaling policy. The integration between
|
2016-10-05 07:51:17 -07:00
|
|
|
alarming monitoring and scaling was also supported by Alarm monitor in Tacker:
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
2016-10-05 07:51:17 -07:00
|
|
|
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
|
|
|
|
description: Demo example
|
|
|
|
|
|
|
|
metadata:
|
|
|
|
template_name: sample-tosca-vnfd
|
|
|
|
|
|
|
|
topology_template:
|
|
|
|
node_templates:
|
|
|
|
VDU1:
|
|
|
|
type: tosca.nodes.nfv.VDU.Tacker
|
|
|
|
capabilities:
|
|
|
|
nfv_compute:
|
|
|
|
properties:
|
|
|
|
disk_size: 1 GB
|
|
|
|
mem_size: 512 MB
|
|
|
|
num_cpus: 2
|
|
|
|
properties:
|
|
|
|
image: cirros-0.3.4-x86_64-uec
|
|
|
|
mgmt_driver: noop
|
|
|
|
availability_zone: nova
|
|
|
|
metadata: {metering.vnf: SG1}
|
|
|
|
|
|
|
|
CP1:
|
|
|
|
type: tosca.nodes.nfv.CP.Tacker
|
|
|
|
properties:
|
|
|
|
management: true
|
|
|
|
anti_spoofing_protection: false
|
|
|
|
requirements:
|
|
|
|
- virtualLink:
|
|
|
|
node: VL1
|
|
|
|
- virtualBinding:
|
|
|
|
node: VDU1
|
|
|
|
VDU2:
|
|
|
|
type: tosca.nodes.nfv.VDU.Tacker
|
|
|
|
capabilities:
|
|
|
|
nfv_compute:
|
|
|
|
properties:
|
|
|
|
disk_size: 1 GB
|
|
|
|
mem_size: 512 MB
|
|
|
|
num_cpus: 2
|
|
|
|
properties:
|
|
|
|
image: cirros-0.3.4-x86_64-uec
|
|
|
|
mgmt_driver: noop
|
|
|
|
availability_zone: nova
|
|
|
|
metadata: {metering.vnf: SG1}
|
|
|
|
|
|
|
|
CP2:
|
|
|
|
type: tosca.nodes.nfv.CP.Tacker
|
|
|
|
properties:
|
|
|
|
management: true
|
|
|
|
anti_spoofing_protection: false
|
|
|
|
requirements:
|
|
|
|
- virtualLink:
|
|
|
|
node: VL1
|
|
|
|
- virtualBinding:
|
|
|
|
node: VDU2
|
|
|
|
|
|
|
|
VL1:
|
|
|
|
type: tosca.nodes.nfv.VL
|
|
|
|
properties:
|
|
|
|
network_name: net_mgmt
|
|
|
|
vendor: Tacker
|
|
|
|
|
|
|
|
policies:
|
|
|
|
- SP1:
|
|
|
|
type: tosca.policies.tacker.Scaling
|
|
|
|
properties:
|
|
|
|
increment: 1
|
|
|
|
cooldown: 120
|
|
|
|
min_instances: 1
|
|
|
|
max_instances: 3
|
|
|
|
default_instances: 2
|
|
|
|
targets: [VDU1,VDU2]
|
|
|
|
|
|
|
|
- vdu_cpu_usage_monitoring_policy:
|
|
|
|
type: tosca.policies.tacker.Alarming
|
|
|
|
triggers:
|
|
|
|
vdu_hcpu_usage_scaling_out:
|
|
|
|
event_type:
|
|
|
|
type: tosca.events.resource.utilization
|
|
|
|
implementation: ceilometer
|
|
|
|
metrics: cpu_util
|
|
|
|
condition:
|
|
|
|
threshold: 50
|
|
|
|
constraint: utilization greater_than 50%
|
|
|
|
period: 600
|
|
|
|
evaluations: 1
|
|
|
|
method: avg
|
|
|
|
comparison_operator: gt
|
|
|
|
metadata: SG1
|
|
|
|
actions: [SP1]
|
|
|
|
|
|
|
|
vdu_lcpu_usage_scaling_in:
|
|
|
|
targets: [VDU1, VDU2]
|
|
|
|
event_type:
|
|
|
|
type: tosca.events.resource.utilization
|
|
|
|
implementation: ceilometer
|
|
|
|
metrics: cpu_util
|
|
|
|
condition:
|
|
|
|
threshold: 10
|
|
|
|
constraint: utilization less_than 10%
|
|
|
|
period: 600
|
|
|
|
evaluations: 1
|
|
|
|
method: avg
|
|
|
|
comparison_operator: lt
|
|
|
|
metadata: SG1
|
|
|
|
actions: [SP1]
|
|
|
|
|
|
|
|
|
|
|
|
**NOTE:**
|
|
|
|
metadata defined in VDU properties must be matched with metadata in monitoring policy
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
How to setup environment
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
If OpenStack Devstack is used to test alarm monitoring in Tacker, OpenStack Ceilometer
|
|
|
|
and Aodh plugins will need to be enabled in local.conf:
|
|
|
|
|
|
|
|
.. code-block::ini
|
|
|
|
|
2016-09-23 12:24:05 -07:00
|
|
|
**enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer master**
|
2016-09-04 21:31:53 -07:00
|
|
|
|
2016-09-23 12:24:05 -07:00
|
|
|
**enable_plugin aodh https://git.openstack.org/openstack/aodh master**
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
How to monitor VNFs via alarm triggers
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
How to setup alarm configuration
|
|
|
|
================================
|
|
|
|
|
|
|
|
Firstly, vnfd and vnf need to be created successfully using pre-defined TOSCA template
|
|
|
|
for alarm monitoring. Then, in order to know whether alarm configuration defined in Tacker
|
|
|
|
is successfully passed to Ceilometer, Tacker users could use CLI:
|
|
|
|
|
2016-09-23 12:24:05 -07:00
|
|
|
.. code-block:: console
|
|
|
|
|
2016-10-05 07:51:17 -07:00
|
|
|
$aodh alarm list
|
2016-09-23 12:24:05 -07:00
|
|
|
|
2016-10-05 07:51:17 -07:00
|
|
|
+--------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------+-------------------+----------+---------+
|
|
|
|
| alarm_id | type | name | state | severity | enabled |
|
|
|
|
+--------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------+-------------------+----------+---------+
|
|
|
|
| 6f2336b9-e0a2-4e33-88be-bc036192b42b | threshold | tacker.vnfm.infra_drivers.openstack.openstack_OpenStack-a0f60b00-ad3d-4769-92ef-e8d9518da2c8-vdu_lcpu_scaling_in-smgctfnc3ql5 | insufficient data | low | True |
|
|
|
|
| e049f0d3-09a8-46c0-9b88-e61f1f524aab | threshold | tacker.vnfm.infra_drivers.openstack.openstack_OpenStack-a0f60b00-ad3d-4769-92ef-e8d9518da2c8-vdu_hcpu_usage_scaling_out-lubylov5g6xb | insufficient data | low | True |
|
|
|
|
+--------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------+-------------------+----------+---------+
|
2016-09-23 12:24:05 -07:00
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
2016-10-05 07:51:17 -07:00
|
|
|
$aodh alarm show 6f2336b9-e0a2-4e33-88be-bc036192b42b
|
|
|
|
|
|
|
|
+---------------------------+-------------------------------------------------------------------------------------------------------------------------------+
|
|
|
|
| Field | Value |
|
|
|
|
+---------------------------+-------------------------------------------------------------------------------------------------------------------------------+
|
|
|
|
| alarm_actions | [u'http://pinedcn:9890/v1.0/vnfs/a0f60b00-ad3d-4769-92ef-e8d9518da2c8/vdu_lcpu_scaling_in/SP1-in/yl7kh5qd'] |
|
|
|
|
| alarm_id | 6f2336b9-e0a2-4e33-88be-bc036192b42b |
|
|
|
|
| comparison_operator | lt |
|
|
|
|
| description | utilization less_than 10% |
|
|
|
|
| enabled | True |
|
|
|
|
| evaluation_periods | 1 |
|
|
|
|
| exclude_outliers | False |
|
|
|
|
| insufficient_data_actions | None |
|
|
|
|
| meter_name | cpu_util |
|
|
|
|
| name | tacker.vnfm.infra_drivers.openstack.openstack_OpenStack-a0f60b00-ad3d-4769-92ef-e8d9518da2c8-vdu_lcpu_scaling_in-smgctfnc3ql5 |
|
|
|
|
| ok_actions | None |
|
|
|
|
| period | 600 |
|
|
|
|
| project_id | 3db801789c9e4b61b14ce448c9e7fb6d |
|
|
|
|
| query | metadata.user_metadata.vnf_id = a0f60b00-ad3d-4769-92ef-e8d9518da2c8 |
|
|
|
|
| repeat_actions | True |
|
|
|
|
| severity | low |
|
|
|
|
| state | insufficient data |
|
|
|
|
| state_timestamp | 2016-11-16T18:39:30.134954 |
|
|
|
|
| statistic | avg |
|
|
|
|
| threshold | 10.0 |
|
|
|
|
| time_constraints | [] |
|
|
|
|
| timestamp | 2016-11-16T18:39:30.134954 |
|
|
|
|
| type | threshold |
|
|
|
|
| user_id | a783e8a94768484fb9a43af03c6426cb |
|
|
|
|
+---------------------------+-------------------------------------------------------------------------------------------------------------------------------+
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
|
|
|
|
How to trigger alarms:
|
|
|
|
======================
|
|
|
|
As shown in the above Ceilometer command, alarm state is shown as "insufficient data". Alarm is
|
|
|
|
triggered by Ceilometer once alarm state changes to "alarm".
|
|
|
|
To make VNF instance reach to the pre-defined threshold, some simple scripts could be used.
|
|
|
|
|
|
|
|
Note: Because Ceilometer pipeline set the default interval to 600s (10 mins),
|
|
|
|
in order to reduce this interval, users could edit "interval" value
|
|
|
|
in **/etc/ceilometer/pipeline.yaml** file and then restart Ceilometer service.
|
|
|
|
|
|
|
|
Another way could be used to check if backend action is handled well in Tacker:
|
|
|
|
|
|
|
|
.. code-block::ini
|
|
|
|
|
2016-10-05 07:51:17 -07:00
|
|
|
curl -H "Content-Type: application/json" -X POST -d '{"alarm_id": "35a80852-e24f-46ed-bd34-e2f831d00172", "current": "alarm"}' http://pinedcn:9890/v1.0/vnfs/a0f60b00-ad3d-4769-92ef-e8d9518da2c8/vdu_lcpu_scaling_in/SP1-in/yl7kh5qd
|
2016-09-04 21:31:53 -07:00
|
|
|
|
|
|
|
Then, users can check Horizon to know if vnf is respawned. Please note that the url used
|
|
|
|
in the above command could be captured from "**ceilometer alarm-show** command as shown before.
|
|
|
|
"key" attribute in body request need to be captured from the url. The reason is that key will be authenticated
|
|
|
|
so that the url is requested only one time.
|