-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdaemon.py
executable file
·119 lines (117 loc) · 4.18 KB
/
daemon.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/env python3
import sys, getpass
import logging
import logging.handlers
import logging.config
from time import sleep
from modules.misc import refresh_time
from modules.daemon import Daemon
from modules.config import warboard_pid_path, warboard_user, warboard_log, warboard_title
from modules.pingdom import get_pingdom_data
from modules.rapidspike import get_rapidspike_data
from modules.appbeat import get_appbeat_data
from modules.port_monitoring import store_port_monitoring_results
from modules.newrelic_infrastructure import get_newrelic_infra_data, store_newrelic_infra_data
from modules.tick import get_tick_data, store_tick_data
from modules.prometheus import get_prometheus_data
from modules.datadog import get_datadog_data
from modules.resources import store_resource_data
from modules.sirportly import store_sirportly_results
from modules.calendar_functions import store_calendar_items
from modules.prune_keys import prune_old_keys
class WarboardDaemon(Daemon):
def run(self):
try:
prune_old_keys()
except Exception as e:
logger.exception(e)
while True:
logger.debug("The daemon is looping")
try:
store_port_monitoring_results('rapidspike', *get_rapidspike_data())
except Exception as e:
logger.exception(e)
try:
store_port_monitoring_results('pingdom', *get_pingdom_data())
except Exception as e:
logger.exception(e)
try:
store_port_monitoring_results('appbeat', *get_appbeat_data())
except Exception as e:
logger.exception(e)
try:
store_newrelic_infra_data(*get_newrelic_infra_data())
except Exception as e:
logger.exception(e)
try:
store_tick_data(*get_tick_data())
except Exception as e:
logger.exception(e)
try:
store_resource_data('prometheus', *get_prometheus_data())
except Exception as e:
logger.exception(e)
try:
store_resource_data('datadog', *get_datadog_data())
except Exception as e:
logger.exception(e)
try:
store_sirportly_results()
except Exception as e:
logger.exception(e)
try:
store_calendar_items()
except Exception as e:
logger.exception(e)
sleep(refresh_time())
if __name__ == '__main__':
logger = logging.getLogger(__name__)
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': False, # this fixes the problem
'formatters': {
'standard': {
'format': '%(asctime)s: warboard_daemon.%(name)s: %(levelname)s: %(message)s',
'datefmt': '%d-%m-%Y %H:%M:%S'
},
},
'handlers': {
'file': {
'level':'INFO',
'class':'logging.handlers.WatchedFileHandler',
'filename': warboard_log,
'formatter': 'standard',
},
},
'loggers': {
'': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True
},
'requests.packages.urllib3': {
'handlers': ['file'],
'level': 'WARNING'
}
}
})
if getpass.getuser() != warboard_user:
print('Please run the warboard with the correct user: '+warboard_user)
exit(1)
daemon = WarboardDaemon(warboard_pid_path)
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
logger.info('Warboard backend daemon started!')
daemon.start()
elif 'stop' == sys.argv[1]:
logger.info('Warboard backend daemon stopped!')
daemon.stop()
elif 'restart' == sys.argv[1]:
logger.info('Warboard backend daemon restarted!')
daemon.restart()
else:
print('Invalid option!')
exit(2)
else:
print('usage: start|stop|restart')
exit(2)