You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Prerequisites

  • MSB must be installed and started and he user knows the IP address of the MSB API gateway service. Regarding how to install MSB, please go to MSB Test Environment Setup.

  • PostgreSQL(v9.5) must be installed and started. For the guidance on how to run a PostgreSQL, please refer to Offical Repository of PostgreSQL

    While setting up PostgreSQL, a database and a user named ‘holmes’ must be created. The corresponding password shuold be set to ‘holmespwd’. Otherwise, Holmes could not be started up successfully.

Installation Steps

As a DCAE Analytics Application

<<TO BE DONE>>

As an Independent Application

Installation

  1. Log in to the ONAP docker repo: 

    sudo docker login -u docker -p docker nexus3.onap.org:10001
  2. Start Holmes using the commands below: 

    # DB_IP - the IP address of Postgres. Do not specify the port. The default port(5432) is adopted.
    # MSB_IP - the IP address of the MSB API gateway service.
    # HOST_IP - the IP address of the host (not the docker daemon) on which the docker container is running.
    # If the 'TESTING' variable is set to '1', you're telling Holmes not to query the IP address of the Holmes containers from the DCAE config binding service but to get it directly from the environment variable 'HOST_IP'.
    sudo docker run --name holmes-rule-management -p 9101:9101 -d -e URL_JDBC=$DB_IP -e MSB_ADDR=$MSB_IP -e TESTING=1 -e HOST_IP=$HOST_IP nexus3.onap.org:10001/onap/holmes/rule-management
    sudo docker run --name holmes-engine-management -p 9102:9102 -d -e URL_JDBC=$DB_IP -e MSB_ADDR=$MSB_IP -e TESTING=1 -e HOST_IP=$HOST_IP nexus3.onap.org:10001/onap/holmes/engine-management
  3. Call the health check API to check whether Holmes has been started up successfully. 

    # the rule management component
    curl http://$MSB_IP/api/holmes-ruel-mgmt/v1/healthcheck
    
    
    # the engine management component
    curl http://$MSB_IP/api/holmes-engine-mgmt/v1/healthcheck

    If the component returns "true", it is spun up successfully. Otherwise you have to use the 'sudo docker ps' and 'sudo docker logs <container_name>' to check what happened during the service instantiation.

Configurations

When Holmes is run in the standalone mode, it has to be configured manually in order to perform the sub/pub actions on DMaaP. 

  1. Subscribing 

    curl -X PUT -H 'Content-Type: application/json' \
    -d '{"name":"unauthenticated.SEC_FAULT_OUTPUT", "url":"http://$DMAAP_IP:$DMAAP_PORT/events/unauthenticated.SEC_FAULT_OUTPUT"}' \
    http://$MSB_IP/api/holmes-engine-mgmt/v1/dmaap/sub

    After setting the subscribing url, a timer task will be started using the default query interval (15s).

  2. Publishing 

    curl -X PUT -H 'Content-Type: application/json' \
    -d '{"name":"unauthenticated.SEC_FAULT_OUTPUT", "url":"http://$DMAAP_IP:$DMAAP_PORT/events/unauthenticated.DCAE_CL_OUTPUT"}' \
    http://$MSB_IP/api/holmes-engine-mgmt/v1/dmaap/pub

Then you have to deploy the rule into Holmes by calling:

curl -X PUT -H 'Content-Type: application/json' -d @holmesrule http://10.96.33.33/api/holmes-rule-mgmt/v1/rule

The rule is saved into a file named "holmesrule" and it attached here.

If there are modifications performed by yourself, please update the contents of the holmesrule file first.

If you want to update an existing rule, you have to add a field named "ruleid" into the holmesrule file using the real id returned by the API called above and then call: 

curl -X POST-H 'Content-Type: application/json' -d @holmesrule http://10.96.33.33/api/holmes-rule-mgmt/v1/rule

For more information, please refer to Rule Management.

Theoretically, after the configurations are finished, when you push the fault data on to the topic named "unauthenticated.SEC_FAULT_OUTPUT" of DMaaP,  the data will be fetched and processed by Holmes and then push back to the topic named "unauthenticated.DCAE_CL_OUTPUT" of DMaaP. To support the correlation analysis, A&AI have to be ready with certain resource data in it and registered to MSB.

