# Output from logstash A into input of logstash B over tcp

**URL:** <https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161>\
**Category:** Logstash\
**Created:** [September 12, 2015, 3:15am UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161 "2015-09-12T03:15:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![trekr5](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@trekr5](https://discuss.elastic.co/u/trekr5)\
**Post date:** [September 12, 2015, 3:15am UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161/1 "2015-09-12T03:15:08Z")

</div>

Hello,

I'm hoping someone can help me.

I'm trying to output data over tcp from one logstash (logstash A) into the input of another (logstash B).

These are my config files from logstash A:-

```
output {
  tcp {
         host => "XX.X.XXX.XXX" #ip address for logstash B
          mode => "server"
          port => 3389
      }
}

```

logstash B config:

```
input {
      tcp {
       mode => "client"
      host => "XX.X.XX.XXXX" #ip address of logstash A
      port => 3389
  }
}

```

When I run logstash on logstash A, I receive the following error.

Errno::EADDRNOTAVAIL: Can't assign requested address - bind - Cannot assign requested address: bind  
initialize at org/jruby/ext/socket/RubyTCPServer.java:118  
new at org/jruby/RubyIO.java:852  
register at c:/logstash/lib/logstash/outputs/tcp.rb:76  
each at org/jruby/RubyArray.java:1613  
outputworker at c:/logstash/lib/logstash/pipeline.rb:220  
start\_outputs at c:/logstash/lib/logstash/pipeline.rb

I've done a netstat -anp tcp | find ":3389" and the results show:-

TCP XX.X.XX.XX:3389 XX.XXX.XX.XX:49670 ESTABLISHED

I can see that port 3389 has been allocated as a source port but can't seem to configure it to get the data transfer working.

Can you please tell what I'm doing wrong?

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [September 13, 2015, 8:11pm UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161/2 "2015-09-13T20:11:16Z")

</div>

You're mixing up client and server. It's the over way around; the output plugin acts as a client and sends data to an input client that acts as a server. But just skip the `mode` parameter. It's not needed here.

---

<div class="post-metadata">

**Author:** ![trekr5](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@trekr5](https://discuss.elastic.co/u/trekr5)\
**Post date:** [September 16, 2015, 1:57pm UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161/3 "2015-09-16T13:57:45Z")

</div>

many thanks magnus. that worked a treat!

can you configure the output for tcp so that you pass multiple hosts ( "aa.aa.aa.aa", "bb.bb.bb.bb")?

i.e.  
output {  
tcp  
{  
host =\> "aa.aa.aa.aa", "bb.bb.bb.bb"  
port =\> 1234  
}  
}

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [September 16, 2015, 2:06pm UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161/4 "2015-09-16T14:06:04Z")

</div>

Multiple hosts meaning round robin between the supplied hosts? No, that's not supported.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:28am UTC](https://discuss.elastic.co/t/output-from-logstash-a-into-input-of-logstash-b-over-tcp/29161/5 "2017-07-06T05:28:56Z")

</div>


