Support Thresholds resource in PM Interface

https://blueprints.launchpad.net/tacker/+spec/support-auto-lcm

Problem description

This specification provides implementations of “Thresholds” resource for supporting Performance Management interface with external monitoring tools such as Prometheus [4]. Tacker Zed release has supported ETSI NFV-SOL 002 v3.3.1 [1] and ETSI NFV-SOL 003 v3.3.1 [2] based Fault Management and Performance Management interfaces, however, Thresholds resource is not implemented for the Performance Management interface in Tacker. Tacker needs to support Thresholds resource for advancing ETSI NFV standard compliance and functionality.

  • Table: Operations of Performance Management interface and Tacker support status

    Operations of PM interface

    Supported in (Zed)

    Supported in (Antelope)

    Create a PM Job

    Yes

    Yes

    Query PM Jobs

    Yes

    Yes

    Read a single PM job

    Yes

    Yes

    Update PM job callback

    Yes

    Yes

    Delete a PM Job

    Yes

    Yes

    Read an individual performance report

    Yes

    Yes

    Create a threshold

    No

    Yes

    Query thresholds

    No

    Yes

    Read a single threshold

    No

    Yes

    Update threshold callback

    No

    Yes

    Delete a threshold

    No

    Yes

    Notify about PM related events

    Performance information availability only

    Both performance information availability and threshold crossing

    Test the notification endpoint

    PM jobs only

    Both PM jobs and thresholds

Proposed change

The following changes are needed:

  1. Add support Thresholds resource for Performance Management interface specified in SOL002/003.

    • Add Thresholds resource in VNF Performance Management interface:

      • Create and Update a threshold

        • POST /vnfpm/v2/thresholds to create a threshold.

        • PATCH /vnfpm/v2/thresholds/{thresholdId} to update the specified threshold callback.

      • Get threshold(s)

        • GET /vnfpm/v2/thresholds to get all thresholds.

        • GET /vnfpm/v2/thresholds/{thresholdId} to get the specified threshold.

      • Delete a threshold

        • DELETE /vnfpm/v2/thresholds/{thresholdId} to delete the specified threshold.

    • Enhance notification to Client:

      • POST <Client URI for notifications> to notify Client that Tacker received a PM threshold related event.

      • GET <Client URI from subscriptions> to confirm that the URI of Client is correct.

  2. Add support of RESTful API for communications between Tacker and External Monitoring Tool

    • POST /pm_threshold to receive the PM threshold event sent from External Monitoring Tool.

  3. Create a new DB table for PM Thresholds.

Note

The External Monitoring Tool is a monitoring service. That is not included in Tacker. Operators implement the External Monitoring Tool. The External Monitoring Tool uses metrics service such as Prometheus and notifies PM events using the Prometheus Plugin interface [3].

AutoScale on PM threshold event trigger

Tacker has a configuration value in metadata that indicates uri of alert manager. Prometheus Plugin converts from PM threshold schema to prometheus schema when a PM threshold has been created.

When the External Monitoring Tool detects that the CNF have some PM threshold events, it will send event messages to Tacker. After Tacker receives the event, it will convert the event to store it in the DB.

Design of scale operation in PM Threshold

The following is a schematic diagram of scale:

                                +------------------------+
                                |                        |       9. Send threshold notification
                                |   Client (NFVO/EM)     <-------------------+
                                |                        |                   |
                                +--+---------+-----------+                   |
                                   |         | 1. Create threshold           |
                        10. Scale  |         |                               |
                            +------|---------|-------------------------------|----------------------------+
                            |      |         |                               |                       VNFM |
                            |  +---|---------|---------+ +-------------------|-------------+              |
                            |  |   |         |  Tacker | |                   |  Tacker     |              |
                            |  |   |         |  Server | |                   |  Conductor  |              |
                            |  |   | +-------v------+  | |                   |             |   +--------+ |
                            |  |   | | VnfPm        +------------------------+-----------------> Tacker | |
                            |  |   | | ControllerV2 |  | |         +---------+----+        |   | DB     | |
