Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
100
plugins/inputs/activemq/README.md
Normal file
100
plugins/inputs/activemq/README.md
Normal file
|
@ -0,0 +1,100 @@
|
|||
# ActiveMQ Input Plugin
|
||||
|
||||
This plugin gathers queue, topics and subscribers metrics using the Console API
|
||||
[ActiveMQ][activemq] message broker daemon.
|
||||
|
||||
⭐ Telegraf v1.8.0
|
||||
🏷️ messaging
|
||||
💻 all
|
||||
|
||||
[activemq]: https://activemq.apache.org/
|
||||
|
||||
## Global configuration options <!-- @/docs/includes/plugin_config.md -->
|
||||
|
||||
In addition to the plugin-specific configuration settings, plugins support
|
||||
additional global and plugin configuration settings. These settings are used to
|
||||
modify metrics, tags, and field or create aliases and configure ordering, etc.
|
||||
See the [CONFIGURATION.md][CONFIGURATION.md] for more details.
|
||||
|
||||
[CONFIGURATION.md]: ../../../docs/CONFIGURATION.md#plugins
|
||||
|
||||
## Configuration
|
||||
|
||||
```toml @sample.conf
|
||||
# Gather ActiveMQ metrics
|
||||
[[inputs.activemq]]
|
||||
## ActiveMQ WebConsole URL
|
||||
url = "http://127.0.0.1:8161"
|
||||
|
||||
## Credentials for basic HTTP authentication
|
||||
# username = "admin"
|
||||
# password = "admin"
|
||||
|
||||
## Required ActiveMQ webadmin root path
|
||||
# webadmin = "admin"
|
||||
|
||||
## Maximum time to receive response.
|
||||
# response_timeout = "5s"
|
||||
|
||||
## Optional TLS Config
|
||||
# tls_ca = "/etc/telegraf/ca.pem"
|
||||
# tls_cert = "/etc/telegraf/cert.pem"
|
||||
# tls_key = "/etc/telegraf/key.pem"
|
||||
## Use TLS but skip chain & host verification
|
||||
# insecure_skip_verify = false
|
||||
```
|
||||
|
||||
## Metrics
|
||||
|
||||
Every effort was made to preserve the names based on the XML response from the
|
||||
ActiveMQ Console API.
|
||||
|
||||
- activemq_queues
|
||||
- tags:
|
||||
- name
|
||||
- source
|
||||
- port
|
||||
- fields:
|
||||
- size
|
||||
- consumer_count
|
||||
- enqueue_count
|
||||
- dequeue_count
|
||||
- activemq_topics
|
||||
- tags:
|
||||
- name
|
||||
- source
|
||||
- port
|
||||
- fields:
|
||||
- size
|
||||
- consumer_count
|
||||
- enqueue_count
|
||||
- dequeue_count
|
||||
- activemq_subscribers
|
||||
- tags:
|
||||
- client_id
|
||||
- subscription_name
|
||||
- connection_id
|
||||
- destination_name
|
||||
- selector
|
||||
- active
|
||||
- source
|
||||
- port
|
||||
- fields:
|
||||
- pending_queue_size
|
||||
- dispatched_queue_size
|
||||
- dispatched_counter
|
||||
- enqueue_counter
|
||||
- dequeue_counter
|
||||
|
||||
## Example Output
|
||||
|
||||
```text
|
||||
activemq_queues,name=sandra,host=88284b2fe51b,source=localhost,port=8161 consumer_count=0i,enqueue_count=0i,dequeue_count=0i,size=0i 1492610703000000000
|
||||
activemq_queues,name=Test,host=88284b2fe51b,source=localhost,port=8161 dequeue_count=0i,size=0i,consumer_count=0i,enqueue_count=0i 1492610703000000000
|
||||
activemq_topics,name=ActiveMQ.Advisory.MasterBroker\ ,host=88284b2fe51b,source=localhost,port=8161 size=0i,consumer_count=0i,enqueue_count=1i,dequeue_count=0i 1492610703000000000
|
||||
activemq_topics,host=88284b2fe51b,name=AAA\,source=localhost,port=8161 size=0i,consumer_count=1i,enqueue_count=0i,dequeue_count=0i 1492610703000000000
|
||||
activemq_topics,name=ActiveMQ.Advisory.Topic\,source=localhost,port=8161 ,host=88284b2fe51b enqueue_count=1i,dequeue_count=0i,size=0i,consumer_count=0i 1492610703000000000
|
||||
activemq_topics,name=ActiveMQ.Advisory.Queue\,source=localhost,port=8161 ,host=88284b2fe51b size=0i,consumer_count=0i,enqueue_count=2i,dequeue_count=0i 1492610703000000000
|
||||
activemq_topics,name=AAAA\ ,host=88284b2fe51b,source=localhost,port=8161 consumer_count=0i,enqueue_count=0i,dequeue_count=0i,size=0i 1492610703000000000
|
||||
activemq_subscribers,connection_id=NOTSET,destination_name=AAA,,source=localhost,port=8161,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
|
||||
```
|
285
plugins/inputs/activemq/activemq.go
Normal file
285
plugins/inputs/activemq/activemq.go
Normal file
|
@ -0,0 +1,285 @@
|
|||
//go:generate ../../../tools/readme_config_includer/generator
|
||||
package activemq
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"encoding/xml"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/config"
|
||||
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||
"github.com/influxdata/telegraf/plugins/inputs"
|
||||
)
|
||||
|
||||
//go:embed sample.conf
|
||||
var sampleConfig string
|
||||
|
||||
type ActiveMQ struct {
|
||||
Server string `toml:"server" deprecated:"1.11.0;use 'url' instead"`
|
||||
Port int `toml:"port" deprecated:"1.11.0;use 'url' instead"`
|
||||
URL string `toml:"url"`
|
||||
Username string `toml:"username"`
|
||||
Password string `toml:"password"`
|
||||
Webadmin string `toml:"webadmin"`
|
||||
ResponseTimeout config.Duration `toml:"response_timeout"`
|
||||
tls.ClientConfig
|
||||
|
||||
client *http.Client
|
||||
baseURL *url.URL
|
||||
}
|
||||
|
||||
type topics struct {
|
||||
XMLName xml.Name `xml:"topics"`
|
||||
TopicItems []topic `xml:"topic"`
|
||||
}
|
||||
|
||||
type topic struct {
|
||||
XMLName xml.Name `xml:"topic"`
|
||||
Name string `xml:"name,attr"`
|
||||
Stats stats `xml:"stats"`
|
||||
}
|
||||
|
||||
type subscribers struct {
|
||||
XMLName xml.Name `xml:"subscribers"`
|
||||
SubscriberItems []subscriber `xml:"subscriber"`
|
||||
}
|
||||
|
||||
type subscriber struct {
|
||||
XMLName xml.Name `xml:"subscriber"`
|
||||
ClientID string `xml:"clientId,attr"`
|
||||
SubscriptionName string `xml:"subscriptionName,attr"`
|
||||
ConnectionID string `xml:"connectionId,attr"`
|
||||
DestinationName string `xml:"destinationName,attr"`
|
||||
Selector string `xml:"selector,attr"`
|
||||
Active string `xml:"active,attr"`
|
||||
Stats stats `xml:"stats"`
|
||||
}
|
||||
|
||||
type queues struct {
|
||||
XMLName xml.Name `xml:"queues"`
|
||||
QueueItems []queue `xml:"queue"`
|
||||
}
|
||||
|
||||
type queue struct {
|
||||
XMLName xml.Name `xml:"queue"`
|
||||
Name string `xml:"name,attr"`
|
||||
Stats stats `xml:"stats"`
|
||||
}
|
||||
|
||||
type stats struct {
|
||||
XMLName xml.Name `xml:"stats"`
|
||||
Size int `xml:"size,attr"`
|
||||
ConsumerCount int `xml:"consumerCount,attr"`
|
||||
EnqueueCount int `xml:"enqueueCount,attr"`
|
||||
DequeueCount int `xml:"dequeueCount,attr"`
|
||||
PendingQueueSize int `xml:"pendingQueueSize,attr"`
|
||||
DispatchedQueueSize int `xml:"dispatchedQueueSize,attr"`
|
||||
DispatchedCounter int `xml:"dispatchedCounter,attr"`
|
||||
EnqueueCounter int `xml:"enqueueCounter,attr"`
|
||||
DequeueCounter int `xml:"dequeueCounter,attr"`
|
||||
}
|
||||
|
||||
func (*ActiveMQ) SampleConfig() string {
|
||||
return sampleConfig
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) Init() error {
|
||||
if a.ResponseTimeout < config.Duration(time.Second) {
|
||||
a.ResponseTimeout = config.Duration(time.Second * 5)
|
||||
}
|
||||
|
||||
var err error
|
||||
u := &url.URL{Scheme: "http", Host: a.Server + ":" + strconv.Itoa(a.Port)}
|
||||
if a.URL != "" {
|
||||
u, err = url.Parse(a.URL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(u.Scheme, "http") {
|
||||
return fmt.Errorf("invalid scheme %q", u.Scheme)
|
||||
}
|
||||
|
||||
if u.Hostname() == "" {
|
||||
return fmt.Errorf("invalid hostname %q", u.Hostname())
|
||||
}
|
||||
|
||||
a.baseURL = u
|
||||
|
||||
a.client, err = a.createHTTPClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) Gather(acc telegraf.Accumulator) error {
|
||||
dataQueues, err := a.getMetrics(a.queuesURL())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
queues := queues{}
|
||||
err = xml.Unmarshal(dataQueues, &queues)
|
||||
if err != nil {
|
||||
return fmt.Errorf("queues XML unmarshal error: %w", err)
|
||||
}
|
||||
|
||||
dataTopics, err := a.getMetrics(a.topicsURL())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
topics := topics{}
|
||||
err = xml.Unmarshal(dataTopics, &topics)
|
||||
if err != nil {
|
||||
return fmt.Errorf("topics XML unmarshal error: %w", err)
|
||||
}
|
||||
|
||||
dataSubscribers, err := a.getMetrics(a.subscribersURL())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
subscribers := subscribers{}
|
||||
err = xml.Unmarshal(dataSubscribers, &subscribers)
|
||||
if err != nil {
|
||||
return fmt.Errorf("subscribers XML unmarshal error: %w", err)
|
||||
}
|
||||
|
||||
a.gatherQueuesMetrics(acc, queues)
|
||||
a.gatherTopicsMetrics(acc, topics)
|
||||
a.gatherSubscribersMetrics(acc, subscribers)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) createHTTPClient() (*http.Client, error) {
|
||||
tlsCfg, err := a.ClientConfig.TLSConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
client := &http.Client{
|
||||
Transport: &http.Transport{
|
||||
TLSClientConfig: tlsCfg,
|
||||
},
|
||||
Timeout: time.Duration(a.ResponseTimeout),
|
||||
}
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) getMetrics(u string) ([]byte, error) {
|
||||
req, err := http.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if a.Username != "" || a.Password != "" {
|
||||
req.SetBasicAuth(a.Username, a.Password)
|
||||
}
|
||||
|
||||
resp, err := a.client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return nil, fmt.Errorf("%s returned HTTP status %s", u, resp.Status)
|
||||
}
|
||||
|
||||
return io.ReadAll(resp.Body)
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) gatherQueuesMetrics(acc telegraf.Accumulator, queues queues) {
|
||||
for _, queue := range queues.QueueItems {
|
||||
records := make(map[string]interface{})
|
||||
tags := make(map[string]string)
|
||||
|
||||
tags["name"] = strings.TrimSpace(queue.Name)
|
||||
tags["source"] = a.baseURL.Hostname()
|
||||
tags["port"] = a.baseURL.Port()
|
||||
|
||||
records["size"] = queue.Stats.Size
|
||||
records["consumer_count"] = queue.Stats.ConsumerCount
|
||||
records["enqueue_count"] = queue.Stats.EnqueueCount
|
||||
records["dequeue_count"] = queue.Stats.DequeueCount
|
||||
|
||||
acc.AddFields("activemq_queues", records, tags)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) gatherTopicsMetrics(acc telegraf.Accumulator, topics topics) {
|
||||
for _, topic := range topics.TopicItems {
|
||||
records := make(map[string]interface{})
|
||||
tags := make(map[string]string)
|
||||
|
||||
tags["name"] = topic.Name
|
||||
tags["source"] = a.baseURL.Hostname()
|
||||
tags["port"] = a.baseURL.Port()
|
||||
|
||||
records["size"] = topic.Stats.Size
|
||||
records["consumer_count"] = topic.Stats.ConsumerCount
|
||||
records["enqueue_count"] = topic.Stats.EnqueueCount
|
||||
records["dequeue_count"] = topic.Stats.DequeueCount
|
||||
|
||||
acc.AddFields("activemq_topics", records, tags)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) gatherSubscribersMetrics(acc telegraf.Accumulator, subscribers subscribers) {
|
||||
for _, subscriber := range subscribers.SubscriberItems {
|
||||
records := make(map[string]interface{})
|
||||
tags := make(map[string]string)
|
||||
|
||||
tags["client_id"] = subscriber.ClientID
|
||||
tags["subscription_name"] = subscriber.SubscriptionName
|
||||
tags["connection_id"] = subscriber.ConnectionID
|
||||
tags["destination_name"] = subscriber.DestinationName
|
||||
tags["selector"] = subscriber.Selector
|
||||
tags["active"] = subscriber.Active
|
||||
tags["source"] = a.baseURL.Hostname()
|
||||
tags["port"] = a.baseURL.Port()
|
||||
|
||||
records["pending_queue_size"] = subscriber.Stats.PendingQueueSize
|
||||
records["dispatched_queue_size"] = subscriber.Stats.DispatchedQueueSize
|
||||
records["dispatched_counter"] = subscriber.Stats.DispatchedCounter
|
||||
records["enqueue_counter"] = subscriber.Stats.EnqueueCounter
|
||||
records["dequeue_counter"] = subscriber.Stats.DequeueCounter
|
||||
|
||||
acc.AddFields("activemq_subscribers", records, tags)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) queuesURL() string {
|
||||
ref := url.URL{Path: path.Join("/", a.Webadmin, "/xml/queues.jsp")}
|
||||
return a.baseURL.ResolveReference(&ref).String()
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) topicsURL() string {
|
||||
ref := url.URL{Path: path.Join("/", a.Webadmin, "/xml/topics.jsp")}
|
||||
return a.baseURL.ResolveReference(&ref).String()
|
||||
}
|
||||
|
||||
func (a *ActiveMQ) subscribersURL() string {
|
||||
ref := url.URL{Path: path.Join("/", a.Webadmin, "/xml/subscribers.jsp")}
|
||||
return a.baseURL.ResolveReference(&ref).String()
|
||||
}
|
||||
|
||||
func init() {
|
||||
inputs.Add("activemq", func() telegraf.Input {
|
||||
return &ActiveMQ{
|
||||
Server: "localhost",
|
||||
Port: 8161,
|
||||
Webadmin: "admin",
|
||||
}
|
||||
})
|
||||
}
|
186
plugins/inputs/activemq/activemq_test.go
Normal file
186
plugins/inputs/activemq/activemq_test.go
Normal file
|
@ -0,0 +1,186 @@
|
|||
package activemq
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"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{}
|
||||
|
||||
require.NoError(t, xml.Unmarshal([]byte(s), &queues))
|
||||
|
||||
records := make(map[string]interface{})
|
||||
tags := make(map[string]string)
|
||||
|
||||
tags["name"] = "Test"
|
||||
tags["source"] = "localhost"
|
||||
tags["port"] = "8161"
|
||||
|
||||
records["size"] = 0
|
||||
records["consumer_count"] = 0
|
||||
records["enqueue_count"] = 0
|
||||
records["dequeue_count"] = 0
|
||||
|
||||
plugin := &ActiveMQ{
|
||||
Server: "localhost",
|
||||
Port: 8161,
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
var acc testutil.Accumulator
|
||||
plugin.gatherQueuesMetrics(&acc, queues)
|
||||
acc.AssertContainsTaggedFields(t, "activemq_queues", 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{}
|
||||
|
||||
require.NoError(t, xml.Unmarshal([]byte(s), &topics))
|
||||
|
||||
records := make(map[string]interface{})
|
||||
tags := make(map[string]string)
|
||||
|
||||
tags["name"] = "ActiveMQ.Advisory.MasterBroker "
|
||||
tags["source"] = "localhost"
|
||||
tags["port"] = "8161"
|
||||
|
||||
records["size"] = 0
|
||||
records["consumer_count"] = 0
|
||||
records["enqueue_count"] = 1
|
||||
records["dequeue_count"] = 0
|
||||
|
||||
plugin := &ActiveMQ{
|
||||
Server: "localhost",
|
||||
Port: 8161,
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
var acc testutil.Accumulator
|
||||
plugin.gatherTopicsMetrics(&acc, topics)
|
||||
acc.AssertContainsTaggedFields(t, "activemq_topics", 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{}
|
||||
require.NoError(t, 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"
|
||||
tags["source"] = "localhost"
|
||||
tags["port"] = "8161"
|
||||
|
||||
records["pending_queue_size"] = 0
|
||||
records["dispatched_queue_size"] = 0
|
||||
records["dispatched_counter"] = 0
|
||||
records["enqueue_counter"] = 0
|
||||
records["dequeue_counter"] = 0
|
||||
|
||||
plugin := &ActiveMQ{
|
||||
Server: "localhost",
|
||||
Port: 8161,
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
var acc testutil.Accumulator
|
||||
plugin.gatherSubscribersMetrics(&acc, subscribers)
|
||||
acc.AssertContainsTaggedFields(t, "activemq_subscribers", records, tags)
|
||||
}
|
||||
|
||||
func TestURLs(t *testing.T) {
|
||||
ts := httptest.NewServer(http.NotFoundHandler())
|
||||
defer ts.Close()
|
||||
|
||||
ts.Config.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
switch r.URL.Path {
|
||||
case "/admin/xml/queues.jsp":
|
||||
w.WriteHeader(http.StatusOK)
|
||||
if _, err := w.Write([]byte("<queues></queues>")); err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
case "/admin/xml/topics.jsp":
|
||||
w.WriteHeader(http.StatusOK)
|
||||
if _, err := w.Write([]byte("<topics></topics>")); err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
case "/admin/xml/subscribers.jsp":
|
||||
w.WriteHeader(http.StatusOK)
|
||||
if _, err := w.Write([]byte("<subscribers></subscribers>")); err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
default:
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
t.Fatalf("unexpected path: %s", r.URL.Path)
|
||||
}
|
||||
})
|
||||
|
||||
plugin := ActiveMQ{
|
||||
URL: "http://" + ts.Listener.Addr().String(),
|
||||
Webadmin: "admin",
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
var acc testutil.Accumulator
|
||||
require.NoError(t, plugin.Gather(&acc))
|
||||
require.Empty(t, acc.GetTelegrafMetrics())
|
||||
}
|
21
plugins/inputs/activemq/sample.conf
Normal file
21
plugins/inputs/activemq/sample.conf
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Gather ActiveMQ metrics
|
||||
[[inputs.activemq]]
|
||||
## ActiveMQ WebConsole URL
|
||||
url = "http://127.0.0.1:8161"
|
||||
|
||||
## Credentials for basic HTTP authentication
|
||||
# username = "admin"
|
||||
# password = "admin"
|
||||
|
||||
## Required ActiveMQ webadmin root path
|
||||
# webadmin = "admin"
|
||||
|
||||
## Maximum time to receive response.
|
||||
# response_timeout = "5s"
|
||||
|
||||
## Optional TLS Config
|
||||
# tls_ca = "/etc/telegraf/ca.pem"
|
||||
# tls_cert = "/etc/telegraf/cert.pem"
|
||||
# tls_key = "/etc/telegraf/key.pem"
|
||||
## Use TLS but skip chain & host verification
|
||||
# insecure_skip_verify = false
|
Loading…
Add table
Add a link
Reference in a new issue