@@ -39,7 +39,7 @@ def __init__(self, config, trawler):
39
39
self .trawler = trawler
40
40
if self .use_kubeconfig :
41
41
logger .error ("Analytics metrics currently only available in cluster setting localhost:9200 for testing" )
42
- self .hostname = 'localhost:9200 '
42
+ self .hostname = 'localhost:3009 '
43
43
self .find_hostname_and_certs ()
44
44
else :
45
45
self .find_hostname_and_certs ()
@@ -181,8 +181,33 @@ def fish_analytics_v1(self):
181
181
else :
182
182
logger .info ("Cluster health failed, so no data and no point querying for calls" )
183
183
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
+
184
207
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
186
211
# Cluster Health
187
212
try :
188
213
health = requests .get (
@@ -223,29 +248,30 @@ def fish_analytics_v2(self):
223
248
else :
224
249
start_time = datetime .datetime .now ()
225
250
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' ))
227
252
self .last_run = datetime .datetime .now ()
228
253
229
254
else :
230
255
now_time = datetime .datetime .now ()
231
256
start_time = now_time - datetime .timedelta (seconds = 30 )
232
257
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' ))
234
259
logger .info ('https://{}/cloud/dashboards/status?{}' .format (self .hostname , timeframe ))
235
260
calls_req = requests .get ('https://{}/cloud/dashboards/status?{}' .format (self .hostname , timeframe ), verify = False ,
236
261
cert = self .certificates .name )
237
262
print (calls_req .text )
238
263
summary = calls_req .json ()
239
264
summary_output = {'1' :0 ,'2' :0 ,'3' :0 ,'4' :0 ,'5' :0 }
240
265
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' ]
245
271
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 ])
249
275
250
276
251
277
@alog .timed_function (logger .trace )
0 commit comments