+----------------+          |  |   | +---------+----+  | |  +------> VnfPm        +------------>        | |
|  External      |          |  |   | 2. Set    |       | |  |      | DriverV2     |        |   +--------+ |
|  Monitoring    | 5. POST  |  |   | threshold |       | |  |      +--------------+        |              |
|  Tool          |    event |  |   |   +-------v----+  | |  |    8. Create threshold       |              |
|  (based on     +---------------------> Prometheus +-------+       notification           |              |
|   Prometheus)  <---------------------+ Plugin     |  | |                                 |              |
|                | 6. Get related data +------------+  | |                                 |              |
|                |          |  |   |    7.Evaluate     | |                                 |              |
+--+-------------+ 3. Set   |  |   |      threshold    | |                                 |              |
   ^              threshold |  |   |      crossing     | |                                 |              |
   | 4. Trigger event       |  |   |   +------------+  | |         +--------------+        |              |
   |                        |  |   +---> Vnflcm     +--------------> VmfLcmDriver +---+    |              |
   |                        |  |       | Controller |  | |         +--------------+   |    |              |
   |                        |  |       +------------+  | |                  +---------v--+ |              |
   |                        |  |                       | |                  | Infra      | |              |
   |                        |  |                       | |                  | Driver     | |              |
   |                        |  |                       | |                  +----+-------+ |              |
   |                        |  +-----------------------+ +-----------------------|---------+              |
   |                        +----------------------------------------------------|------------------------+
   |                                                                             |
   |                        +----------------------------------------------------|------------+
   |                        |  CISM/CIS                                          |            |
   |                        |                  +---------------+-----------------+            |
   |                        |                  |               | 11. Create or Delete         |
   |                        |                  |               |     CNF                      |
   |                        |         +--------v----+   +------v------+    +-------------+    |
   |                        |         | +--------+  |   | +--------+  |    |             |    |
   +----------------------------------> | CNF    |  |   | | CNF    |  |    |             |    |
                            |         | +--------+  |   | +--------+  |    |             |    |
                            |         |      Worker |   |      Worker |    |      Master |    |
                            |         +-------------+   +-------------+    +-------------+    |
                            +-----------------------------------------------------------------+
  1. The Client sends a request to the Tacker to create a threshold.

  2. VnfPmControllerV2 sends threshold information to Prometheus Plugin.

  3. Prometheus Plugin sets a threshold to External Monitoring Tool.

  4. External Monitoring Tool collects metrics and triggers events.

  5. External Monitoring Tool sends POST request to Tacker with specified URI.

  6. Tacker collects data related to the PM event. From the data obtained in 4-5, The value and context corresponding to threshold crossing are determined. Prometheus Plugin also update the corresponding resource from the DB.

  7. Prometheus Plugin evaluates the event. If there is a threshold crossing condition that can match successfully, the event is sent to the specified path of the Client. If the evaluation is not successful, the processing ends.

  8. VnfPmDriverV2 creates a threshold notification and save threshold information to the DB.

  9. VnfPmDriverV2 sends a threshold notification to the Client.

  10. The Client makes a request for the context of the notification, then make a decision of scaling.

  11. Scale operation is triggered, new CNF is created in case of scale-out or old CNF is deleted in case of scale-in.

Request parameters for operation in PM Threshold

The detail of API is described at REST API impact.

Sequence for operation in PM threshold

