forked from influxdata/telegraf
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
82ab9d8
commit dc715ca
Showing
3 changed files
with
197 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
package main | ||
package activemq | ||
|
||
import ( | ||
"encoding/xml" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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&feedType=atom_1.0</atom> | ||
<rss>queueBrowse/sandra?view=rss&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&feedType=atom_1.0</atom> | ||
<rss>queueBrowse/Test?view=rss&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) | ||
} |