# Cannot make Logstash read syslog

**URL:** https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687
**Category:** Logstash
**Created:** [May 4, 2018, 9:10pm UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687 "2018-05-04T21:10:11Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 4, 2018, 9:10pm UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/1 "2018-05-04T21:10:11Z")

</div>

Cannot make logstash receive syslog 514 traffic.  
ELK run successfully and listens to port 514:

```
# docker-compose ps
          Name Command State Ports                                 
----------------------------------------------------------------------------------------------------------------------------------------
logstash_elasticsearch_1 /docker-entrypoint.sh elas ... Up 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                       
logstash_kibana_1 /docker-entrypoint.sh kibana Up 0.0.0.0:5601->5601/tcp                                               
logstash_mylogstash_1 /docker-entrypoint.sh bash Up 0.0.0.0:5000->5000/tcp, 0.0.0.0:514->514/tcp, 0.0.0.0:8080->8080/tcp 

```

I have tried both plugins syslog and tcp/udp listening on port 514:

1- **Syslog plugin:**

```
input {
  syslog { }
}

filter {
}

output {
    stdout {
        codec => rubydebug
    }
}

```

**Result** From inside logstash container ==\> Logstash do not react to syslog traffic:

> 21:03:29.310 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started  
> 21:03:29.344 [Ruby-0-Thread-12: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.4.1/lib/logstash/inputs/syslog.rb:109] INFO logstash.inputs.syslog - Starting syslog udp listener {:address=\>"0.0.0.0:514"}  
> 21:03:29.357 [Ruby-0-Thread-14: /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-syslog-3.4.1/lib/logstash/inputs/syslog.rb:113] INFO logstash.inputs.syslog - Starting syslog tcp listener {:address=\>"0.0.0.0:514"}  
> 21:03:29.533 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=\>9600}

2- **TCP/UDP plugin:**

```
input{
      tcp {
        port => 514
        type => syslog
      }
      udp {
        port => 514
        type => syslog
      }
    }

filter {
}
    

output {
    stdout {
        codec => rubydebug
    }
}

```

**Result** ==\> From inside logstash container: looks like something missing?

> 16:27:55.840 [[main]\<udp] WARN logstash.inputs.udp - UDP listener died {:exception=\>#\<NameError: uninitialized constant LogStash::Inputs::Udp::IPAddr\>, :backtrace=\>["org/jruby/RubyModule.java:2746:in `const_missing'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:87:in `udp\_listener'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:57:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:470:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:463:in `start\_input'"]}

Any hint guys, I am stuck here!!

---

<div class="post-metadata">

### Author: ![atira](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/atira/32/28699_2.png) [@atira](https://discuss.elastic.co/u/atira)
#### Post date: [May 4, 2018, 10:11pm UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/2 "2018-05-04T22:11:49Z")

</div>

I wonder if it would work if you sent syslog data to a non-priviliged port (\>1023).  
Just an idea. Though if logstash is running as root, it should be no problem.

Btw. did you try to run a tcp and a udp listener on the same port at the same time?

---

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 5, 2018, 1:24am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/3 "2018-05-05T01:24:29Z")

</div>

Hi @atira, thanks for your reply.

Removed tcp and left only udp 514 and then with port \> 1024: ==\> same result

