# Logstash and Jboss

**URL:** <https://discuss.elastic.co/t/logstash-and-jboss/51507>\
**Category:** Logstash\
**Created:** [June 1, 2016, 3:29am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507 "2016-06-01T03:29:27Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 1, 2016, 3:29am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/1 "2016-06-01T03:29:27Z")

</div>

I have newly setup a JBOSS JVM server and would like to use ELK to visualize the Server Host Usage Metrics. Though I can see there are server logs but seem are not showing the Host Usage Metrics, i.g. cpu usage, disk usage, heap usage, etc.

Would anyone can tell me how can I collect these metrics with logstash and any simple conf file to collect them?

---

<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:** [June 1, 2016, 5:45am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/2 "2016-06-01T05:45:55Z")

</div>

Logstash doesn't collect host metrics by itself. Look into e.g. Topbeat or collectd.

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 3, 2016, 5:53am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/3 "2016-06-03T05:53:58Z")

</div>

So is there anyway to collect the metrics and feed into logstash?

---

<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:** [June 3, 2016, 5:55am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/4 "2016-06-03T05:55:27Z")

</div>

Did you look into Topbeat or collectd as I suggested?

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 3, 2016, 6:14am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/5 "2016-06-03T06:14:07Z")

</div>

Yes, but seem they are collecting the whole server metrics instead of a specific application. I can collect metrics of the host but not JBOSS appplication because I am running Jboss as an application in my Redhat Server

---

<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:** [June 3, 2016, 7:35am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/6 "2016-06-03T07:35:04Z")

</div>

Oh. I'm not familiar with a tool that collects metrics for particular applications, unless you're using JMX or if you're running Docker containers that can be monitored with cAdvisor.

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 3, 2016, 8:15am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/7 "2016-06-03T08:15:57Z")

</div>

Is that JMX can be used to read the metrics so?

---

<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:** [June 3, 2016, 9:45am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/8 "2016-06-03T09:45:00Z")

</div>

JMX is an interface for reading metrics about what goes on in a JVM. Logstash has a JMX input plugin.

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 3, 2016, 10:06am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/9 "2016-06-03T10:06:56Z")

</div>

I have install jmx inpuut and make a jboss configuration file in logstash as follow:

> input {  
> jmx{  
> path =\> "/home/lau/Downloads/logstash/jmx"  
> polling\_frequency =\> 30  
> type =\> "jmx"  
> nb\_thread =\> 4  
> }  
> }

> output {  
> elasticsearch { hosts =\> slocalhost }  
> }

Then, inside /home/lau/Downloads/logstash/jmx, I have another jmx.conf file as the follow

> {  
> "url" : "service:jmx:remoting-jmx://localhost:9999",  
> "username" : "jboss",  
> "password": "123456",  
> "alias" : "jmx.instance1.elasticsearch",  
> "host" : "localhost",  
> "port" : 9999,  
> "queries" : [  
> {  
> "object\_name" : "java.lang:type=Memory",  
> "attributes" : ["HeapMemoryUsage", "NonHeapMemoryUsage"],  
> "object\_alias" : "Memory"  
> }, {  
> "object\_name" : "java.lang:type=Runtime",  
> "attributes" : ["Uptime", "StartTime"],  
> "object\_alias" : "Runtime"  
> }, {  
> "object\_name" : "java.lang:type=Threading",  
> "attributes" : ["ThreadCount", "TotalStartedThreadCount", "DaemonThreadCount", "PeakThreadCount"],  
> "object\_alias" : "Threading"  
> }, {  
> "object\_name" : "java.lang:type=OperatingSystem",  
> "attributes" : ["OpenFileDescriptorCount", "FreePhysicalMemorySize", "CommittedVirtualMemorySize", "FreeSwapSpaceSize", "ProcessCpuLoad", "ProcessCpuTime", "SystemCpuLoad", "TotalPhysicalMemorySize", "TotalSwapSpaceSize", "SystemLoadAverage"],  
> "object\_alias" : "OperatingSystem"  
> } ]  
> }

When I run the logstash conf file, it gives me the following result:

```
Create queue dispatching JMX requests to threads {:level=>:info}
Compile regexp for group alias object replacement {:level=>:info}
Initialize 4 threads for JMX metrics collection {:level=>:info}
Loading configuration files in path {:path=>"/home/lau/Downloads/logstash/jmx", :level=>:info}
Issue with configuration file {:file=>"/home/lau/Downloads/logstash/jmx/jmx.conf~", :validation_errors=>["Bad type for parameter 'port', expecting 'Fixnum', found 'String'."], :level=>:warn}
Unsupported protocol: remoting-jmx {:level=>:error}
javax.management.remote.JMXConnectorFactory.newJMXConnector(javax/management/remote/JMXConnectorFactory.java:357)
javax.management.remote.JMXConnectorFactory.connect(javax/management/remote/JMXConnectorFactory.java:267)
java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
RUBY.create_connection(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:221)
RUBY.connection(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:138)
RUBY.thread_jmx(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-2.0.4/lib/logstash/inputs/jmx.rb:210)
RUBY.run(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-2.0.4/lib/logstash/inputs/jmx.rb:321)
java.lang.Thread.run(java/lang/Thread.java:745) {:level=>:error}
Using mapping template from {:path=>nil, :level=>:info}
Attempting to install template {:manage_template=>{"template"=>"logstash-*", "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"_all"=>{"enabled"=>true, "omit_norms"=>true}, "dynamic_templates"=>[{"message_field"=>{"match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"string", "index"=>"analyzed", "omit_norms"=>true, "fielddata"=>{"format"=>"disabled"}}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"string", "index"=>"analyzed", "omit_norms"=>true, "fielddata"=>{"format"=>"disabled"}, "fields"=>{"raw"=>{"type"=>"string", "index"=>"not_analyzed", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"string", "index"=>"not_analyzed"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"float"}, "longitude"=>{"type"=>"float"}}}}}}}, :level=>:info}
slocalhost: Name or service not known {:class=>"Manticore::ResolutionFailure", :level=>:error}
New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["slocalhost"], :level=>:info}
Starting pipeline {:id=>"main", :pipeline_workers=>8, :batch_size=>125, :batch_delay=>5, :max_inflight=>1000, :level=>:info}

```

I have no idea what's wrong with the file. Please help. Thanks sincerely.

---

<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:** [June 3, 2016, 11:18am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/10 "2016-06-03T11:18:41Z")

</div>

> elasticsearch { hosts =\> slocalhost }

Is your ES host really named "slocalhost"?

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 3, 2016, 11:21am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/11 "2016-06-03T11:21:59Z")

</div>

Yes, I have correct this mistake but the problems are still same on except the line of error for this dismissed  
Other mistakes are still there

---

<div class="post-metadata">

