diff --git a/plugins/inputs/activemq/README.md b/plugins/inputs/activemq/README.md
index e69de29bb2d1d..aa6198ed0739b 100644
--- a/plugins/inputs/activemq/README.md
+++ b/plugins/inputs/activemq/README.md
@@ -0,0 +1,69 @@
+# Telegraf Input Plugin: ActiveMQ
+
+This plugin gather queues, topics & subscribers metrics using ActiveMQ Console API.
+
+### Configuration:
+
+```toml
+# Description
+[[inputs.activemq]]
+ ## Required ActiveMQ Endpoint
+ server = "192.168.50.10"
+ ## Required ActiveMQ port
+ port = 8161
+ ## Required username used for request HTTP Basic Authentication
+ username = "admin"
+ ## Required password used for HTTP Basic Authentication
+ password = "admin"
+ ## Required ActiveMQ webadmin root path
+ webadmin = "admin"
+```
+
+### Measurements & Fields:
+
+Every effort was made to preserve the names based on the XML response from the ActiveMQ Console API.
+
+- queues_metrics:
+ - size
+ - consumer_count
+ - enqueue_count
+ - dequeue_count
+ - topics_metrics:
+ - size
+ - consumer_count
+ - enqueue_count
+ - dequeue_count
+ - subscribers_metrics:
+ - pending_queue_size
+ - dispatched_queue_size
+ - dispatched_counter
+ - enqueue_counter
+ - dequeue_counter
+
+### Tags:
+
+- queues_metrics:
+ - name
+- topics_metrics:
+ - name
+- subscribers_metrics:
+ - client_id
+ - subscription_name
+ - connection_id
+ - destination_name
+ - selector
+ - active
+
+### Example Output:
+
+```
+$ ./telegraf -config telegraf.conf -input-filter activemq -test
+queues_metrics,name=sandra,host=88284b2fe51b consumer_count=0i,enqueue_count=0i,dequeue_count=0i,size=0i 1492610703000000000
+queues_metrics,name=Test,host=88284b2fe51b dequeue_count=0i,size=0i,consumer_count=0i,enqueue_count=0i 1492610703000000000
+topics_metrics,name=ActiveMQ.Advisory.MasterBroker\ ,host=88284b2fe51b size=0i,consumer_count=0i,enqueue_count=1i,dequeue_count=0i 1492610703000000000
+topics_metrics,host=88284b2fe51b,name=AAA\ size=0i,consumer_count=1i,enqueue_count=0i,dequeue_count=0i 1492610703000000000
+topics_metrics,name=ActiveMQ.Advisory.Topic\ ,host=88284b2fe51b enqueue_count=1i,dequeue_count=0i,size=0i,consumer_count=0i 1492610703000000000
+topics_metrics,name=ActiveMQ.Advisory.Queue\ ,host=88284b2fe51b size=0i,consumer_count=0i,enqueue_count=2i,dequeue_count=0i 1492610703000000000
+topics_metrics,name=AAAA\ ,host=88284b2fe51b consumer_count=0i,enqueue_count=0i,dequeue_count=0i,size=0i 1492610703000000000
+subscribers_metrics,connection_id=NOTSET,destination_name=AAA,selector=AA,active=no,host=88284b2fe51b,client_id=AAA,subscription_name=AAA pending_queue_size=0i,dispatched_queue_size=0i,dispatched_counter=0i,enqueue_counter=0i,dequeue_counter=0i 1492610703000000000
+```
diff --git a/plugins/inputs/activemq/activemq.go b/plugins/inputs/activemq/activemq.go
index 41de0eeb9eb1a..f7433329f4396 100644
--- a/plugins/inputs/activemq/activemq.go
+++ b/plugins/inputs/activemq/activemq.go
@@ -1,4 +1,4 @@
-package main
+package activemq
import (
"encoding/xml"
diff --git a/plugins/inputs/activemq/activemq_test.go b/plugins/inputs/activemq/activemq_test.go
new file mode 100644
index 0000000000000..43552f56776bd
--- /dev/null
+++ b/plugins/inputs/activemq/activemq_test.go
@@ -0,0 +1,127 @@
+package activemq
+
+import (
+ "encoding/xml"
+ "testing"
+
+ "github.com/influxdata/telegraf/testutil"
+)
+
+func TestGatherQueuesMetrics(t *testing.T) {
+
+ s := `
+
+
+
+queueBrowse/sandra?view=rss&feedType=atom_1.0
+queueBrowse/sandra?view=rss&feedType=rss_2.0
+
+
+
+
+
+queueBrowse/Test?view=rss&feedType=atom_1.0
+queueBrowse/Test?view=rss&feedType=rss_2.0
+
+
+`
+
+ queues := Queues{}
+
+ xml.Unmarshal([]byte(s), &queues)
+
+ records := make(map[string]interface{})
+ tags := make(map[string]string)
+
+ tags["name"] = "Test"
+
+ records["size"] = 0
+ records["consumer_count"] = 0
+ records["enqueue_count"] = 0
+ records["dequeue_count"] = 0
+
+ var acc testutil.Accumulator
+
+ activeMQ := new(ActiveMQ)
+
+ activeMQ.GatherQueuesMetrics(&acc, queues)
+ acc.AssertContainsTaggedFields(t, "queues_metrics", records, tags)
+}
+
+func TestGatherTopicsMetrics(t *testing.T) {
+
+ s := `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`
+
+ topics := Topics{}
+
+ xml.Unmarshal([]byte(s), &topics)
+
+ records := make(map[string]interface{})
+ tags := make(map[string]string)
+
+ tags["name"] = "ActiveMQ.Advisory.MasterBroker "
+
+ records["size"] = 0
+ records["consumer_count"] = 0
+ records["enqueue_count"] = 1
+ records["dequeue_count"] = 0
+
+ var acc testutil.Accumulator
+
+ activeMQ := new(ActiveMQ)
+
+ activeMQ.GatherTopicsMetrics(&acc, topics)
+ acc.AssertContainsTaggedFields(t, "topics_metrics", records, tags)
+}
+
+func TestGatherSubscribersMetrics(t *testing.T) {
+
+ s := `
+
+
+
+`
+
+ subscribers := Subscribers{}
+
+ xml.Unmarshal([]byte(s), &subscribers)
+
+ records := make(map[string]interface{})
+ tags := make(map[string]string)
+
+ tags["client_id"] = "AAA"
+ tags["subscription_name"] = "AAA"
+ tags["connection_id"] = "NOTSET"
+ tags["destination_name"] = "AAA"
+ tags["selector"] = "AA"
+ tags["active"] = "no"
+
+ records["pending_queue_size"] = 0
+ records["dispatched_queue_size"] = 0
+ records["dispatched_counter"] = 0
+ records["enqueue_counter"] = 0
+ records["dequeue_counter"] = 0
+
+ var acc testutil.Accumulator
+
+ activeMQ := new(ActiveMQ)
+
+ activeMQ.GatherSubscribersMetrics(&acc, subscribers)
+ acc.AssertContainsTaggedFields(t, "subscribers_metrics", records, tags)
+}