def click(): print("Event Triggered") # Initialise elasticsearch request handler passing Elasticsearch Address requestHandler = ElasticRequest.elasticRequest( 'http://10.2.5.21:9200') requestHandler.add_search_term(entry_box.get()) try: r = requestHandler.send_request() except elasticsearch.exceptions.ConnectionError: print("Exception Catched!") messagebox.showerror( "Error", "Connection Error, Unable to connect to server") return except Exceptions.noDataFoundError: print("No search results found!") messagebox.showerror("Error", "No Results found!") return # except Exception as e: # messagebox.showerror("Error", "UNKNOWN ERROR") # print(e) # return data_formatter = DataFormatter.DataFormatter(r) to_display = data_formatter.get_display() self.generate_table(to_display)
def click(event=None): # Initialise elasticsearch request handler passing Elasticsearch Address a = StaticValues.StaticValues() requestHandler = ElasticRequest.elasticRequest( a.get_elasticsearch_server()) # Check if queries are empty else add the queries to request body if self.check_if_empty(entry_box1.get(), entry_box2.get(), entry_box3.get(), entry_box4.get()): requestHandler.set_minimum_matches(0) else: requestHandler.add_search_term(entry_box1.get()) requestHandler.add_search_term(entry_box2.get()) requestHandler.add_search_term(entry_box2.get()) requestHandler.add_search_term(entry_box3.get()) requestHandler.add_search_term(entry_box4.get()) # Checking logger checkbuttons is_adapter_selected = False for i in var: if var[i].get() != 0: is_adapter_selected = True requestHandler.add_logger_name(str(i)) if not is_adapter_selected: print("Please select at least one adapter") messagebox.showerror("Error", "Please check at least one Program") return # Checking Max Results entry if self.contains_value((request_entry_box.get())): requestHandler.change_max_results((request_entry_box.get())) if self.contains_value(datepicker1.get()): requestHandler.set_from_date(datepicker1.get()) if self.contains_value(datepicker2.get()): requestHandler.set_to_date(datepicker2.get()) try: r = requestHandler.send_request() except elasticsearch.exceptions.ConnectionError: print("Exception Caught!") messagebox.showerror( "Error", "Connection Error, Unable to connect to server") return except Exceptions.noDataFoundError: print("No search results found!") messagebox.showerror("Error", "No Results found!") return except Exception as e: messagebox.showerror("Error", "UNKNOWN ERROR") print(e) return data_formatter = DataFormatter.DataFormatter(r) to_display = data_formatter.get_display() self.generate_table(to_display)
def get_data(keyword, keyword2): # # Generate sub table from json in "_source" column # def generate_subTable(data): # for i in range(len(data.index)): # if i == 0: # subtable = pd.DataFrame(actualData.iloc[i, 3]) # subtable.loc[i, "timestamp"] = dateutil.parser.parse(subtable["@timestamp"][i]) # subtable.loc[i, "date"] = (subtable["timestamp"][i] + datetime.timedelta(hours=8)).strftime("%H:%M:%S %d/%m/%Y") # if isinstance(subtable.iloc[i]['response_body'], str): # subtable.loc[i, "response_message"] = json.loads(subtable.iloc[i]['response_body'])['message'] # else: # subtable = subtable.append(pd.DataFrame(actualData.iloc[i, 3]), ignore_index=True) # subtable.loc[i, 'timestamp'] = dateutil.parser.parse(subtable["@timestamp"][i]) # subtable.loc[i, "date"] = (subtable["timestamp"][i] + datetime.timedelta(hours=8)).strftime("%H:%M:%S %d/%m/%Y") # if isinstance(subtable.iloc[i]['response_body'], str): # subtable.loc[i, "response_message"] = json.loads(subtable.iloc[i]['response_body'])['message'] # return subtable # # # Copies values of desired columns to be displayed # def form_displayTable(mainDataFrame): # displayTable = pd.DataFrame() # displayTable['timestamp'] = mainDataFrame['date'] # displayTable['logger_name'] = mainDataFrame['logger_name'] # displayTable['path'] = mainDataFrame['path'] # displayTable['response_status'] = mainDataFrame['response_status'] # displayTable['response_message'] = mainDataFrame['response_message'] # displayTable['request_body'] = mainDataFrame['request_body'] # displayTable['response_body'] = mainDataFrame['response_body'] # return displayTable print("Sendrequest Module Initiated") requestHandler = ElasticRequest.elasticRequest('http://10.2.5.21:9200') r = 0 try: requestHandler.add_search_term(keyword) requestHandler.add_search_term(keyword2) r = requestHandler.send_request() except elasticsearch.exceptions.ConnectionError as e: print("Except block entered") raise elasticsearch.exceptions.ConnectionError # Checking for any search results if (r['hits']['total'] == 0): print("No Hits!") raise Exceptions.noDataFoundError return print("Finished log extraction from ELK") # Generate dataframe based on contents of r # data = pd.DataFrame(r) # # pull out desired data ( search results from the json <cell 1,3> # actualData = pd.DataFrame(data.iloc[1,3]) # # main = generate_subTable(actualData) # # # Join the subtable back with original dataFrame # result = pd.concat([actualData, main], axis=1, join_axes=[actualData.index]) # result = result.sort_values(by=['timestamp'], ascending=False) # result = result.reset_index(drop=True) # # # Remove '_source' column from original Dataframe # result = result.drop('_source', 1) # # # Copy desired fields to separate new df # to_display = form_displayTable(result) data_formatter = DataFormatter.DataFormatter(r) to_display = data_formatter.get_display() return to_display