The following sequence diagrams describes the Client’s processing flow for Tacker to AutoScale by PM threshold.

  1. The Client sends a request to create a threshold to the Tacker. After Tacker receives the threshold, it will get the callback_uri in it. In order to verify the correctness of the callback_uri, the Tacker sends a request to the callback_uri address of the Client. After getting the normal response HTTP 204 No Content from the Client, the Tacker saves the subscription to the DB.

  2. Tacker sends a threshold to Prometheus Plugin. Prometheus Plugin converts it into Prometheus format, then sends it to External Monitoring Tool. Tacker saves a threshold to the DB and responses HTTP 201 Created to the Client.

  3. External Monitoring Tool receives event sent from Prometheus and inform the event to specified URI (Tacker).

  4. Prometheus Plugin obtains values from cfg.CONF.tacker.prometheus_plugin to determine whether to enable this function. Prometheus Plugin judges what processing to perform according to the function_type field of the labels in the event. When the labels.function_type is vnfpm, AutoScale is performed.

  5. Prometheus Plugin finds the corresponding resource information according to the value of the node label in the event.

  6. Prometheus Plugin evaluates a threshold crossing condition, if it does not match, the processing ends.

  7. Prometheus Plugin executes VnfPmDriverV2.

  8. VnfPmDriverV2 sends a Notify Threshold event request to the Client’s callback_uri address. After the Client receives the request and processes it, it returns HTTP 204 No Content by default.

  9. The Client obtains the VNFC information from the notification.

  10. The Client sends a request to the Tacker to scale the VNFC.

  11. From this step, it is completely the same with the default scale operation.

Alternatives

None

Data model impact

Add below new db table in ‘Tacker’ database.

  • Table: ThresholdV2

    Name

    Type

    Constraint

    id

    varchar(255)

    Pri

    objectType

    varchar(32)

    NOT NULL

    objectInstanceId

    varchar(255)

    NOT NULL

    subObjectInstanceIds

    JSON

    NULL

    criteria

    JSON

    NOT NULL

    callbackUri

    varchar(255)

    NOT NULL

    authentication

    JSON

    NULL

    metadata

    JSON

    NOT NULL

    This table have id as primary key.

REST API impact

