Guest User

Untitled

a guest
Dec 5th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. import json
  2. import splunklib.client as client
  3. from elasticsearch import Elasticsearch
  4.  
  5. def elasticsearch_query(es_hostname, es_port, index_alias,es_query_body):
  6. """Query ElasticSearch as per Defined Query"""
  7. es_client = Elasticsearch([{'host': es_hostname, 'port': es_port}])
  8. check_index = True
  9. while check_index:
  10. if es_client.indices.exists(index=index_alias):
  11. response = es_client.search(index=index_alias,body=es_query_body)
  12. check_index = False
  13. return response
  14.  
  15. def upload_to_splunk(ip,port,username, password, data):
  16. "Send Collected Data to Splunk."
  17. service = client.connect(
  18. host=ip,
  19. port=port,
  20. username=username,
  21. password=password,
  22. verify=False,
  23. )
  24. target = service.indexes['main']
  25. for line in data:
  26. target.submit(event=str(line), sourcetype="json_no_timestamp")
  27. return True
  28.  
  29. if __name__ == '__main__':
  30. query_size = 5
  31. query_body = {"size": query_size,"query": {"term" : { "type" : "TCA-PartnerVMsAntiSoofPackettoDatacenterAPPDBVMs"
  32. } },"sort": [{"timestamp": "asc"},
  33. {"_uid": "desc"}]}
  34.  
  35. query_data_len = 0
  36. while query_data_len ==0:
  37. query_output = elasticsearch_query("localhost", "9200", "nuage_event", query_body )
  38. query_data = query_output["hits"]["hits"]
  39. query_data_len = len(query_data)
  40. if query_data_len != 0:
  41. upload_to_splunk("10.0.0.4","8089", "admin", "Splunk-R0ck5!", query_data)
  42. first_last_value_timestamp = query_data[-1]["sort"][0]
  43. first_last_value_uid = query_data[-1]["sort"][1]
  44. es_index_values = { "last_timestamp": first_last_value_timestamp, "last_uid": first_last_value_uid}
  45. with open('/usr/local/bin/vss-splunk/timestamps.txt', 'w') as file:
  46. file.write(json.dumps(es_index_values))
  47. file.write('\n')
  48. for item in query_data:
  49. with open('/usr/local/bin/vss-splunk/data.txt', 'a') as file:
  50. file.write("%s\n" % item)
  51.  
  52. update_timestamp = first_last_value_timestamp
  53. update_uid = first_last_value_uid
  54. while True:
  55. updated_query_body = {"size": query_size,"query": {"term" : { "type" : "TCA-PartnerVMsAntiSoofPackettoDatacenterAPPDBVMs"} },
  56. "search_after": [update_timestamp,update_uid],
  57. "sort": [{"timestamp": "asc"},{"_uid": "desc"}]}
  58. updated_query_output = elasticsearch_query("localhost", "9200", "nuage_event", updated_query_body)
  59. updated_query_data = updated_query_output["hits"]["hits"]
  60. updated_query_len = len(updated_query_data)
  61. if updated_query_len != 0:
  62. upload_to_splunk("10.0.0.4","8089", "admin", "Splunk-R0ck5!", updated_query_data)
  63. update_timestamp = updated_query_data[-1]["sort"][0]
  64. update_uid = updated_query_data[-1]["sort"][1]
  65. es_index_values = { "last_timestamp": update_timestamp, "last_uid": update_uid}
  66. with open('/usr/local/bin/vss-splunk/timestamps.txt', 'w') as file:
  67. file.write(json.dumps(es_index_values))
  68. file.write('\n')
  69. for item in updated_query_data:
  70. with open('/usr/local/bin/vss-splunk/data.txt', 'a') as file:
  71. file.write("%s\n" % item)
Add Comment
Please, Sign In to add comment