PageRenderTime 26ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/vsroom/common/sanitizers/nagiosmailreport.py

https://bitbucket.org/clarifiednetworks/vsroom/
Python | 85 lines | 77 code | 7 blank | 1 comment | 4 complexity | 1689a18982ebdea98ae124e867d82719 MD5 | raw file
  1. from abusehelper.core import events, config
  2. import time,re
  3. from vsroom.common import sanitizer
  4. from vsroom.common import timeconversion
  5. from vsroom.common import geo
  6. nagios_date_convert=dict()
  7. nagios_date_convert[' sept '] = ' Sep '
  8. class NagiosReportSanitizer(sanitizer.Sanitizer):
  9. def sanitize(self, event):
  10. # if only one key (id) -> clearing event.
  11. if len(event.keys()) < 2:
  12. return [event]
  13. host = event.value('host','')
  14. event.clear('host')
  15. event.add('asset',host)
  16. match = re.search("^(.*?)-.*?.aso.ee",host)
  17. if match:
  18. area = match.group(1)
  19. area = area[0].upper() + area[1:]
  20. event.add('area', area)
  21. event = geo.add_geo_if_available(area,event)
  22. if event.value('latitude', False) == False:
  23. self.log.warning('No geocoordinates for %s.' % (area))
  24. state = event.value('state',None)
  25. if state != None:
  26. normalize_status = {'critical':'alert'}
  27. if state in normalize_status:
  28. state = normalize_status[state]
  29. event.clear('state')
  30. event.add('status',state)
  31. if event.contains('address'):
  32. addr = event.value('address')
  33. event.add('ip',addr)
  34. datetime = event.value('date/time','unknown')
  35. nagios_converts_t = "|".join(nagios_date_convert.keys())
  36. nagios_converts = re.compile(nagios_converts_t)
  37. if nagios_converts.search(datetime):
  38. for key in nagios_date_convert.keys():
  39. if re.search(key,datetime):
  40. datetime = re.sub(key,nagios_date_convert[key],datetime)
  41. if datetime != 'unknown':
  42. seconds = timeconversion.datetime2seconds(datetime)
  43. else:
  44. seconds = time.time()
  45. isotime = timeconversion.seconds2iso(seconds)
  46. if isotime == None:
  47. isotime = "unknown"
  48. event.add('start',isotime)
  49. #we don't have data for estimating the level of problem, setting all to 10
  50. event.add('problem', 'true')
  51. event.add('status', '10')
  52. subtype = event.value('type',False)
  53. if subtype:
  54. event.add('subtype', subtype)
  55. event.clear('type')
  56. event.add('type', 'interruption')
  57. event.add('sector','comm')
  58. event.add('service', 'data')
  59. now_iso = timeconversion.seconds2iso(time.time())
  60. description = '%s - %s - %s: %s clients' % \
  61. (now_iso, event.value('organization',''),
  62. event.value('asset','')
  63. , event.value('affected_clients', '?'))
  64. event.add('description', description)
  65. return [event]
  66. if __name__ == "__main__":
  67. NagiosReportSanitizer.from_command_line().execute()