Sample Data

DMaaP Message for Alarms from the EMS Driver

["{\"VESversion\":\"v5\",\"event\":{\"commonEventHeader\":{\"sourceId\":\"VNF_194.15.13.138\",\"startEpochMicrosec\":1501518702,\"eventId\":\"1501489595451\",\"nfcNamingCode\":\"\",\"reportingEntityId\":\"0000ZTHX1\",\"internalHeaderFields\":{\"collectorTimeStamp\":\"Fri, 10 20 2017 01:49:27 GMT\"},\"eventType\":\"applicationVnf\",\"priority\":\"High\",\"version\":3,\"reportingEntityName\":\"0000ZTHX1\",\"sequence\":960,\"domain\":\"fault\",\"lastEpochMicrosec\":1501518702,\"eventName\":\"Slave MPU is offline\",\"sourceName\":\"VNF_194.15.13.138\",\"nfNamingCode\":\"\"},\"faultFields\":{\"eventSeverity\":\"CRITICAL\",\"alarmCondition\":\"The slave MPU board is offline or abnormal\",\"faultFieldsVersion\":2,\"eventCategory\":\"equipmentAlarm\",\"specificProblem\":\"The slave MPU board is offline or abnormal\",\"alarmInterfaceA\":\"VNF_194.15.13.138\",\"alarmAdditionalInformation\":[{\"name\":\"specificProblemID\",\"value\":\"315\"},{\"name\":\"objectUID\",\"value\":\"0000ZTHX1PGWGJI6V1\"},{\"name\":\"locationInfo\",\"value\":\"MPU_22_20_0\"},{\"name\":\"addInfo\",\"value\":\"Aid:17;AlarmCode:110010;AlarmReasonCode:110010;Remark:\\\"DeployUnit=22,Node=21,SubNode=0\\\";\"}],\"eventSourceType\":\"PgwFunction\",\"vfStatus\":\"Active\"}}}"]

Above is the literals returned by DMaaP. Hence some symbols are escaped. If you want to push the data onto DMaaP, please use the data contained in VES.

DMaaP Message for Control Loop Events from Holmes

ONSET
{
	   "target": "vserver.vserver-id",
       "target_type": "VM",
       "AAI": {
           "vserver.in-maint": true,
           "vserver.is-closed-loop-disabled": true,
           "vserver.prov-status": "example-prov-status-val-2",
           "vserver.resource-version": "1504912891060"
           "vserver.vserver-id": "example-vserver-id-val-2",
           "vserver.vserver-name": "example-vserver-name-val-2",
           "vserver.vserver-name2": "example-vserver-name2-val-2"
           "vserver.vserver-selflink": "example-vserver-selflink-val-2"
        
       },
       "closedLoopAlarmStart": 1484855291527925,
       "closedLoopEventStatus": "ONSET",
       "closedLoopControlName": "VoLTE",
       "version": "1.0.2",       
       "requestID": "8c1b8bd8-06f7-493f-8ed7-daaa4cc481bc",
       "from": "DCAE"
}
ABATED
{
	   "target": "vserver.vserver-id",
       "target_type": "VM",
       "AAI": {
           "vserver.in-maint": true,
           "vserver.is-closed-loop-disabled": true,
           "vserver.prov-status": "example-prov-status-val-2",
           "vserver.resource-version": "1504912891060"
           "vserver.vserver-id": "example-vserver-id-val-2",
           "vserver.vserver-name": "example-vserver-name-val-2",
           "vserver.vserver-name2": "example-vserver-name2-val-2"
           "vserver.vserver-selflink": "example-vserver-selflink-val-2"        
       },
       "closedLoopAlarmStart": 1484855291527925,
       "closedLoopAlarmEnd": 1484855278392541,
       "closedLoopEventStatus": "ABATED",
       "closedLoopControlName": "VoLTE",
       "version": "1.0.2",       
       "requestID": "8c1b8bd8-06f7-493f-8ed7-daaa4cc481bc",
       "from": "DCAE"
}






  • No labels