The following RESTful APIs are in compliance with SOL002/003 [1] [2] 6.VNF Performance Management interface.

  • Name: Create a threshold
    Description: Create a threshold. Thresholds group details of performance information
    Method type: POST
    URL for the resource: /vnfpm/v2/thresholds
    Request:

    Data type

    Cardinality

    Description

    CreateThresholdRequest

    1

    Threshold creation request

    Attribute name (CreateThresholdRequest)

    Data type

    Cardinality

    Description

    objectType

    String

    1

    Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    objectInstanceId

    Identifier

    1

    Identifiers of the measured object instances associated with this threshold.

    subObjectInstanceIds

    IdentifierInVnf

    0..N

    Identifiers of the measured object instances in case of a structured measured object.

    criteria

    ThresholdCriteria

    1

    Criteria that define this threshold.

    >performanceMetric

    String

    1

    This defines the types of performance metrics associated with the threshold. Valid values are specified as “Measurement Name” values in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    >thresholdType

    Enum

    1

    Type of threshold. This attribute determines which other attributes are present in the data structure. In ETSI NFV-SOL 002 v3.3.1 [1] and ETSI NFV-SOL 003 v3.3.1 [2], “SIMPLE: Single-valued static threshold” is permitted.

    >simpleThresholdDetails

    Structure

    0..1

    Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

    >>thresholdValue

    Number

    1

    The threshold value. Shall be represented as a floating point number.

    >>hysteresis

    Number

    1

    The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

    callbackUri

    Uri

    1

    The URI of the endpoint to send the notification to.

    authentication

    SubscriptionAuthentication

    0..1

    Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription. See as clause 8.3.4 of ETSI GS NFV-SOL 013 [5]

    metadata

    Structure

    1

    Additional parameters to create a threshold. (Tacker original attribute)

    >monitoring

    Structure

    1

    Treats to specify such as monitoring system and driver information.

    >>monitorName

    String

    1

    In case specifying “prometheus”, backend of monitoring feature is to be Prometheus.

    >>driverType

    String

    1

    “external”: SCP/SFTP for config file transfer.

    >>targetsInfo

    Structure

    1..N

    Information about the target monitoring system.

    >>>prometheusHost

    String

    1

    FQDN or ip address of target PrometheusServer.

    >>>prometheusHostPort

    Int

    1

    Port of the ssh target PrometheusServer.

    >>>alertRuleConfigPath

    String

    1

    Path of alertRuleConfig path for target Prometheus.

    >>>prometheusReloadApiEndpoint

    String

    1

    Endpoint url of reload API of target Prometheus.

    >>>authInfo

    Structure

    1

    Define authentication information to access host.

    >>>>ssh_username

    String

    1

    The username of the target host for ssh.

    >>>>ssh_password

    String

    1

    The password of the target host for ssh.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    Threshold

    1

    Success: 201

    Shall be returned when a threshold has been created successfully.

    ProblemDetails

    1

    Error: 422

    The content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

    Attribute name (Threshold)

    Data type

    Cardinality

    Description

    id

    Identifier

    1

    Identifier of this threshold.

    objectType

    String

    1

    Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    objectInstanceId

    Identifier

    1

    Identifiers of the measured object instances associated with this threshold.

    subObjectInstanceIds

    IdentifierInVnf

    0..N

    Identifiers of the measured object instances in case of a structured measured object.

    criteria

    ThresholdCriteria

    1

    Criteria that define this threshold.

    >performanceMetric

    String

    1

    This defines the types of performance metrics associated with the threshold. Valid values are specified as “Measurement Name” values in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    >thresholdType

    Enum

    1

    Type of threshold. This attribute determines which other attributes are present in the data structure. In ETSI NFV-SOL 002 v3.3.1 [1] and ETSI NFV-SOL 003 v3.3.1 [2], “SIMPLE: Single-valued static threshold” is permitted.

    >simpleThresholdDetails

    Structure

    0..1

    Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

    >>thresholdValue

    Number

    1

    The threshold value. Shall be represented as a floating point number.

    >>hysteresis

    Number

    1

    The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

    callbackUri

    Uri

    1

    The URI of the endpoint to send the notification to.

    _links

    Structure

    1

    Links for this resource.

    >self

    Link

    1

    URI of this resource.

    >object

    Link

    0..1

    Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

    Note

    When processing a request to create a threshold, it should enforce a suitable minimum value for this attribute by override the value or reject the request.

    Note

    “Hysteresis” is implemented based on thresholdType, “Single-valued static threshold.” A notification with crossing direction “UP” will be generated if the measured value reaches or exceeds “thresholdValue” + “hysteresis”. A notification with crossing direction “DOWN” will be generated if the measured value reaches or undercuts “thresholdValue” - “hysteresis”. These methods need to store the previous value in Tacker DB to detect the crossing direction.

  • Name: Query thresholds
    Description: Allow users to filter out thresholds based on query parameter in the request
    Method type: GET
    URL for the resource: /vnfpm/v2/thresholds
    Query parameters:

    Name

    Cardinality

    Description

    filter

    0..1

    Attribute-based filtering expression. according to clause 5.2 of ETSI GS NFV-SOL 013 [5].

    For example, below URI query parameter will matching threshold with objectType=VNFC.

    GET /vnfpm/v2/thresholds?filter=(eq,objectType,VNFC)
    

    nextpage_opaque_marker

    0..1

    Marker to obtain the next page of a paged response. according to clause 5.4 of ETSI GS NFV-SOL 013 [5].

    Request:

    Data type

    Cardinality

    Description

    n/a

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    Threshold

    0..N

    Success: 200

    Shall be returned when information about zero or more thresholds has been queried successfully.

    ProblemDetails

    1

    Error: 400

    Invalid attribute-based filtering expression. The response body shall contain a ProblemDetails structure, in which the “detail” attribute should convey more information about the error.

    ProblemDetails

    1

    Error: 400

    Response too big.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

    Attribute name (Threshold)

    Data type

    Cardinality

    Description

    id

    Identifier

    1

    Identifier of this threshold.

    objectType

    String

    1

    Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    objectInstanceId

    Identifier

    1

    Identifiers of the measured object instances associated with this threshold.

    subObjectInstanceIds

    IdentifierInVnf

    0..N

    Identifiers of the measured object instances in case of a structured measured object.

    criteria

    ThresholdCriteria

    1

    Criteria that define this threshold.

    >performanceMetric

    String

    1

    This defines the types of performance metrics associated with the threshold. Valid values are specified as “Measurement Name” values in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    >thresholdType

    Enum

    1

    Type of threshold. This attribute determines which other attributes are present in the data structure. In ETSI NFV-SOL 002 v3.3.1 [1] and ETSI NFV-SOL 003 v3.3.1 [2], “SIMPLE: Single-valued static threshold” is permitted.

    >simpleThresholdDetails

    Structure

    0..1

    Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

    >>thresholdValue

    Number

    1

    The threshold value. Shall be represented as a floating point number.

    >>hysteresis

    Number

    1

    The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

    callbackUri

    Uri

    1

    The URI of the endpoint to send the notification to.

    _links

    Structure

    1

    Links for this resource.

    >self

    Link

    1

    URI of this resource.

    >object

    Link

    0..1

    Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

  • Name: Read a single threshold
    Description: Get a individual threshold
    Method type: GET
    URL for the resource: /vnfpm/v2/thresholds/{thresholdId}
    Path parameters:

    Name

    Cardinality

    Description

    thresholdId

    1

    Threshold ID.

    Request:

    Data type

    Cardinality

    Description

    n/a

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    Threshold

    1

    Success: 200

    Shall be returned when information about an individual threshold has been read successfully.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

    Attribute name (Threshold)

    Data type

    Cardinality

    Description

    id

    Identifier

    1

    Identifier of this threshold.

    objectType

    String

    1

    Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    objectInstanceId

    Identifier

    1

    Identifiers of the measured object instances for which performance information is collected.

    subObjectInstanceIds

    IdentifierInVnf

    0..N

    Identifiers of the measured object instances in case of a structured measured object.

    criteria

    ThresholdCriteria

    1

    Criteria that define this threshold.

    >performanceMetric

    String

    1

    This defines the types of performance metrics associated with the threshold. Valid values are specified as “Measurement Name” values in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    >thresholdType

    Enum

    1

    Type of threshold. This attribute determines which other attributes are present in the data structure. In ETSI NFV-SOL 002 v3.3.1 [1] and ETSI NFV-SOL 003 v3.3.1 [2], “SIMPLE: Single-valued static threshold” is permitted.

    >simpleThresholdDetails

    Structure

    0..1

    Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

    >>thresholdValue

    Number

    1

    The threshold value. Shall be represented as a floating point number.

    >>hysteresis

    Number

    1

    The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

    callbackUri

    Uri

    1

    The URI of the endpoint to send the notification to.

    _links

    Structure

    1

    Links for this resource.

    >self

    Link

    1

    URI of this resource.

    >object

    Link

    0..1

    Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

  • Name: Update threshold callback
    Description: Modify resource of an individual threshold
    Method type: PATCH
    URL for the resource: /vnfpm/v2/thresholds/{thresholdId}
    Content-Type: application/mergepatch+json
    Path parameters:

    Name

    Cardinality

    Description

    thresholdId

    1

    Threshold ID.

    Request:

    Data type

    Cardinality

    Description

    ThresholdModifications

    1

    Parameters for the threshold modification.

    Attribute name (ThresholdModifications)

    Data type

    Cardinality

    Description

    callbackUri

    Uri

    0..1

    New value of the “callbackUri” attribute. The value “null” is not permitted.

    authentication

    SubscriptionAuthentication

    0..1

    New value of the “authentication” attribute, or “null” to remove the attribute. If present in a request body, these modifications shall be applied according to the rules of JSON Merge Patch.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    ThresholdModifications

    1

    Success: 200

    Shall be returned when the request has been processed successfully.

    ProblemDetails

    1

    422

    The content type of the payload body is supported and the payload body of a request contains syntactically correct data but the data cannot be processed.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

    Note

    Since current Tacker does not support http Etag, it does not support Error Code: 412 Precondition Failed. According to the ETSI NFV SOL document, there is no API request/response specification for Etag yet, and transactions using Etag are not defined by standardization. Tacker will support Etag after the ETSI NFV specification defines relevant transactions.

    Attribute name (ThresholdModifications)

    Data type

    Cardinality

    Description

    callbackUri

    Uri

    0..1

    New value of the “callbackUri” attribute. The value “null” is not permitted.

    The authentication parameter shall not be present in response bodies.

  • Name: Delete a threshold
    Description: Delete the threshold in the Tacker
    Method type: DELETE
    URL for the resource: /vnfpm/v2/thresholds/{thresholdId}
    Path parameters:

    Name

    Cardinality

    Description

    thresholdId

    1

    Threshold ID.

    Request:

    Data type

    Cardinality

    Description

    n/a

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    n/a

    Success: 204

    Shall be returned when the threshold has been deleted successfully.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

  • Name: Notify about PM related events
    Description: Delivers a notification regarding a threshold crossing event.
    Method type: POST
    URL for the resource: <Client URI for notifications>
    Request:

    Data type

    Cardinality

    Description

    ThresholdCrossedNotification

    1

    Notification about threshold crossing

    Attribute name (ThresholdCrossedNotification)

    Data type

    Cardinality

    Description

    id

    Identifier

    1

    Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the “id” attribute of all these notifications shall have the same value.

    notificationType

    String

    1

    Discriminator for the different notification types. Shall be set to “ThresholdCrossedNotification for this notification type.

    timeStamp

    DateTime

    1

    Date and time of the generation of the notification.

    thresholdId

    Identifier

    1

    Identifier of the threshold for which has been crossed.

    crossingDirection

    CrossingDirectionType

    1

    An indication of whether the threshold was crossed in upward or downward direction.

    objectType

    String

    1

    Type of the measured object. The applicable measured object type for a measurement is defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    objectInstanceId

    Identifier

    1

    Identifier of the measured object instance as per clause 6.2 of ETSI GS NFV-IFA 027 [6].

    subObjectInstanceId

    IdentifierInVnf

    0..1

    Identifiers of the sub-object instances of the measured object instance for which the measurements have been taken. Shall be present if the related threshold has been set up to measure only a subset of all sub-object instances of the measured object instance and a sub-object is defined in clause 6.2 of ETSI GS NFV-IFA 027 [6] for the related measured object type. Shall be absent otherwise.

    performanceMetric

    String

    1

    Name of the metric collected. This attribute shall contain the related “Measurement Name” value as defined in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    performanceValue

    (any type)

    1

    Value of the metric that resulted in threshold crossing. This attribute shall contain the related “Measurement Name” value as defined in clause 7.2 of ETSI GS NFV-IFA 027 [6]. Measurement context information related to the measured value. The set of applicable keys is defined per measurement in the related “Measurement Context” in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    context

    KeyValuePairs

    0..1

    Measurement context information related to the measured value. The set of applicable keys is defined per measurement in the related “Measurement Context” in clause 7.2 of ETSI GS NFV-IFA 027 [6].

    _links

    Structure

    1

    Links to resources related to this notification.

    >objectInstance

    NotificationLink

    0..1

    Link to the resource representing the measured object instance to which the notification applies. Shall be present if the measured object instance information is accessible as a resource.

    >threshold

    NotificationLink

    1

    Link to the resource that represents the threshold that was crossed.

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    n/a

    Success: 204

    Shall be returned when the notification has been delivered successfully.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

  • Name: Test the notification endpoint
    Description: Confirm that the URI of Client is correct.
    Method type: GET
    URL for the resource: <Client URI for notifications>
    Request:

    Data type

    Cardinality

    Description

    n/a

    Response:

    Data type

    Cardinality

    Response Codes

    Description

    n/a

    Success: 204

    Shall be returned to indicate that the notification endpoint has been tested successfully.

    ProblemDetails

    See clause 6.4 of [5]

    Error: 4xx/5xx

    In addition to the response codes defined above, any common error response code as defined in clause 6.4 of ETSI GS NFV-SOL 013 [5] may be returned.

