User Tools

Site Tools


Writing /app/www/public/data/meta/development/applications/alarmcache/works.meta failed
development:applications:alarmcache:works

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
development:applications:alarmcache:works [2017/07/18 11:55] bcoffeydevelopment:applications:alarmcache:works [2021/06/25 10:09] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +Author: Brian Coffey\\
 +Date: 2017-07-18
  
 +===== High Level Operation =====
 +==== SNMP Manager ====
 +Similar to how the ticketer works with eBonding, the SNMP Manager is set to 'listen' on certain domains in the database for changes (inserts, updates and deletes). Different domains can be listened to for different changes. Currently for 3.1 the following are the domains listened on:
 +
 +{{:development:applications:alarmcache:gormdomains.png|}}
 +
 +Once a change is detected on one of these domains, a JSON message is placed on the alarm_cache_inbound_queue with the relevant information. A sample active alarm creation message is shown below (this message was from the AlarmCacheAudit sync up process hence the AlarmCacheAudit event_type tag):
 +
 +<code>
 +{
 +  "ActiveAlarm": {
 +    "acknowledged": false,
 +    "acknowledgedDate": null,
 +    "alarmIdentifier": "29863",
 +    "class": "com.errigal.snmpmanager.ActiveAlarm",
 +    "cleared": false,
 +    "clearedDate": null,
 +    "clearedReason": "na",
 +    "clearingGTS": null,
 +    "context": "dnBgwNodeLost",
 +    "createdDate": "2016-03-01T08:22:36Z",
 +    "creatingGTS": {
 +      "class": "com.errigal.snmpmanager.GeneralTrapSummary",
 +      "id": 24132728
 +    },
 +    "id": 3931820,
 +    "networkElement": {
 +      "class": "com.errigal.snmpmanager.NetworkElement",
 +      "id": 178852
 +    },
 +    "previousStatus": "na",
 +    "repeatsReceived": 0,
 +    "status": "INFORMATION",
 +    "statusUpdatedDate": "2016-03-01T08:22:36Z",
 +    "tickets": [
 +    ],
 +    "type": "na"
 +  },
 +  "Cluster": {
 +    "class": "com.errigal.snmpmanager.Cluster",
 +    "id": 261,
 +    "isNeutralHost": false,
 +    "name": "CA - AT&T",
 +    "network": "ATT",
 +    "parent": null
 +  },
 +  "GeneralTrapSummary": {
 +    "alarmIdentifier": "29863",
 +    "alarmImpacting": true,
 +    "alarmStatus": "INFORMATION",
 +    "class": "com.errigal.snmpmanager.GeneralTrapSummary",
 +    "clearReason": "",
 +    "clearTrap": false,
 +    "context": "dnBgwNodeLost",
 +    "id": 24132728,
 +    "ignored": false,
 +    "networkElement": {
 +      "class": "com.errigal.snmpmanager.NetworkElement",
 +      "id": 178852
 +    },
 +    "receivedDate": "2016-03-01T08:22:26Z",
 +    "summary": "FOR-001A2600413D: dnBgwNodeLost",
 +    "trap": {
 +      "class": "com.errigal.snmpmanager.Trap",
 +      "id": 26186098
 +    },
 +    "trapKnowledge": null,
 +    "trapName": "dnBgwNodeLost",
 +    "trapType": "DeltaNode"
 +  },
 +  "NetworkElement": {
 +    "accessInfo": "",
 +    "additionalInfo": "",
 +    "addressDetails": null,
 +    "alarmAuditorConfiguration": null,
 +    "alarmSyncSetting": null,
 +    "amplifiers": [
 +    ],
 +    "antenna": null,
 +    "assignedTechnology": {
 +      "class": "com.errigal.snmpmanager.Technology",
 +      "id": 30
 +    },
 +    "attachments": [
 +    ],
 +    "attributes": [
 +    ],
 +    "auditable": false,
 +    "btsNumber": "",
 +    "carrierBtsId": "",
 +    "carrierHubId": "10104187",
 +    "carrierNodeId": null,
 +    "carrierSectorId": null,
 +    "carriers": [
 +    ],
 +    "childHardware": [
 +    ],
 +    "children": [
 +    ],
 +    "class": "com.errigal.snmpmanager.knowledge.DasNode",
 +    "clusterName": "CA - AT&T",
 +    "configSyncSetting": null,
 +    "customer": {
 +      "enumType": "com.errigal.snmpmanager.customers.Customer",
 +      "name": "UNKNOWN"
 +    },
 +    "dateAdded": "2015-12-08T03:03:02Z",
 +    "description": "na",
 +    "discoveredName": null,
 +    "discoveredTrapConfiguration": null,
 +    "discoveredVarbinds": [
 +    ],
 +    "discoveryProfile": null,
 +    "discoverySessions": [
 +    ],
 +    "equipmentDetails": null,
 +    "httpSessionManagerConfiguration": null,
 +    "hwType": null,
 +    "id": 178852,
 +    "ipAddress": "",
 +    "isConfigPollable": false,
 +    "isGeneralPollable": false,
 +    "isStatsPollable": false,
 +    "jdeBusinesUnit": "",
 +    "jdeCompanyId": "",
 +    "jdeContractId": "",
 +    "jdeLicence": "",
 +    "jdeSysBusinessUnit": "",
 +    "linkChecks": "",
 +    "linkDown": false,
 +    "loginCredentials": null,
 +    "macAddress": null,
 +    "mapDetails": null,
 +    "name": "FOR-001A2600413D",
 +    "nameInTrap": "na",
 +    "neType": "Node",
 +    "network": "ATT",
 +    "networkElementUpdate": null,
 +    "networkElementUpdateDate": null,
 +    "networkIdentifier": "SW-CA-HWY133-ATT",
 +    "nodeId": null,
 +    "nonSnmpConfigParameters": null,
 +    "nonSnmpPerformanceThresholds": null,
 +    "onAir": false,
 +    "onAirDate": "2015-12-07T08:00:00Z",
 +    "parameterTableCollection": null,
 +    "parameterTableSettings": [
 +    ],
 +    "parent": {
 +      "class": "com.errigal.snmpmanager.NetworkElement",
 +      "id": 164926
 +    },
 +    "parentHardware": null,
 +    "performanceDiscoverySetting": null,
 +    "pollable": false,
 +    "port": "",
 +    "ports": [
 +    ],
 +    "powerDetails": null,
 +    "previousNetworkElementId": null,
 +    "projectCode": "SW-CA-HWY133-ATT",
 +    "remoteDiscoveryConfiguration": null,
 +    "remoteElementType": {
 +      "enumType": "com.errigal.snmpmanager.remotediscovery.remoteelement.RemoteElementType",
 +      "name": "SNMP_DEFAULT"
 +    },
 +    "remoteSystemInfoDiscoveryConfiguration": null,
 +    "shortName": "na",
 +    "showInMonitor": false,
 +    "snmpIpAddress": null,
 +    "specialInstructions": null,
 +    "status": {
 +      "class": "com.errigal.snmpmanager.NetworkElementStatus",
 +      "id": 2
 +    },
 +    "statusChangeEvents": [
 +      {
 +        "class": "com.errigal.snmpmanager.NetworkElementStatusChangeEvent",
 +        "id": 27717
 +      }
 +    ],
 +    "systemType": {
 +      "class": "com.errigal.snmpmanager.knowledge.SystemType",
 +      "id": 2
 +    },
 +    "technology": "DELTANODE",
 +    "ticketerSqlConfig": {
 +      "class": "com.errigal.snmpmanager.TicketerSqlConfig",
 +      "id": 1
 +    },
 +    "useHttps": false,
 +    "workflow": "ExteNet DAS Alarm"
 +  },
 +  "carriers": "[]",
 +  "domain": "com.errigal.snmpmanager.ActiveAlarm",
 +  "event_type": "AlarmCacheAudit",
 +  "object_id": "3931820",
 +  "sections": "[]"
 +}
 +</code>
 +
 +This message is then parsed by the alarm cache which subsequently populates the relevant domains in the alarm cache DB. Once the alarm cache has populated it's DB, regardless of message type (update, create etc.) it pushes back a JSON message onto the snmp_manager_inbound_queue, this approach ensure both systems stay in sync and contain the same information.
 +
 +===== Stomp and RabbitMQ =====
 +
 +When an EMS tab is opened in a browser it spawns a Rabbit MQ queue which handles updates to the frontend GUI (this can be disabled through the Grails Config). This queue lives for as long as the EMS tab is opened in the browser. This queue binds to the 'ems_push_notification_topic' exchange with the routing key 'AlarmCacheUpdate' so anything pushed onto this exchange with that binding key the frontend will obtain. The frontend takes the Alarm Cache Update Message and converts it to an AlarmCacheDTO (GWT JSON to Java Object - Implementation of Interfaces). This object is then fired as a GWT event so GWT code can subscribe to the event. The the naming of these queues is stomp_subscription_*some random characters*
 +
 +
 +GWT communicates with the stomp plugin for RabbitMQ which runs on the loadbalancer server. The URL is http://SERVER:15674/stomp however, if GWT is running on HTTPS then the connection must be HTTPS so RabbitMQ is added to the Apache loadbalancer using a reverse proxy and the URL is https://LB/rabbit