@@ -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 (
@@ -238,14 +263,15 @@ def fish_analytics_v2(self):
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