Skip to content

Commit

Permalink
activemq test & README
Browse files Browse the repository at this point in the history
  • Loading branch information
mlabouardy committed Apr 19, 2017
1 parent 82ab9d8 commit dc715ca
Show file tree
Hide file tree
Showing 3 changed files with 197 additions and 1 deletion.
69 changes: 69 additions & 0 deletions plugins/inputs/activemq/README.md
Original file line number Diff line number Diff line change
@@ -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
```
2 changes: 1 addition & 1 deletion plugins/inputs/activemq/activemq.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package main
package activemq

import (
"encoding/xml"
Expand Down
127 changes: 127 additions & 0 deletions plugins/inputs/activemq/activemq_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package activemq

import (
"encoding/xml"
"testing"

"github.com/influxdata/telegraf/testutil"
)

func TestGatherQueuesMetrics(t *testing.T) {

s := `<queues>
<queue name="sandra">
<stats size="0" consumerCount="0" enqueueCount="0" dequeueCount="0"/>
<feed>
<atom>queueBrowse/sandra?view=rss&amp;feedType=atom_1.0</atom>
<rss>queueBrowse/sandra?view=rss&amp;feedType=rss_2.0</rss>
</feed>
</queue>
<queue name="Test">
<stats size="0" consumerCount="0" enqueueCount="0" dequeueCount="0"/>
<feed>
<atom>queueBrowse/Test?view=rss&amp;feedType=atom_1.0</atom>
<rss>queueBrowse/Test?view=rss&amp;feedType=rss_2.0</rss>
</feed>
</queue>
</queues>`

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>
<topic name="ActiveMQ.Advisory.MasterBroker ">
<stats size="0" consumerCount="0" enqueueCount="1" dequeueCount="0"/>
</topic>
<topic name="AAA ">
<stats size="0" consumerCount="1" enqueueCount="0" dequeueCount="0"/>
</topic>
<topic name="ActiveMQ.Advisory.Topic ">
<stats size="0" consumerCount="0" enqueueCount="1" dequeueCount="0"/>
</topic>
<topic name="ActiveMQ.Advisory.Queue ">
<stats size="0" consumerCount="0" enqueueCount="2" dequeueCount="0"/>
</topic>
<topic name="AAAA ">
<stats size="0" consumerCount="0" enqueueCount="0" dequeueCount="0"/>
</topic>
</topics>`

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>
<subscriber clientId="AAA" subscriptionName="AAA" connectionId="NOTSET" destinationName="AAA" selector="AA" active="no">
<stats pendingQueueSize="0" dispatchedQueueSize="0" dispatchedCounter="0" enqueueCounter="0" dequeueCounter="0"/>
</subscriber>
</subscribers>`

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)
}

0 comments on commit dc715ca

Please sign in to comment.