This is a 3 to 4 day task. Need completed as quickly as possible.
Build a service in C# that maintains two threads.
Thread 1 (AlertListener) listens on a configurable UDP port for SNMP traps from Symantec NetBackup OpsCenter. When it receives one, it parses it into an object of type OpsCenterAlert which has fields like those visible in attached sample alert email (FW AlertID1256(Active) Job Completed with Exit Status 196) and adds it to a synchronized queue. See the attached documentation and MIBs to determine how to parse the alerts. Use snmpsharpnet or similar library for working with the traps.
Thread 2 (AlertProcessor) monitors the queue and processes incoming OpsCenterAlerts into IncidentTicket objects using this logic:
· All alerts received within a configurable timespan (like 3 minutes) which have the same job id, alert policy and exit status should be grouped into a single ticket.
· The ticket object should include common fields from the alerts like severity, policy, job id, exit status.
· The ticket should include a list of all the associated alert objects.
· When the thread processes an alert, it removes it from the queue
· Tickets are sent to a web service. This logic can be stubbed in for now and will be completed during integration.
Configuration (via an [url removed, login to view] or other file) should include:
a. UDP port to listen on
b. Time window for grouping like alerts (see above)
c. Logging settings
d. Web service for sending tickets (url, timeout, credentials, etc)
e. Caching info for the alert queue (file path, timing, etc)
f. Anything else you deem necessary
The service should run inside a windows service but it would be nice to also have a host application (winforms or wpf) that has start/stop buttons and displays the log4net output in a console.
2. The solution should exhibit object-oriented principles and best-practices.
3. The solution should be optimized for high-throughput (tens of thousands of alerts over just a few minutes)
4. Use log4net for logging. The logging should make use of levels appropriately and provide useful, descriptive information (no messages like “Now inside MethodA”)
5. Reliability is important, so the alert queue needs to be backed by a file or be cached somehow.
6. Provide full instructions for installing, configuring.