> 00:50:41.114 [[main]\<udp] WARN logstash.inputs.udp - UDP listener died {:exception=\>#\<NameError: uninitialized constant LogStash::Inputs::Udp::IPAddr\>, :backtrace=\>["org/jruby/RubyModule.java:2746:in `const_missing'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:87:in `udp\_listener'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:57:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:470:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:463:in `start\_input'"]}

```
input{
  udp {
    # port => 514
    port => 5000
    type => syslog
  }
}

filter {
}
    

output {
    stdout {
        codec => rubydebug
    }
}

```

Should be doing something fundamentally wrong 🤔

The plugins looks there:

```
root@e3a65c2bb61c:/# logstash-plugin list
...
logstash-input-syslog
logstash-input-tcp
logstash-input-udp
root@e3a65c2bb61c:/#

```

---

<div class="post-metadata">

### Author: ![atira](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/atira/32/28699_2.png) [@atira](https://discuss.elastic.co/u/atira)
#### Post date: [May 5, 2018, 8:11am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/4 "2018-05-05T08:11:30Z")

</div>

> [@AJ\_NOURI](#):
>
> type =\> syslog

type uses a string value, so it needs to be put in quotes

`type => "syslog"`

---

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 6, 2018, 4:19am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/5 "2018-05-06T04:19:55Z")

</div>

Put in double quotes, still the same error:

> 04:19:19.999 [[main]\<udp] INFO logstash.inputs.udp - Starting UDP listener {:address=\>"0.0.0.0:5000"}  
> 04:19:20.000 [[main]\<udp] WARN logstash.inputs.udp - UDP listener died {:exception=\>#\<NameError: uninitialized constant LogStash::Inputs::Udp::IPAddr\>, :backtrace=\>["org/jruby/RubyModule.java:2746:in `const_missing'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:87:in `udp\_listener'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-udp-3.3.1/lib/logstash/inputs/udp.rb:57:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:470:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:463:in `start\_input'"]}

---

<div class="post-metadata">

### Author: ![atira](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/atira/32/28699_2.png) [@atira](https://discuss.elastic.co/u/atira)
#### Post date: [May 6, 2018, 9:05am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/6 "2018-05-06T09:05:09Z")

</div>

Entering to a new field for me, never actually tried to debug open source code, but I've taken a look at it.

> [@AJ\_NOURI](#):
>
> uninitialized constant LogStash::Inputs::Udp::IPAddr

You are using version 3.3.1 of the udp plugin, which has the following issue according to the github resource that has been fixed in the current 3.3.2 version:

> Fix missing require for the ipaddr library.

And your error seems to be indicating the same problem.

Long story short: update your UDP plugin to the current version.

---

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 7, 2018, 1:17am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/7 "2018-05-07T01:17:49Z")

</div>

Updated the udp plugin:

```
root@9a9585c43cfc:/# logstash-plugin update
Updating ...
Updated logstash-codec-netflow 3.11.4 to 3.13.2
Updated logstash-filter-mutate 3.3.1 to 3.3.2
Updated logstash-input-beats 3.1.30 to 3.1.31
Updated logstash-input-file 4.0.5 to 4.1.2
Updated logstash-input-http 3.0.10 to 3.1.0
Updated logstash-input-s3 3.3.2 to 3.3.3
Updated logstash-input-udp 3.3.1 to 3.3.2
Updated logstash-output-s3 4.1.1 to 4.1.2

```

* * *

Looks like the plugin doesn't listen to the socket. From a remote machine:

Nothing listening on port 5001:

```
ajn@~/tmp$ nc -zv X.X.239.154 5001
nc: connect to X.X.239.154 port 5001 (tcp) failed: Connection refused

```

THis is confirmed by the packet capture:

 ![Selection_001_07_05](https://us1.discourse-cdn.com/elastic/original/3X/c/b/cb90651f711c7b08b406b9d5232045643a95348a.jpg)

Eventhough, for example kibana port works:

```
ajn@~/tmp$ nc -zv X.X.239.154 5601
Connection to X.X.239.154 5601 port [tcp/*] succeeded!
ajn@~/tmp$ 

```

No port restriction on the server or in front of it.

eventhough, logstash start shows **_"Starting UDP listener "_**

> 01:00:59.393 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started  
> 01:00:59.424 [[main]\<udp] INFO logstash.inputs.udp - Starting UDP listener {:address=\>"0.0.0.0:5001"}  
> 01:00:59.492 [[main]\<udp] INFO logstash.inputs.udp - UDP listener started {:address=\>"0.0.0.0:5001", :receive\_buffer\_bytes=\>"106496", :queue\_size=\>"2000"}  
> 01:00:59.569 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=\>9600}

this is the config:

```
input {
# syslog {}
  udp {
    port => 5001
    type => "syslog"
  }

}
filter {
}
    
output {
    stdout {
        codec => rubydebug
    }
}

```

And I used the following docker-compose to start ELK on the server side:

```
# cat docker-compose.yml 
version: '2'
services:
    elasticsearch:
        image: elasticsearch
        ports:
            - "9200:9200"
            - "9300:9300"
        volumes:
            - ./data:/usr/share/elasticsearch/data
    mylogstash:
        build:
            context: .
            dockerfile: Dockerfile
        volumes:
            - ./config-dir:/mylogstash/config-dir:rw
            - ./data:/mylogstash/data:rw
        ports:
            - "5000:5000"
            - "5001:5001"
            - "514:514"
        tty: true
        command: ["bash"]
        links:
            - elasticsearch
    kibana:
        image: kibana
        ports:
            - "5601:5601"
        links:
            - elasticsearch

```

And start correctly as expected:

```
# docker-compose ps
         Name Command State Ports          
-----------------------------------------------------------------------------------------------------
logstash_elasticsearch_ /docker-entrypoint.sh Up 0.0.0.0:9200->9200/tcp, 
1 elas ... 0.0.0.0:9300->9300/tcp  
logstash_kibana_1 /docker-entrypoint.sh Up 0.0.0.0:5601->5601/tcp  
                          kibana                                                                      
logstash_mylogstash_1 /docker-entrypoint.sh Up 0.0.0.0:5000->5000/tcp, 
                          bash 0.0.0.0:5001->5001/tcp, 
                                                                              0.0.0.0:514->514/tcp

```

---

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 7, 2018, 11:07pm UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/8 "2018-05-07T23:07:35Z")

</div>

Tested with installed version and it works.  
Either something wrong with my ELK docker-compsoe config. or with logstash container 🤔

Are ELK containers production ready?

---

<div class="post-metadata">

### Author: ![rcowart](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rcowart/32/88091_2.png) [@rcowart](https://discuss.elastic.co/u/rcowart)
#### Post date: [May 8, 2018, 5:33am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/9 "2018-05-08T05:33:49Z")

</div>

Notice in the output of `docker-compose ps` you see only TCP ports lists. No UDP. In your docker-compose file you should try:

```auto
ports:
    - "5000/tcp:5000/tcp"
    - "5001/udp:5001/udp"
    - "514/udp:514/udp"
    - "514/tcp:514/tcp"

```

Adjust for whatever ports you end up using.

This is explained here... [https://github.com/moby/moby/issues/32958](https://github.com/moby/moby/issues/32958)

---

<div class="post-metadata">

### Author: ![AJ\_NOURI](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aj_nouri/32/29741_2.png) [@AJ\_NOURI](https://discuss.elastic.co/u/AJ_NOURI)
#### Post date: [May 9, 2018, 3:03am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/10 "2018-05-09T03:03:15Z")

</div>

Thanks for the hint @rcowart .  
Indeed it was only listening to tcp.

And it accepts the below foramt:

```
ports:
    - "5000:5000/tcp"

```

Otherwise it throws an error:

> services.mylogstash.ports is invalid: Invalid port "5000/tcp:5000/tcp", should be [[remote\_ip:]remote\_port[-remote\_port]:]port[/protocol]

* * *

Now it also listens to udp:

```
$ docker-compose ps
          Name Command State Ports                 
------------------------------------------------------------------------------------------------------------
elksyslog_elasticsearch_1 /docker-entrypoint.sh elas ... Up 0.0.0.0:9200->9200/tcp,                
                                                                     0.0.0.0:9300->9300/tcp                 
elksyslog_kibana_1 /docker-entrypoint.sh kibana Up 0.0.0.0:5601->5601/tcp                 
elksyslog_mylogstash_1 /docker-entrypoint.sh bash Up 0.0.0.0:5000->5000/tcp,                
                                                                     0.0.0.0:5001->5001/udp,                
                                                                     0.0.0.0:514->514/udp,                  
                                                                     0.0.0.0:8080->8080/tcp                 

```

Now it works fine!!  
Thanks alot @rcowart

---

<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: [June 6, 2018, 3:03am UTC](https://discuss.elastic.co/t/cannot-make-logstash-read-syslog/130687/11 "2018-06-06T03:03:15Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