The following RESTful APIs are Tacker specific interfaces used for PM Threshold between Tacker and External Monitoring Tool.

  • Name: Send a PM Threshold event
    Description: Receive the PM Threshold event sent from External Monitoring Tool
    Method type: POST
    URL for the resource: /pm_threshold
    Request:

    Data type

    Cardinality

    Description

    ThresholdEvent

    1

    The PM Thresholdevent sent from External Monitoring Tool

    Attribute name (ThresholdEvent)

    Data type

    Cardinality

    Description

    alerts

    Structure

    1..N

    List of all alert objects in this group.

    >status

    String

    1

    Defines whether or not the alert is resolved or currently firing.

    >labels

    Structure

    1

    A set of labels to be attached to the alert.

    >>receiver_type

    String

    1

    Type of receiver: tacker

    >>function_type

    String

    1

    Type of function: vnfpm-threshold

    >>threshold_id

    Identifier

    1

    Identifier of the PM Threshold

    >>object_instance_id

    Identifier

    1

    Identifier of the measured object instance for which the performance metric is reported.

    >>sub_object_instance_id

    Identifier

    0..1

    Identifier of the measured object sub instance for which the performance metric is reported.

    >annotations

    Structure

    1

    A set of annotations for the alert.

    >>value

    (any type)

    0..1

    Value of the metric collected.

    >startsAt

    DateTime

    1

    The time the alert started firing.

    >endsAt

    DateTime

    0..1

    The end time of an alert.

    >fingerprint

    String

    1

    Fingerprint that can be used to identify the alert.

