0
我正在嘗試流JSON數據並將每個單獨的JSON事件(由\ n分隔)轉換爲與LogStash(localhost 5000)通信的TCP套接字。但是,我似乎只能通過LogStash填充Elasticsearch中的最後一個json對象。我可以驗證API調用的作品,並且應該包含大約70個單獨的事件。只有最後一個通過這個LogStash入口點在Elasticsearch中結束。我還驗證了請求調用中的流和分隔符正在工作並返回單個JSON事件。 iter_lines的每次迭代都會按預期打印單個JSON對象。我想通過這個套接字分別發送每個json對象,但它不起作用。有任何想法嗎?我是否需要拆卸併爲每個json對象構建套接字?Python迭代並通過套接字發送數據(Logstash/Elasticsearch)
HOST = 'localhost'
PORT = 5000
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
sock.connect((HOST, PORT))
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
#make web request
AUTH = {
"Key" : key,
"Email" : email
}
URL = "https://LOGAPIENDPOINT/{}/logs/requests?start={}".format(zone, start)
counter=0
r = requests.get(URL, headers=AUTH, stream=True)
for d in r.iter_lines(delimiter="\n"):
print d
sock.send()
print "Closing Socket"
sock.close()
sys.exit(0)