Skip to content

Commit adcc423

Browse files
feat: include analytics service-status
1 parent 5613569 commit adcc423

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

analytics_net.py

+37-11
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __init__(self, config, trawler):
3939
self.trawler = trawler
4040
if self.use_kubeconfig:
4141
logger.error("Analytics metrics currently only available in cluster setting localhost:9200 for testing")
42-
self.hostname = 'localhost:9200'
42+
self.hostname = 'localhost:3009'
4343
self.find_hostname_and_certs()
4444
else:
4545
self.find_hostname_and_certs()
@@ -181,8 +181,33 @@ def fish_analytics_v1(self):
181181
else:
182182
logger.info("Cluster health failed, so no data and no point querying for calls")
183183

184+
def analytics_service_status(self):
185+
""" Query analytics service status"""
186+
error = False
187+
try:
188+
status = requests.get(
189+
"https://{}/cloud/service-status".format(self.hostname),
190+
verify=False,
191+
cert=self.certificates.name
192+
)
193+
status_obj = status.json()
194+
logger.debug(status.text)
195+
except requests.exceptions.ConnectionError:
196+
error = True
197+
logger.error("Error getting cluster health")
198+
status_obj = {}
199+
200+
if not error:
201+
self.trawler.set_gauge('analytics', 'rollover_status', 1 if status_obj.get('rollover_ok', True) else 0)
202+
self.trawler.set_gauge('analytics', 'diskspace_status', 1 if status_obj.get('diskspace_ok', True) else 0)
203+
self.trawler.set_gauge('analytics', 'transform_status', 1 if status_obj.get('transform_ok', True) else 0)
204+
self.trawler.set_gauge('analytics', 'storage_memory_status', 1 if status_obj.get('storage_memory_ok', True) else 0)
205+
self.trawler.set_gauge('analytics', 'reindex_status', 1 if status_obj.get('reindex_ok', True) else 0)
206+
184207
def fish_analytics_v2(self):
185-
errored=False
208+
""" Main fishing function for analytics v2 (10.0.5 onwards)"""
209+
self.analytics_service_status()
210+
errored = False
186211
# Cluster Health
187212
try:
188213
health = requests.get(
@@ -223,29 +248,30 @@ def fish_analytics_v2(self):
223248
else:
224249
start_time = datetime.datetime.now()
225250
metric_name = 'thisloop'.format(self.time_interval)
226-
timeframe = 'start={}'.format(start_time.isoformat('T'))
251+
timeframe = 'start={}'.format(start_time.isoformat('T', timespec='seconds'))
227252
self.last_run = datetime.datetime.now()
228253

229254
else:
230255
now_time = datetime.datetime.now()
231256
start_time = now_time - datetime.timedelta(seconds=30)
232257
metric_name = 'last{}s'.format(self.time_interval)
233-
timeframe = 'start={}'.format(start_time.isoformat('T'))
258+
timeframe = 'start={}'.format(start_time.isoformat('T', timespec='seconds'))
234259
logger.info('https://{}/cloud/dashboards/status?{}'.format(self.hostname, timeframe))
235260
calls_req = requests.get('https://{}/cloud/dashboards/status?{}'.format(self.hostname, timeframe), verify=False,
236261
cert=self.certificates.name)
237262
print(calls_req.text)
238263
summary = calls_req.json()
239264
summary_output = {'1':0,'2':0,'3':0,'4':0,'5':0}
240265
total = 0
241-
for status in summary['status_codes']['data']:
242-
if status['group'][0] in summary_output:
243-
summary_output[status['group'][0]] += status['value']
244-
total += status['value']
266+
if 'status_codes' in summary:
267+
for status in summary['status_codes']['data']:
268+
if status['group'][0] in summary_output:
269+
summary_output[status['group'][0]] += status['value']
270+
total += status['value']
245271

246-
self.trawler.set_gauge('analytics', 'apicalls_{}.total'.format(metric_name), total)
247-
for status in summary_output:
248-
self.trawler.set_gauge('analytics', 'apicalls_{}.{}xx'.format(metric_name, status), summary_output[status])
272+
self.trawler.set_gauge('analytics', 'apicalls_{}.total'.format(metric_name), total)
273+
for status in summary_output:
274+
self.trawler.set_gauge('analytics', 'apicalls_{}.{}xx'.format(metric_name, status), summary_output[status])
249275

250276

251277
@alog.timed_function(logger.trace)

0 commit comments

Comments
 (0)