**Author:** ![Kennedy\_Kan1](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@Kennedy\_Kan1](https://discuss.elastic.co/u/Kennedy_Kan1)\
**Post date:** [June 6, 2016, 3:54am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/12 "2016-06-06T03:54:18Z")

</div>

I have tried to workout some mistakes, but it keeps giving me the following issues? Is there any solution for it?

Great Thanks.

```
Unsupported protocol: remoting-jmx {:level=>:error}
javax.management.remote.JMXConnectorFactory.newJMXConnector(javax/management/remote/JMXConnectorFactory.java:357)
javax.management.remote.JMXConnectorFactory.connect(javax/management/remote/JMXConnectorFactory.java:267)
java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606)
RUBY.create_connection(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:221)
RUBY.connection(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:138)
RUBY.thread_jmx(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-2.0.4/lib/logstash/inputs/jmx.rb:210)
RUBY.run(/home/lau/Downloads/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-2.0.4/lib/logstash/inputs/jmx.rb:321)
java.lang.Thread.run(java/lang/Thread.java:745) {:level=>:error}
```

---

<div class="post-metadata">

**Author:** ![camminati](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/camminati/32/19440_2.png) [@camminati](https://discuss.elastic.co/u/camminati)\
**Post date:** [June 22, 2017, 7:39pm UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/13 "2017-06-22T19:39:55Z")

</div>

I see this is an old thread but maybe there has been some progress on this?

I want to do exactly that, get _VM/APP metrics_ from **Wildfly 10** (jboss) using **jmx** into **logstash** :

**Setting:**

- **Wildfly** running on a VM on **10.0.0.2**.
- **ELK** running on a VM on **10.0.0.5** ( [see Vagrant config on github](https://github.com/camminati/vagrant-docker-elk)).
- I'm using _logstash-input-jmx_ plugin.
- All ports are exported, so **10.0.0.5** can see **10.0.0.2** (tested with curl), specially port 9990 where jmx is on.
- I can connect to wildfly using the _jconsole_ on the URL `service:jmx:remote+http://localhost:9990` or using the deprecated URL-style: `service:jmx:http-remoting-jmx://localhost:9990` (will complain at the beginning though).

**Problem:**

- when using one of those URLs, logstash complains with

```auto
[2017-06-22T17:31:40,724][ERROR][logstash.inputs.jmx] Unsupported protocol: remote+http

```

or

```auto
[2017-06-22T17:33:25,929][ERROR][logstash.inputs.jmx] Unsupported protocol: http-remoting-jmx`

```

- when using no _url_ in the config, but only _host_ and _port_ it says:

```auto
[2017-06-22T17:31:10,755][ERROR][logstash.inputs.jmx] Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
        java.net.SocketTimeoutException: Read timed out]
[2017-06-22T17:31:10,756][ERROR][logstash.inputs.jmx] javax.management.remote.rmi.RMIConnector.connect(javax/management/remote/rmi/RMIConnector.java:369)
javax.management.remote.JMXConnectorFactory.connect(javax/management/remote/JMXConnectorFactory.java:270)
java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:498)
RUBY.create_connection(/opt/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:220)
RUBY.connection(/opt/logstash/vendor/bundle/jruby/1.9/gems/jmx4r-0.1.4/lib/jmx4r.rb:137)
RUBY.thread_jmx(/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-3.0.1/lib/logstash/inputs/jmx.rb:210)
RUBY.run(/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-jmx-3.0.1/lib/logstash/inputs/jmx.rb:321)
java.lang.Thread.run(java/lang/Thread.java:745)

```

Which means to me, that they are not speaking the right protocol. Since I get _Jconsole_ to connect to the VM, I assume, that _logstash.inputs.jmx_ is using a different protocol (when it obviously hates the URL-Styles above). So how should the URL look like?

Another possibility is, that I am missing something in the **Java** side, since the _Jconsole_ only works when _jboss-cli-client.jar_ is in the class path ([see this article](http://planet.jboss.org/post/remote_jmx_access_to_wildfly_or_jboss_as7_using_jconsole)). It could be possible, that there is some vendor magic involved. Could it be, that the plugin is using java jmx connectors, and I can just put the lib somewhere so it is in the class path?

---

<div class="post-metadata">

**Author:** ![camminati](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/camminati/32/19440_2.png) [@camminati](https://discuss.elastic.co/u/camminati)\
**Post date:** [June 23, 2017, 11:12am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/14 "2017-06-23T11:12:19Z")

</div>

**UPDATE:**

I tested it putting the _jboss-cli-client.jar_ it into `/opt/logstash/vendor/jruby/lib/jboss-cli-client.jar` and it worked.

This looks a little too hacky for me. Is there a proper way to add some libraries to logstash's classpath from a different directory?

I have no knowledge of ruby, so make your answer child-proof please.

I also updated my [camminati/vagrant-docker-elk](https://github.com/camminati/vagrant-docker-elk/) if you want to try stuff.

---

<div class="post-metadata">

**Author:** ![marnold](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@marnold](https://discuss.elastic.co/u/marnold)\
**Post date:** [June 8, 2018, 9:11pm UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/15 "2018-06-08T21:11:32Z")

</div>

I'm running into the same issue, but after following your configuration steps I'm receiving "Unsupported protocol: remote+http". I'm running it on Windows 10, using version 6.2.3 of Logstash, with the jboss-cli-client.jar from v10.0.0.0 of Wildfly.

---

<div class="post-metadata">

**Author:** ![kmsasidhar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kmsasidhar/32/21838_2.png) [@kmsasidhar](https://discuss.elastic.co/u/kmsasidhar)\
**Post date:** [December 12, 2018, 12:16pm UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/16 "2018-12-12T12:16:32Z")

</div>

Any one found a solution for this one?

I followed camminati steps. Still can't get a way around it. Unsupported protocol error.

---

<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:** [November 4, 2022, 4:21am UTC](https://discuss.elastic.co/t/logstash-and-jboss/51507/17 "2022-11-04T04:21:43Z")

</div>