Security impact

None

Notifications impact

Performance Management:
  • Tacker sends POST <Client URI for notifications> to NFVO or EM to notify Client that Tacker received a PM threshold related event.

  • Tacker sends GET <Client URI for notifications> to NFVO or EM to confirm that the URI of Client is correct.

  • Tacker creates prometheus rule files related to PM threshold requests and upload these files using SSH.

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

Yuta Kazato <yuta.kazato.nw@hco.ntt.co.jp>

Kenta Fukaya <kenta.fukaya.xv@hco.ntt.co.jp>

Other contributors:

Koji Shimizu <shimizu.koji@fujitsu.com>

Yoshiyuki Katada <katada.yoshiyuk@fujitsu.com>

Work Items

  • Implement Tacker to support:

    • Performance Management interface

      • Add new Rest API POST /vnfpm/v2/thresholds to create a threshold.

      • Add new Rest API GET /vnfpm/v2/thresholds to get all thresholds.

      • Add new Rest API GET /vnfpm/v2/thresholds/{thresholdId} to get the specified threshold.

      • Add new Rest API PATCH /vnfpm/v2/thresholds/{thresholdId} to update target threshold callback.

      • Add new Rest API DELETE /vnfpm/v2/thresholds/{thresholdId} to delete the specified threshold.

      • Add new request POST <Client URI for notifications> to notify Client that Tacker received a threshold alerm.

      • Add new request GET <Client URI for notifications> to confirm that the URI of Client is correct.

    • External Monitoring interface

      • Add new Rest API POST /pm_threshold to receive the PM threshold event sent from External Monitoring Tool.

  • Add new unit and functional tests.

Dependencies

None.

Testing

Unit and functional tests will be added to cover cases required in the spec.

Documentation Impact

  • Add Threshold examination to Tacker User guide.

  • Update API documentation on the API additionsmentioned in REST API impact.

References