From 91e472c8640d9d6364c311474b15e9c9a95a0e9f Mon Sep 17 00:00:00 2001 From: Pooja03 Date: Fri, 2 Nov 2018 20:20:57 +0530 Subject: [PATCH] Adding Documentation of Mapper Adding documentation of Mapper on readthedocs Change-Id: I80ec21296ec42ef21552a9e93839ca5209a27a58 Issue-ID: DCAEGEN2-936 Signed-off-by: Pooja03 --- docs/sections/services/mapper/MappingFile.rst | 84 ++++++++++++ .../services/mapper/SampleSnmpTrapConversion.rst | 150 +++++++++++++++++++++ docs/sections/services/mapper/delivery.rst | 17 +++ docs/sections/services/mapper/flow.PNG | Bin 0 -> 35180 bytes docs/sections/services/mapper/flow.rst | 17 +++ docs/sections/services/mapper/index.rst | 30 +++++ docs/sections/services/mapper/installation.rst | 48 +++++++ docs/sections/services/serviceindex.rst | 1 + 8 files changed, 347 insertions(+) create mode 100644 docs/sections/services/mapper/MappingFile.rst create mode 100644 docs/sections/services/mapper/SampleSnmpTrapConversion.rst create mode 100644 docs/sections/services/mapper/delivery.rst create mode 100644 docs/sections/services/mapper/flow.PNG create mode 100644 docs/sections/services/mapper/flow.rst create mode 100644 docs/sections/services/mapper/index.rst create mode 100644 docs/sections/services/mapper/installation.rst diff --git a/docs/sections/services/mapper/MappingFile.rst b/docs/sections/services/mapper/MappingFile.rst new file mode 100644 index 00000000..e99ba5a9 --- /dev/null +++ b/docs/sections/services/mapper/MappingFile.rst @@ -0,0 +1,84 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2018 Tech Mahindra Ltd. + +Mapping File +============ + +Mapping file is needed by Universal VES Adapter to convert the telemetry data into the VES format. +The Adapter uses Smooks Framework to do the data format conversion by using the mapping files. +Currently it requires to write the mapping file manually and upload it using the SnmpMapper application. The file gets stored into the postgres database. The pgInventory instance is used for this. + +| To know more about smooks framework check the following link: +| http://www.smooks.org/guide + +Following is the default snmp mapping file which is used when no mapping file is found while processing event from SNMP Trap Collector. + +.. code-block:: xml + + + + + + + + + + + + + + + + + + + + + + "3.0" + "XXXX" + "VesAdapter" + "fault" + commonEventHeader.domain+"_"+"_"+ faultFields.alarmCondition; + + + + "Medium" + "VesAdapter" + + + + + "MINOR" + "SNMP Agent" + "SNMP Fault" + + + "Active" + + + + + + + + + + + + + + + diff --git a/docs/sections/services/mapper/SampleSnmpTrapConversion.rst b/docs/sections/services/mapper/SampleSnmpTrapConversion.rst new file mode 100644 index 00000000..71f5718b --- /dev/null +++ b/docs/sections/services/mapper/SampleSnmpTrapConversion.rst @@ -0,0 +1,150 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2018 Tech Mahindra Ltd. + +Sample Snmp trap Conversion: +=========================== + +Following is the **Sample SNMP Trap** that will be received by the Universal VES Adapter from the Snmp Trap Collector : + +.. code-block:: json + + { + "cambria.partition":"10.53.172.132", + "trap category":"ONAP-COLLECTOR-SNMPTRAP", + "community len":0, + "protocol version":"v2c", + "varbinds":[ + { + "varbind_value":"CLEARED and CRITICAL severities have the same name", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.2.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"1.3", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.3.0", + "varbind_type":"ObjectIdentifier" + }, + { + "varbind_value":"1.3", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.4.0", + "varbind_type":"ObjectIdentifier" + }, + { + "varbind_value":"CLEARED", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.5.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"Queue manager: Process failure cleared", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.6.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"The queue manager process has been restored to normal operation", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.7.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"The queue manager process has been restored to normal operation. The previously issued alarm has been cleared", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.8.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"Changes to shared config will be synchronized across the cluster", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.9.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"No action", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.10.0", + "varbind_type":"OctetString" + }, + { + "varbind_value":"sprout-1.example.com", + "varbind_oid":"1.3.6.1.4.1.19444.12.2.0.12.0", + "varbind_type":"OctetString" + } + ], + "notify OID":"1.3.6.1.6.3.1.1.5.3", + "community":"", + "uuid":"1fad4802-a6d0-11e8-a349-0242ac110002", + "epoch_serno":15350273450000, + "agent name":"10.53.172.132", + "sysUptime":"0", + "time received":1.535027345042007E9, + "agent address":"10.53.172.132", + "notify OID len":10 + } + + +Following is the converted VES Format of the above SNMP Sample Trap by using the default SNMP Trap Mapping File: + +.. code-block:: json + + { + "event":{ + "commonEventHeader":{ + "startEpochMicrosec":1.5350269902625413E9, + "eventId":"XXXX", + "sequence":0, + "domain":"fault", + "lastEpochMicrosec":1.5350269902625413E9, + "eventName":"fault__ONAP-COLLECTOR-SNMPTRAP", + "sourceName":"10.53.172.132", + "priority":"Medium", + "version":3, + "reportingEntityName":"VesAdapter" + }, + "faultFields":{ + "eventSeverity":"MINOR", + "alarmCondition":"ONAP-COLLECTOR-SNMPTRAP", + "faultFieldsVersion":2, + "specificProblem":"SNMP Fault", + "alarmAdditionalInformation":[ + { + "name":"1.3.6.1.4.1.19444.12.2.0.2.0", + "value":"CLEARED and CRITICAL severities have the same name" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.3.0", + "value":"1.3" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.4.0", + "value":"1.3" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.5.0", + "value":"CLEARED" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.6.0", + "value":"Queue manager: Process failure cleared" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.7.0", + "value":"The queue manager process has been restored to normal operation" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.8.0", + "value":"The queue manager process has been restored to normal operation. The previously issued alarm has been cleared" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.9.0", + "value":"Changes to shared config will be synchronized across the cluster" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.10.0", + "value":"No action" + }, + { + "name":"1.3.6.1.4.1.19444.12.2.0.12.0", + "value":"sprout-1.example.com" + } + ], + "eventSourceType":"SNMP Agent", + "vfStatus":"Active" + } + } + } \ No newline at end of file diff --git a/docs/sections/services/mapper/delivery.rst b/docs/sections/services/mapper/delivery.rst new file mode 100644 index 00000000..10968b7e --- /dev/null +++ b/docs/sections/services/mapper/delivery.rst @@ -0,0 +1,17 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2018 Tech Mahindra Ltd. + +Delivery +======== +Mapper is delivered with **2 Docker container** having spring boot microservices, **UniversalVesAdapter** and **SnmMapper**. UniversalVesAdapter converts SNMP trap JSON to VES and snmpmapper is just helper application for uploading the mapping file to DB. + +| In current release, the installation of mapper service is not integrated with DCAE's installation process and needs to be done manually. + +Docker Containers +--------------- +Docker images can be pulled from ONAP Nexus repository with below commands: + +| docker pull nexus3.onap.org:10003/snapshots/onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor:latest + +| docker pull nexus3.onap.org:10003/snapshots/onap/org.onap.dcaegen2.services.mapper.vesadapter.snmpmapper:latest diff --git a/docs/sections/services/mapper/flow.PNG b/docs/sections/services/mapper/flow.PNG new file mode 100644 index 0000000000000000000000000000000000000000..614d5d5fcaa3a7de849a37ac0c70ca417176fee2 GIT binary patch literal 35180 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