感谢您的回复。
我最终编写了自己的脚本。
- 我在记录器节点上启动netcat_reader.py。
- 我在相同或不同的工作节点上启动 2 个netcat_writer.py shell:
python netcat_writer.py writer1&
python netcat_writer.py writer2&
- 结果是来自日志服务器上累积的 2 个报告脚本 (netcat_writer.py) 的消息组合日志:
Receiving...
timed out 1
timed out 2
timed out 1
timed out 2
timed out 1
timed out 2
timed out 1
Got connection from ('10.20.102.39', 17992)
Got connection from ('10.20.102.39', 17994)
client:one --0--
client:two --0--
client:one --1--
client:one --2--
client:one --3--
client:one --4--
client:one --5--
client:two --1--
client:one --6--
client:two --2--
client:one --7--
client:two --3--
client:one --8--
client:two --4--
client:one --9--
client:two --5--
client:two --6--
client:two --7--
client:two --8--
client:two --9--
netcat_reader.py(在 loggerhost123 中运行):
import socket
import sys
e=sys.exit
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setblocking(False)
s.settimeout(2)
#
host = socket.gethostname()
port = 12346
s.bind((host, port))
s.listen(5)
c1=c2=t1=t2=None
print "Receiving..."
while True:
try:
if not c1:
c1, addr1 = s.accept()
print 'Got connection from', addr1
if t1:
print t1.decode('utf-8')
if c1:
t1 = c1.recv(1024)
except socket.error, er:
err = er.args[0]
print err ,1
try:
if not c2:
c2, addr2 = s.accept()
print 'Got connection from', addr2
if t2:
print t2.decode('utf-8')
if c2:
t2 = c2.recv(1024)
except socket.error, er:
err = er.args[0]
print err,2
c1.close()
c2.close()
s.shutdown(socket.SHUT_WR)
s.close()
print "Done Receiving"
e(0)
netcat_writer.py(在报告节点上运行)
import socket
import sys, time
e=sys.exit
assert len(sys.argv)==2, 'Client name is not set'
client_name= sys.argv[1]
class NetcatWriter:
def __init__(self, port,client_name):
print '__init__'
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.host = 'loggerhost123'
self.port = port
self.client_name=client_name
self.s.connect((self.host, self.port))
def __enter__(self):
print '__enter__'
return self
def write(self,i):
print 'Sending..',
l = 'client:%s --%d--' % (self.client_name,i)
while (l):
print '.',
self.s.send(l)
l=None
#f.close()
print "Done Sending"
#
def __exit__(self, exc_type, exc_value, traceback):
self.s.shutdown(socket.SHUT_WR)
self.s.close
netcat= NetcatWriter(12346,client_name)
if 1:
for i in range(10):
netcat.write(i)
time.sleep(0.1)
e(0)