parent
eba6191239
commit
e2ab2188db
|
|
@ -48,6 +48,12 @@ For additional details reference the [RabbitMQ Management HTTP Stats][management
|
|||
## specified, metrics for all exchanges are gathered.
|
||||
# exchanges = ["telegraf"]
|
||||
|
||||
## Metrics to include and exclude. Globs accepted.
|
||||
## Note that an empty array for both will include all metrics
|
||||
## Currently the following metrics are supported: "exchange", "federation", "node", "overview", "queue"
|
||||
# metric_include = []
|
||||
# metric_exclude = []
|
||||
|
||||
## Queues to include and exclude. Globs accepted.
|
||||
## Note that an empty array for both will include all queues
|
||||
# queue_name_include = []
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package rabbitmq
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"sync"
|
||||
|
|
@ -47,15 +48,18 @@ type RabbitMQ struct {
|
|||
Queues []string `toml:"queues"`
|
||||
Exchanges []string `toml:"exchanges"`
|
||||
|
||||
MetricInclude []string `toml:"metric_include"`
|
||||
MetricExclude []string `toml:"metric_exclude"`
|
||||
QueueInclude []string `toml:"queue_name_include"`
|
||||
QueueExclude []string `toml:"queue_name_exclude"`
|
||||
FederationUpstreamInclude []string `toml:"federation_upstream_include"`
|
||||
FederationUpstreamExclude []string `toml:"federation_upstream_exclude"`
|
||||
|
||||
Client *http.Client `toml:"-"`
|
||||
Log telegraf.Logger `toml:"-"`
|
||||
|
||||
filterCreated bool
|
||||
client *http.Client
|
||||
excludeEveryQueue bool
|
||||
metricFilter filter.Filter
|
||||
queueFilter filter.Filter
|
||||
upstreamFilter filter.Filter
|
||||
}
|
||||
|
|
@ -163,11 +167,11 @@ type Node struct {
|
|||
GcNumDetails Details `json:"gc_num_details"`
|
||||
GcBytesReclaimed int64 `json:"gc_bytes_reclaimed"`
|
||||
GcBytesReclaimedDetails Details `json:"gc_bytes_reclaimed_details"`
|
||||
IoReadAvgTime int64 `json:"io_read_avg_time"`
|
||||
IoReadAvgTime float64 `json:"io_read_avg_time"`
|
||||
IoReadAvgTimeDetails Details `json:"io_read_avg_time_details"`
|
||||
IoReadBytes int64 `json:"io_read_bytes"`
|
||||
IoReadBytesDetails Details `json:"io_read_bytes_details"`
|
||||
IoWriteAvgTime int64 `json:"io_write_avg_time"`
|
||||
IoWriteAvgTime float64 `json:"io_write_avg_time"`
|
||||
IoWriteAvgTimeDetails Details `json:"io_write_avg_time_details"`
|
||||
IoWriteBytes int64 `json:"io_write_bytes"`
|
||||
IoWriteBytesDetails Details `json:"io_write_bytes_details"`
|
||||
|
|
@ -226,32 +230,44 @@ type MemoryResponse struct {
|
|||
|
||||
// Memory details
|
||||
type Memory struct {
|
||||
ConnectionReaders int64 `json:"connection_readers"`
|
||||
ConnectionWriters int64 `json:"connection_writers"`
|
||||
ConnectionChannels int64 `json:"connection_channels"`
|
||||
ConnectionOther int64 `json:"connection_other"`
|
||||
QueueProcs int64 `json:"queue_procs"`
|
||||
QueueSlaveProcs int64 `json:"queue_slave_procs"`
|
||||
Plugins int64 `json:"plugins"`
|
||||
OtherProc int64 `json:"other_proc"`
|
||||
Metrics int64 `json:"metrics"`
|
||||
MgmtDb int64 `json:"mgmt_db"`
|
||||
Mnesia int64 `json:"mnesia"`
|
||||
OtherEts int64 `json:"other_ets"`
|
||||
Binary int64 `json:"binary"`
|
||||
MsgIndex int64 `json:"msg_index"`
|
||||
Code int64 `json:"code"`
|
||||
Atom int64 `json:"atom"`
|
||||
OtherSystem int64 `json:"other_system"`
|
||||
AllocatedUnused int64 `json:"allocated_unused"`
|
||||
ReservedUnallocated int64 `json:"reserved_unallocated"`
|
||||
Total int64 `json:"total"`
|
||||
ConnectionReaders int64 `json:"connection_readers"`
|
||||
ConnectionWriters int64 `json:"connection_writers"`
|
||||
ConnectionChannels int64 `json:"connection_channels"`
|
||||
ConnectionOther int64 `json:"connection_other"`
|
||||
QueueProcs int64 `json:"queue_procs"`
|
||||
QueueSlaveProcs int64 `json:"queue_slave_procs"`
|
||||
Plugins int64 `json:"plugins"`
|
||||
OtherProc int64 `json:"other_proc"`
|
||||
Metrics int64 `json:"metrics"`
|
||||
MgmtDb int64 `json:"mgmt_db"`
|
||||
Mnesia int64 `json:"mnesia"`
|
||||
OtherEts int64 `json:"other_ets"`
|
||||
Binary int64 `json:"binary"`
|
||||
MsgIndex int64 `json:"msg_index"`
|
||||
Code int64 `json:"code"`
|
||||
Atom int64 `json:"atom"`
|
||||
OtherSystem int64 `json:"other_system"`
|
||||
AllocatedUnused int64 `json:"allocated_unused"`
|
||||
ReservedUnallocated int64 `json:"reserved_unallocated"`
|
||||
Total interface{} `json:"total"`
|
||||
}
|
||||
|
||||
// Error response
|
||||
type ErrorResponse struct {
|
||||
Error string `json:"error"`
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
// gatherFunc ...
|
||||
type gatherFunc func(r *RabbitMQ, acc telegraf.Accumulator)
|
||||
|
||||
var gatherFunctions = []gatherFunc{gatherOverview, gatherNodes, gatherQueues, gatherExchanges, gatherFederationLinks}
|
||||
var gatherFunctions = map[string]gatherFunc{
|
||||
"exchange": gatherExchanges,
|
||||
"federation": gatherFederationLinks,
|
||||
"node": gatherNodes,
|
||||
"overview": gatherOverview,
|
||||
"queue": gatherQueues,
|
||||
}
|
||||
|
||||
var sampleConfig = `
|
||||
## Management Plugin url. (default: http://localhost:15672)
|
||||
|
|
@ -291,6 +307,12 @@ var sampleConfig = `
|
|||
## specified, metrics for all exchanges are gathered.
|
||||
# exchanges = ["telegraf"]
|
||||
|
||||
## Metrics to include and exclude. Globs accepted.
|
||||
## Note that an empty array for both will include all metrics
|
||||
## Currently the following metrics are supported: "exchange", "federation", "node", "overview", "queue"
|
||||
# metric_include = []
|
||||
# metric_exclude = []
|
||||
|
||||
## Queues to include and exclude. Globs accepted.
|
||||
## Note that an empty array for both will include all queues
|
||||
queue_name_include = []
|
||||
|
|
@ -323,39 +345,47 @@ func (r *RabbitMQ) Description() string {
|
|||
return "Reads metrics from RabbitMQ servers via the Management Plugin"
|
||||
}
|
||||
|
||||
func (r *RabbitMQ) Init() error {
|
||||
var err error
|
||||
|
||||
// Create gather filters
|
||||
if err := r.createQueueFilter(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := r.createUpstreamFilter(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create a filter for the metrics
|
||||
if r.metricFilter, err = filter.NewIncludeExcludeFilter(r.MetricInclude, r.MetricExclude); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tlsCfg, err := r.ClientConfig.TLSConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tr := &http.Transport{
|
||||
ResponseHeaderTimeout: time.Duration(r.ResponseHeaderTimeout),
|
||||
TLSClientConfig: tlsCfg,
|
||||
}
|
||||
r.client = &http.Client{
|
||||
Transport: tr,
|
||||
Timeout: time.Duration(r.ClientTimeout),
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Gather ...
|
||||
func (r *RabbitMQ) Gather(acc telegraf.Accumulator) error {
|
||||
if r.Client == nil {
|
||||
tlsCfg, err := r.ClientConfig.TLSConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tr := &http.Transport{
|
||||
ResponseHeaderTimeout: time.Duration(r.ResponseHeaderTimeout),
|
||||
TLSClientConfig: tlsCfg,
|
||||
}
|
||||
r.Client = &http.Client{
|
||||
Transport: tr,
|
||||
Timeout: time.Duration(r.ClientTimeout),
|
||||
}
|
||||
}
|
||||
|
||||
// Create gather filters if not already created
|
||||
if !r.filterCreated {
|
||||
err := r.createQueueFilter()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = r.createUpstreamFilter()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r.filterCreated = true
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(gatherFunctions))
|
||||
for _, f := range gatherFunctions {
|
||||
for name, f := range gatherFunctions {
|
||||
// Query only metrics that are supported
|
||||
if !r.metricFilter.Match(name) {
|
||||
continue
|
||||
}
|
||||
wg.Add(1)
|
||||
go func(gf gatherFunc) {
|
||||
defer wg.Done()
|
||||
gf(r, acc)
|
||||
|
|
@ -366,15 +396,16 @@ func (r *RabbitMQ) Gather(acc telegraf.Accumulator) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (r *RabbitMQ) requestJSON(u string, target interface{}) error {
|
||||
func (r *RabbitMQ) requestEndpoint(u string) ([]byte, error) {
|
||||
if r.URL == "" {
|
||||
r.URL = DefaultURL
|
||||
}
|
||||
u = fmt.Sprintf("%s%s", r.URL, u)
|
||||
endpoint := r.URL + u
|
||||
r.Log.Debugf("Requesting %q...", endpoint)
|
||||
|
||||
req, err := http.NewRequest("GET", u, nil)
|
||||
req, err := http.NewRequest("GET", endpoint, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
username := r.Username
|
||||
|
|
@ -389,14 +420,39 @@ func (r *RabbitMQ) requestJSON(u string, target interface{}) error {
|
|||
|
||||
req.SetBasicAuth(username, password)
|
||||
|
||||
resp, err := r.Client.Do(req)
|
||||
resp, err := r.client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
r.Log.Debugf("HTTP status code: %v %v", resp.StatusCode, http.StatusText(resp.StatusCode))
|
||||
if resp.StatusCode < 200 || resp.StatusCode > 299 {
|
||||
return nil, fmt.Errorf("getting %q failed: %v %v", u, resp.StatusCode, http.StatusText(resp.StatusCode))
|
||||
}
|
||||
|
||||
return ioutil.ReadAll(resp.Body)
|
||||
}
|
||||
|
||||
func (r *RabbitMQ) requestJSON(u string, target interface{}) error {
|
||||
buf, err := r.requestEndpoint(u)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := json.Unmarshal(buf, target); err != nil {
|
||||
if _, ok := err.(*json.UnmarshalTypeError); ok {
|
||||
// Try to get the error reason from the response
|
||||
var errResponse ErrorResponse
|
||||
if json.Unmarshal(buf, &errResponse) == nil && errResponse.Error != "" {
|
||||
// Return the error reason in the response
|
||||
return fmt.Errorf("error response trying to get %q: %q (reason: %q)", u, errResponse.Error, errResponse.Reason)
|
||||
}
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
return fmt.Errorf("decoding answer from %q failed: %v", u, err)
|
||||
}
|
||||
|
||||
return json.NewDecoder(resp.Body).Decode(target)
|
||||
return nil
|
||||
}
|
||||
|
||||
func gatherOverview(r *RabbitMQ, acc telegraf.Accumulator) {
|
||||
|
|
@ -533,7 +589,27 @@ func gatherNodes(r *RabbitMQ, acc telegraf.Accumulator) {
|
|||
fields["mem_other_system"] = memory.Memory.OtherSystem
|
||||
fields["mem_allocated_unused"] = memory.Memory.AllocatedUnused
|
||||
fields["mem_reserved_unallocated"] = memory.Memory.ReservedUnallocated
|
||||
fields["mem_total"] = memory.Memory.Total
|
||||
switch v := memory.Memory.Total.(type) {
|
||||
case float64:
|
||||
fields["mem_total"] = int64(v)
|
||||
case map[string]interface{}:
|
||||
var foundEstimator bool
|
||||
for _, estimator := range []string{"rss", "allocated", "erlang"} {
|
||||
if x, found := v[estimator]; found {
|
||||
if total, ok := x.(float64); ok {
|
||||
fields["mem_total"] = int64(total)
|
||||
foundEstimator = true
|
||||
break
|
||||
}
|
||||
acc.AddError(fmt.Errorf("unknown type %T for %q total memory", x, estimator))
|
||||
}
|
||||
}
|
||||
if !foundEstimator {
|
||||
acc.AddError(fmt.Errorf("no known memory estimation in %v", v))
|
||||
}
|
||||
default:
|
||||
acc.AddError(fmt.Errorf("unknown type %T for total memory", memory.Memory.Total))
|
||||
}
|
||||
}
|
||||
|
||||
acc.AddFields("rabbitmq_node", fields, tags)
|
||||
|
|
|
|||
|
|
@ -1,36 +1,40 @@
|
|||
package rabbitmq
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"time"
|
||||
|
||||
"testing"
|
||||
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/testutil"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestRabbitMQGeneratesMetrics(t *testing.T) {
|
||||
func TestRabbitMQGeneratesMetricsSet1(t *testing.T) {
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
var jsonFilePath string
|
||||
|
||||
switch r.URL.Path {
|
||||
case "/api/overview":
|
||||
jsonFilePath = "testdata/overview.json"
|
||||
jsonFilePath = "testdata/set1/overview.json"
|
||||
case "/api/nodes":
|
||||
jsonFilePath = "testdata/nodes.json"
|
||||
jsonFilePath = "testdata/set1/nodes.json"
|
||||
case "/api/queues":
|
||||
jsonFilePath = "testdata/queues.json"
|
||||
jsonFilePath = "testdata/set1/queues.json"
|
||||
case "/api/exchanges":
|
||||
jsonFilePath = "testdata/exchanges.json"
|
||||
jsonFilePath = "testdata/set1/exchanges.json"
|
||||
case "/api/federation-links":
|
||||
jsonFilePath = "testdata/federation-links.json"
|
||||
jsonFilePath = "testdata/set1/federation-links.json"
|
||||
case "/api/nodes/rabbit@vagrant-ubuntu-trusty-64/memory":
|
||||
jsonFilePath = "testdata/memory.json"
|
||||
jsonFilePath = "testdata/set1/memory.json"
|
||||
default:
|
||||
require.Fail(t, "Cannot handle request")
|
||||
http.Error(w, fmt.Sprintf("unknown path %q", r.URL.Path), http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
data, err := ioutil.ReadFile(jsonFilePath)
|
||||
|
|
@ -41,155 +45,627 @@ func TestRabbitMQGeneratesMetrics(t *testing.T) {
|
|||
}))
|
||||
defer ts.Close()
|
||||
|
||||
r := &RabbitMQ{
|
||||
URL: ts.URL,
|
||||
// Define test cases
|
||||
expected := []telegraf.Metric{
|
||||
testutil.MustMetric("rabbitmq_overview",
|
||||
map[string]string{
|
||||
"url": ts.URL,
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages": int64(5),
|
||||
"messages_ready": int64(32),
|
||||
"messages_unacked": int64(27),
|
||||
"messages_acked": int64(5246),
|
||||
"messages_delivered": int64(5234),
|
||||
"messages_delivered_get": int64(3333),
|
||||
"messages_published": int64(5258),
|
||||
"channels": int64(44),
|
||||
"connections": int64(44),
|
||||
"consumers": int64(65),
|
||||
"exchanges": int64(43),
|
||||
"queues": int64(62),
|
||||
"clustering_listeners": int64(2),
|
||||
"amqp_listeners": int64(2),
|
||||
"return_unroutable": int64(10),
|
||||
"return_unroutable_rate": float64(3.3),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_queue",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "false",
|
||||
"node": "rabbit@rmqlocal-0.rmqlocal.ankorabbitstatefulset3.svc.cluster.local",
|
||||
"queue": "reply_a716f0523cd44941ad2ea6ce4a3869c3",
|
||||
"url": ts.URL,
|
||||
"vhost": "sorandomsorandom",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"consumers": int64(3),
|
||||
"consumer_utilisation": float64(1.0),
|
||||
"memory": int64(143776),
|
||||
"message_bytes": int64(3),
|
||||
"message_bytes_ready": int64(4),
|
||||
"message_bytes_unacked": int64(5),
|
||||
"message_bytes_ram": int64(6),
|
||||
"message_bytes_persist": int64(7),
|
||||
"messages": int64(44),
|
||||
"messages_ready": int64(32),
|
||||
"messages_unack": int64(44),
|
||||
"messages_ack": int64(3457),
|
||||
"messages_ack_rate": float64(9.9),
|
||||
"messages_deliver": int64(22222),
|
||||
"messages_deliver_rate": float64(333.4),
|
||||
"messages_deliver_get": int64(3457),
|
||||
"messages_deliver_get_rate": float64(0.2),
|
||||
"messages_publish": int64(3457),
|
||||
"messages_publish_rate": float64(11.2),
|
||||
"messages_redeliver": int64(33),
|
||||
"messages_redeliver_rate": float64(2.5),
|
||||
"idle_since": "2015-11-01 8:22:14",
|
||||
"slave_nodes": int64(1),
|
||||
"synchronised_slave_nodes": int64(1),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_node",
|
||||
map[string]string{
|
||||
"node": "rabbit@vagrant-ubuntu-trusty-64",
|
||||
"url": ts.URL,
|
||||
},
|
||||
map[string]interface{}{
|
||||
"disk_free": int64(3776),
|
||||
"disk_free_limit": int64(50000000),
|
||||
"disk_free_alarm": int64(0),
|
||||
"fd_total": int64(1024),
|
||||
"fd_used": int64(63),
|
||||
"mem_limit": int64(2503),
|
||||
"mem_used": int64(159707080),
|
||||
"mem_alarm": int64(1),
|
||||
"proc_total": int64(1048576),
|
||||
"proc_used": int64(783),
|
||||
"run_queue": int64(0),
|
||||
"sockets_total": int64(829),
|
||||
"sockets_used": int64(45),
|
||||
"uptime": int64(7464827),
|
||||
"running": int64(1),
|
||||
"mnesia_disk_tx_count": int64(16),
|
||||
"mnesia_ram_tx_count": int64(296),
|
||||
"mnesia_disk_tx_count_rate": float64(1.1),
|
||||
"mnesia_ram_tx_count_rate": float64(2.2),
|
||||
"gc_num": int64(57280132),
|
||||
"gc_bytes_reclaimed": int64(2533),
|
||||
"gc_num_rate": float64(274.2),
|
||||
"gc_bytes_reclaimed_rate": float64(16490856.3),
|
||||
"io_read_avg_time": float64(983.0),
|
||||
"io_read_avg_time_rate": float64(88.77),
|
||||
"io_read_bytes": int64(1111),
|
||||
"io_read_bytes_rate": float64(99.99),
|
||||
"io_write_avg_time": float64(134.0),
|
||||
"io_write_avg_time_rate": float64(4.32),
|
||||
"io_write_bytes": int64(823),
|
||||
"io_write_bytes_rate": float64(32.8),
|
||||
"mem_connection_readers": int64(1234),
|
||||
"mem_connection_writers": int64(5678),
|
||||
"mem_connection_channels": int64(1133),
|
||||
"mem_connection_other": int64(2840),
|
||||
"mem_queue_procs": int64(2840),
|
||||
"mem_queue_slave_procs": int64(0),
|
||||
"mem_plugins": int64(1755976),
|
||||
"mem_other_proc": int64(23056584),
|
||||
"mem_metrics": int64(196536),
|
||||
"mem_mgmt_db": int64(491272),
|
||||
"mem_mnesia": int64(115600),
|
||||
"mem_other_ets": int64(2121872),
|
||||
"mem_binary": int64(418848),
|
||||
"mem_msg_index": int64(42848),
|
||||
"mem_code": int64(25179322),
|
||||
"mem_atom": int64(1041593),
|
||||
"mem_other_system": int64(14741981),
|
||||
"mem_allocated_unused": int64(38208528),
|
||||
"mem_reserved_unallocated": int64(0),
|
||||
"mem_total": int64(83025920),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "true",
|
||||
"durable": "false",
|
||||
"exchange": "reply_a716f0523cd44941ad2ea6ce4a3869c3",
|
||||
"internal": "false",
|
||||
"type": "direct",
|
||||
"url": ts.URL,
|
||||
"vhost": "sorandomsorandom",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(3678),
|
||||
"messages_publish_in_rate": float64(3.2),
|
||||
"messages_publish_out": int64(3677),
|
||||
"messages_publish_out_rate": float64(5.1),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_federation",
|
||||
map[string]string{
|
||||
"queue": "exampleLocalQueue",
|
||||
"type": "queue",
|
||||
"upstream": "ExampleFederationUpstream",
|
||||
"upstream_queue": "exampleUpstreamQueue",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"acks_uncommitted": int64(1),
|
||||
"consumers": int64(2),
|
||||
"messages_unacknowledged": int64(3),
|
||||
"messages_uncommitted": int64(4),
|
||||
"messages_unconfirmed": int64(5),
|
||||
"messages_confirm": int64(67),
|
||||
"messages_publish": int64(890),
|
||||
"messages_return_unroutable": int64(1),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
}
|
||||
|
||||
// Run the test
|
||||
plugin := &RabbitMQ{
|
||||
URL: ts.URL,
|
||||
Log: testutil.Logger{},
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
acc := &testutil.Accumulator{}
|
||||
require.NoError(t, plugin.Gather(acc))
|
||||
|
||||
err := acc.GatherError(r.Gather)
|
||||
require.NoError(t, err)
|
||||
acc.Wait(len(expected))
|
||||
require.Len(t, acc.Errors, 0)
|
||||
|
||||
overviewMetrics := map[string]interface{}{
|
||||
"messages": 5,
|
||||
"messages_ready": 32,
|
||||
"messages_unacked": 27,
|
||||
"messages_acked": 5246,
|
||||
"messages_delivered": 5234,
|
||||
"messages_delivered_get": 3333,
|
||||
"messages_published": 5258,
|
||||
"channels": 44,
|
||||
"connections": 44,
|
||||
"consumers": 65,
|
||||
"exchanges": 43,
|
||||
"queues": 62,
|
||||
"clustering_listeners": 2,
|
||||
"amqp_listeners": 2,
|
||||
"return_unroutable": 10,
|
||||
"return_unroutable_rate": 3.3,
|
||||
}
|
||||
compareMetrics(t, overviewMetrics, acc, "rabbitmq_overview")
|
||||
|
||||
queuesMetrics := map[string]interface{}{
|
||||
"consumers": 3,
|
||||
"consumer_utilisation": 1.0,
|
||||
"memory": 143776,
|
||||
"message_bytes": 3,
|
||||
"message_bytes_ready": 4,
|
||||
"message_bytes_unacked": 5,
|
||||
"message_bytes_ram": 6,
|
||||
"message_bytes_persist": 7,
|
||||
"messages": 44,
|
||||
"messages_ready": 32,
|
||||
"messages_unack": 44,
|
||||
"messages_ack": 3457,
|
||||
"messages_ack_rate": 9.9,
|
||||
"messages_deliver": 22222,
|
||||
"messages_deliver_rate": 333.4,
|
||||
"messages_deliver_get": 3457,
|
||||
"messages_deliver_get_rate": 0.2,
|
||||
"messages_publish": 3457,
|
||||
"messages_publish_rate": 11.2,
|
||||
"messages_redeliver": 33,
|
||||
"messages_redeliver_rate": 2.5,
|
||||
"idle_since": "2015-11-01 8:22:14",
|
||||
"slave_nodes": 1,
|
||||
"synchronised_slave_nodes": 1,
|
||||
}
|
||||
compareMetrics(t, queuesMetrics, acc, "rabbitmq_queue")
|
||||
|
||||
nodeMetrics := map[string]interface{}{
|
||||
"disk_free": 3776,
|
||||
"disk_free_limit": 50000000,
|
||||
"disk_free_alarm": 0,
|
||||
"fd_total": 1024,
|
||||
"fd_used": 63,
|
||||
"mem_limit": 2503,
|
||||
"mem_used": 159707080,
|
||||
"mem_alarm": 1,
|
||||
"proc_total": 1048576,
|
||||
"proc_used": 783,
|
||||
"run_queue": 0,
|
||||
"sockets_total": 829,
|
||||
"sockets_used": 45,
|
||||
"uptime": 7464827,
|
||||
"running": 1,
|
||||
"mnesia_disk_tx_count": 16,
|
||||
"mnesia_ram_tx_count": 296,
|
||||
"mnesia_disk_tx_count_rate": 1.1,
|
||||
"mnesia_ram_tx_count_rate": 2.2,
|
||||
"gc_num": 57280132,
|
||||
"gc_bytes_reclaimed": 2533,
|
||||
"gc_num_rate": 274.2,
|
||||
"gc_bytes_reclaimed_rate": 16490856.3,
|
||||
"io_read_avg_time": 983,
|
||||
"io_read_avg_time_rate": 88.77,
|
||||
"io_read_bytes": 1111,
|
||||
"io_read_bytes_rate": 99.99,
|
||||
"io_write_avg_time": 134,
|
||||
"io_write_avg_time_rate": 4.32,
|
||||
"io_write_bytes": 823,
|
||||
"io_write_bytes_rate": 32.8,
|
||||
"mem_connection_readers": 1234,
|
||||
"mem_connection_writers": 5678,
|
||||
"mem_connection_channels": 1133,
|
||||
"mem_connection_other": 2840,
|
||||
"mem_queue_procs": 2840,
|
||||
"mem_queue_slave_procs": 0,
|
||||
"mem_plugins": 1755976,
|
||||
"mem_other_proc": 23056584,
|
||||
"mem_metrics": 196536,
|
||||
"mem_mgmt_db": 491272,
|
||||
"mem_mnesia": 115600,
|
||||
"mem_other_ets": 2121872,
|
||||
"mem_binary": 418848,
|
||||
"mem_msg_index": 42848,
|
||||
"mem_code": 25179322,
|
||||
"mem_atom": 1041593,
|
||||
"mem_other_system": 14741981,
|
||||
"mem_allocated_unused": 38208528,
|
||||
"mem_reserved_unallocated": 0,
|
||||
"mem_total": 83025920,
|
||||
}
|
||||
compareMetrics(t, nodeMetrics, acc, "rabbitmq_node")
|
||||
|
||||
exchangeMetrics := map[string]interface{}{
|
||||
"messages_publish_in": 3678,
|
||||
"messages_publish_in_rate": 3.2,
|
||||
"messages_publish_out": 3677,
|
||||
"messages_publish_out_rate": 5.1,
|
||||
}
|
||||
compareMetrics(t, exchangeMetrics, acc, "rabbitmq_exchange")
|
||||
|
||||
federationLinkMetrics := map[string]interface{}{
|
||||
"acks_uncommitted": 1,
|
||||
"consumers": 2,
|
||||
"messages_unacknowledged": 3,
|
||||
"messages_uncommitted": 4,
|
||||
"messages_unconfirmed": 5,
|
||||
"messages_confirm": 67,
|
||||
"messages_publish": 890,
|
||||
"messages_return_unroutable": 1,
|
||||
}
|
||||
compareMetrics(t, federationLinkMetrics, acc, "rabbitmq_federation")
|
||||
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime(), testutil.SortMetrics())
|
||||
}
|
||||
|
||||
func compareMetrics(t *testing.T, expectedMetrics map[string]interface{},
|
||||
accumulator *testutil.Accumulator, measurementKey string) {
|
||||
measurement, exist := accumulator.Get(measurementKey)
|
||||
func TestRabbitMQGeneratesMetricsSet2(t *testing.T) {
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
var jsonFilePath string
|
||||
|
||||
assert.True(t, exist, "There is measurement %s", measurementKey)
|
||||
assert.Equal(t, len(expectedMetrics), len(measurement.Fields))
|
||||
|
||||
for metricName, metricValue := range expectedMetrics {
|
||||
actualMetricValue := measurement.Fields[metricName]
|
||||
|
||||
if accumulator.HasStringField(measurementKey, metricName) {
|
||||
assert.Equal(t, metricValue, actualMetricValue,
|
||||
"Metric name: %s", metricName)
|
||||
} else {
|
||||
assert.InDelta(t, metricValue, actualMetricValue, 0e5,
|
||||
"Metric name: %s", metricName)
|
||||
switch r.URL.Path {
|
||||
case "/api/overview":
|
||||
jsonFilePath = "testdata/set2/overview.json"
|
||||
case "/api/nodes":
|
||||
jsonFilePath = "testdata/set2/nodes.json"
|
||||
case "/api/queues":
|
||||
jsonFilePath = "testdata/set2/queues.json"
|
||||
case "/api/exchanges":
|
||||
jsonFilePath = "testdata/set2/exchanges.json"
|
||||
case "/api/federation-links":
|
||||
jsonFilePath = "testdata/set2/federation-links.json"
|
||||
case "/api/nodes/rabbit@rmqserver/memory":
|
||||
jsonFilePath = "testdata/set2/memory.json"
|
||||
default:
|
||||
http.Error(w, fmt.Sprintf("unknown path %q", r.URL.Path), http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
data, err := ioutil.ReadFile(jsonFilePath)
|
||||
require.NoErrorf(t, err, "could not read from data file %s", jsonFilePath)
|
||||
|
||||
_, err = w.Write(data)
|
||||
require.NoError(t, err)
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
// Define test cases
|
||||
expected := []telegraf.Metric{
|
||||
testutil.MustMetric("rabbitmq_overview",
|
||||
map[string]string{
|
||||
"url": ts.URL,
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages": int64(30),
|
||||
"messages_ready": int64(30),
|
||||
"messages_unacked": int64(0),
|
||||
"messages_acked": int64(3736443),
|
||||
"messages_delivered": int64(3736446),
|
||||
"messages_delivered_get": int64(3736446),
|
||||
"messages_published": int64(770025),
|
||||
"channels": int64(43),
|
||||
"connections": int64(43),
|
||||
"consumers": int64(37),
|
||||
"exchanges": int64(8),
|
||||
"queues": int64(34),
|
||||
"clustering_listeners": int64(1),
|
||||
"amqp_listeners": int64(2),
|
||||
"return_unroutable": int64(0),
|
||||
"return_unroutable_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_queue",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "false",
|
||||
"node": "rabbit@rmqserver",
|
||||
"queue": "39fd2caf-63e5-41e3-c15a-ba8fa11434b2",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"consumers": int64(1),
|
||||
"consumer_utilisation": float64(1.0),
|
||||
"memory": int64(15840),
|
||||
"message_bytes": int64(0),
|
||||
"message_bytes_ready": int64(0),
|
||||
"message_bytes_unacked": int64(0),
|
||||
"message_bytes_ram": int64(0),
|
||||
"message_bytes_persist": int64(0),
|
||||
"messages": int64(0),
|
||||
"messages_ready": int64(0),
|
||||
"messages_unack": int64(0),
|
||||
"messages_ack": int64(180),
|
||||
"messages_ack_rate": float64(0.0),
|
||||
"messages_deliver": int64(180),
|
||||
"messages_deliver_rate": float64(0.0),
|
||||
"messages_deliver_get": int64(180),
|
||||
"messages_deliver_get_rate": float64(0.0),
|
||||
"messages_publish": int64(180),
|
||||
"messages_publish_rate": float64(0.0),
|
||||
"messages_redeliver": int64(0),
|
||||
"messages_redeliver_rate": float64(0.0),
|
||||
"idle_since": "2021-06-28 15:54:14",
|
||||
"slave_nodes": int64(0),
|
||||
"synchronised_slave_nodes": int64(0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_queue",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "false",
|
||||
"node": "rabbit@rmqserver",
|
||||
"queue": "39fd2cb4-aa2d-c08b-457a-62d0893523a1",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"consumers": int64(1),
|
||||
"consumer_utilisation": float64(1.0),
|
||||
"memory": int64(15600),
|
||||
"message_bytes": int64(0),
|
||||
"message_bytes_ready": int64(0),
|
||||
"message_bytes_unacked": int64(0),
|
||||
"message_bytes_ram": int64(0),
|
||||
"message_bytes_persist": int64(0),
|
||||
"messages": int64(0),
|
||||
"messages_ready": int64(0),
|
||||
"messages_unack": int64(0),
|
||||
"messages_ack": int64(177),
|
||||
"messages_ack_rate": float64(0.0),
|
||||
"messages_deliver": int64(177),
|
||||
"messages_deliver_rate": float64(0.0),
|
||||
"messages_deliver_get": int64(177),
|
||||
"messages_deliver_get_rate": float64(0.0),
|
||||
"messages_publish": int64(177),
|
||||
"messages_publish_rate": float64(0.0),
|
||||
"messages_redeliver": int64(0),
|
||||
"messages_redeliver_rate": float64(0.0),
|
||||
"idle_since": "2021-06-28 15:54:14",
|
||||
"slave_nodes": int64(0),
|
||||
"synchronised_slave_nodes": int64(0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_queue",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "false",
|
||||
"node": "rabbit@rmqserver",
|
||||
"queue": "39fd2cb5-3820-e01b-6e20-ba29d5553fc3",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"consumers": int64(1),
|
||||
"consumer_utilisation": float64(1.0),
|
||||
"memory": int64(15584),
|
||||
"message_bytes": int64(0),
|
||||
"message_bytes_ready": int64(0),
|
||||
"message_bytes_unacked": int64(0),
|
||||
"message_bytes_ram": int64(0),
|
||||
"message_bytes_persist": int64(0),
|
||||
"messages": int64(0),
|
||||
"messages_ready": int64(0),
|
||||
"messages_unack": int64(0),
|
||||
"messages_ack": int64(175),
|
||||
"messages_ack_rate": float64(0.0),
|
||||
"messages_deliver": int64(175),
|
||||
"messages_deliver_rate": float64(0.0),
|
||||
"messages_deliver_get": int64(175),
|
||||
"messages_deliver_get_rate": float64(0.0),
|
||||
"messages_publish": int64(175),
|
||||
"messages_publish_rate": float64(0.0),
|
||||
"messages_redeliver": int64(0),
|
||||
"messages_redeliver_rate": float64(0.0),
|
||||
"idle_since": "2021-06-28 15:54:15",
|
||||
"slave_nodes": int64(0),
|
||||
"synchronised_slave_nodes": int64(0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_node",
|
||||
map[string]string{
|
||||
"node": "rabbit@rmqserver",
|
||||
"url": ts.URL,
|
||||
},
|
||||
map[string]interface{}{
|
||||
"disk_free": int64(25086496768),
|
||||
"disk_free_limit": int64(50000000),
|
||||
"disk_free_alarm": int64(0),
|
||||
"fd_total": int64(65536),
|
||||
"fd_used": int64(78),
|
||||
"mem_limit": int64(1717546188),
|
||||
"mem_used": int64(387645440),
|
||||
"mem_alarm": int64(0),
|
||||
"proc_total": int64(1048576),
|
||||
"proc_used": int64(1128),
|
||||
"run_queue": int64(1),
|
||||
"sockets_total": int64(58893),
|
||||
"sockets_used": int64(43),
|
||||
"uptime": int64(4150152129),
|
||||
"running": int64(1),
|
||||
"mnesia_disk_tx_count": int64(103),
|
||||
"mnesia_ram_tx_count": int64(2257),
|
||||
"mnesia_disk_tx_count_rate": float64(0.0),
|
||||
"mnesia_ram_tx_count_rate": float64(0.0),
|
||||
"gc_num": int64(329526389),
|
||||
"gc_bytes_reclaimed": int64(13660012170840),
|
||||
"gc_num_rate": float64(125.2),
|
||||
"gc_bytes_reclaimed_rate": float64(6583379.2),
|
||||
"io_read_avg_time": float64(0.0),
|
||||
"io_read_avg_time_rate": float64(0.0),
|
||||
"io_read_bytes": int64(1),
|
||||
"io_read_bytes_rate": float64(0.0),
|
||||
"io_write_avg_time": float64(0.0),
|
||||
"io_write_avg_time_rate": float64(0.0),
|
||||
"io_write_bytes": int64(193066),
|
||||
"io_write_bytes_rate": float64(0.0),
|
||||
"mem_connection_readers": int64(1246768),
|
||||
"mem_connection_writers": int64(72108),
|
||||
"mem_connection_channels": int64(308588),
|
||||
"mem_connection_other": int64(4883596),
|
||||
"mem_queue_procs": int64(780996),
|
||||
"mem_queue_slave_procs": int64(0),
|
||||
"mem_plugins": int64(11932828),
|
||||
"mem_other_proc": int64(39203520),
|
||||
"mem_metrics": int64(626932),
|
||||
"mem_mgmt_db": int64(3341264),
|
||||
"mem_mnesia": int64(396016),
|
||||
"mem_other_ets": int64(3771384),
|
||||
"mem_binary": int64(209324208),
|
||||
"mem_msg_index": int64(32648),
|
||||
"mem_code": int64(32810827),
|
||||
"mem_atom": int64(1458513),
|
||||
"mem_other_system": int64(14284124),
|
||||
"mem_allocated_unused": int64(61026048),
|
||||
"mem_reserved_unallocated": int64(0),
|
||||
"mem_total": int64(385548288),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "",
|
||||
"internal": "false",
|
||||
"type": "direct",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(284725),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(284572),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.direct",
|
||||
"internal": "false",
|
||||
"type": "direct",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.fanout",
|
||||
"internal": "false",
|
||||
"type": "fanout",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.headers",
|
||||
"internal": "false",
|
||||
"type": "headers",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.match",
|
||||
"internal": "false",
|
||||
"type": "headers",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.rabbitmq.trace",
|
||||
"internal": "true",
|
||||
"type": "topic",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "false",
|
||||
"durable": "true",
|
||||
"exchange": "amq.topic",
|
||||
"internal": "false",
|
||||
"type": "topic",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(0),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(0),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
testutil.MustMetric("rabbitmq_exchange",
|
||||
map[string]string{
|
||||
"auto_delete": "true",
|
||||
"durable": "false",
|
||||
"exchange": "Exchange",
|
||||
"internal": "false",
|
||||
"type": "topic",
|
||||
"url": ts.URL,
|
||||
"vhost": "/",
|
||||
},
|
||||
map[string]interface{}{
|
||||
"messages_publish_in": int64(18006),
|
||||
"messages_publish_in_rate": float64(0.0),
|
||||
"messages_publish_out": int64(60798),
|
||||
"messages_publish_out_rate": float64(0.0),
|
||||
},
|
||||
time.Unix(0, 0),
|
||||
),
|
||||
}
|
||||
expectedErrors := []error{
|
||||
fmt.Errorf("error response trying to get \"/api/federation-links\": \"Object Not Found\" (reason: \"Not Found\")"),
|
||||
}
|
||||
|
||||
// Run the test
|
||||
plugin := &RabbitMQ{
|
||||
URL: ts.URL,
|
||||
Log: testutil.Logger{},
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
acc := &testutil.Accumulator{}
|
||||
require.NoError(t, plugin.Gather(acc))
|
||||
|
||||
acc.Wait(len(expected))
|
||||
require.Len(t, acc.Errors, len(expectedErrors))
|
||||
require.ElementsMatch(t, expectedErrors, acc.Errors)
|
||||
|
||||
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime(), testutil.SortMetrics())
|
||||
}
|
||||
|
||||
func TestRabbitMQMetricFilerts(t *testing.T) {
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, fmt.Sprintf("unknown path %q", r.URL.Path), http.StatusNotFound)
|
||||
}))
|
||||
defer ts.Close()
|
||||
|
||||
metricErrors := map[string]error{
|
||||
"exchange": fmt.Errorf("getting \"/api/exchanges\" failed: 404 Not Found"),
|
||||
"federation": fmt.Errorf("getting \"/api/federation-links\" failed: 404 Not Found"),
|
||||
"node": fmt.Errorf("getting \"/api/nodes\" failed: 404 Not Found"),
|
||||
"overview": fmt.Errorf("getting \"/api/overview\" failed: 404 Not Found"),
|
||||
"queue": fmt.Errorf("getting \"/api/queues\" failed: 404 Not Found"),
|
||||
}
|
||||
|
||||
// Include test
|
||||
for name, expected := range metricErrors {
|
||||
plugin := &RabbitMQ{
|
||||
URL: ts.URL,
|
||||
Log: testutil.Logger{},
|
||||
MetricInclude: []string{name},
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
acc := &testutil.Accumulator{}
|
||||
require.NoError(t, plugin.Gather(acc))
|
||||
require.Len(t, acc.Errors, 1)
|
||||
require.ElementsMatch(t, []error{expected}, acc.Errors)
|
||||
}
|
||||
|
||||
// Exclude test
|
||||
for name := range metricErrors {
|
||||
// Exclude the current metric error from the list of expected errors
|
||||
var expected []error
|
||||
for n, e := range metricErrors {
|
||||
if n != name {
|
||||
expected = append(expected, e)
|
||||
}
|
||||
}
|
||||
plugin := &RabbitMQ{
|
||||
URL: ts.URL,
|
||||
Log: testutil.Logger{},
|
||||
MetricExclude: []string{name},
|
||||
}
|
||||
require.NoError(t, plugin.Init())
|
||||
|
||||
acc := &testutil.Accumulator{}
|
||||
require.NoError(t, plugin.Gather(acc))
|
||||
require.Len(t, acc.Errors, len(expected))
|
||||
require.ElementsMatch(t, expected, acc.Errors)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
[
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"message_stats": {
|
||||
"publish_in": 284725,
|
||||
"publish_in_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"publish_out": 284572,
|
||||
"publish_out_details": {
|
||||
"rate": 0
|
||||
}
|
||||
},
|
||||
"name": "",
|
||||
"type": "direct",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {
|
||||
"x-expires": 300000
|
||||
},
|
||||
"auto_delete": true,
|
||||
"durable": false,
|
||||
"internal": false,
|
||||
"message_stats": {
|
||||
"publish_in": 18006,
|
||||
"publish_in_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"publish_out": 60798,
|
||||
"publish_out_details": {
|
||||
"rate": 0
|
||||
}
|
||||
},
|
||||
"name": "Exchange",
|
||||
"type": "topic",
|
||||
"user_who_performed_action": "user",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"name": "amq.direct",
|
||||
"type": "direct",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"name": "amq.fanout",
|
||||
"type": "fanout",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"name": "amq.headers",
|
||||
"type": "headers",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"name": "amq.match",
|
||||
"type": "headers",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": true,
|
||||
"name": "amq.rabbitmq.trace",
|
||||
"type": "topic",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {},
|
||||
"auto_delete": false,
|
||||
"durable": true,
|
||||
"internal": false,
|
||||
"name": "amq.topic",
|
||||
"type": "topic",
|
||||
"user_who_performed_action": "rmq-internal",
|
||||
"vhost": "/"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"error":"Object Not Found","reason":"Not Found"}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"memory": {
|
||||
"connection_readers": 1246768,
|
||||
"connection_writers": 72108,
|
||||
"connection_channels": 308588,
|
||||
"connection_other": 4883596,
|
||||
"queue_procs": 780996,
|
||||
"queue_slave_procs": 0,
|
||||
"quorum_queue_procs": 0,
|
||||
"plugins": 11932828,
|
||||
"other_proc": 39203520,
|
||||
"metrics": 626932,
|
||||
"mgmt_db": 3341264,
|
||||
"mnesia": 396016,
|
||||
"quorum_ets": 47920,
|
||||
"other_ets": 3771384,
|
||||
"binary": 209324208,
|
||||
"msg_index": 32648,
|
||||
"code": 32810827,
|
||||
"atom": 1458513,
|
||||
"other_system": 14284124,
|
||||
"allocated_unused": 61026048,
|
||||
"reserved_unallocated": 0,
|
||||
"strategy": "rss",
|
||||
"total": {
|
||||
"erlang": 324522240,
|
||||
"rss": 385548288,
|
||||
"allocated": 385548288
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,417 @@
|
|||
[
|
||||
{
|
||||
"partitions": [],
|
||||
"os_pid": "8268",
|
||||
"fd_total": 65536,
|
||||
"sockets_total": 58893,
|
||||
"mem_limit": 1717546188,
|
||||
"mem_alarm": false,
|
||||
"disk_free_limit": 50000000,
|
||||
"disk_free_alarm": false,
|
||||
"proc_total": 1048576,
|
||||
"rates_mode": "basic",
|
||||
"uptime": 4150152129,
|
||||
"run_queue": 1,
|
||||
"processors": 4,
|
||||
"exchange_types": [
|
||||
{
|
||||
"name": "topic",
|
||||
"description": "AMQP topic exchange, as per the AMQP specification",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"name": "fanout",
|
||||
"description": "AMQP fanout exchange, as per the AMQP specification",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"name": "direct",
|
||||
"description": "AMQP direct exchange, as per the AMQP specification",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"name": "headers",
|
||||
"description": "AMQP headers exchange, as per the AMQP specification",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"auth_mechanisms": [
|
||||
{
|
||||
"name": "PLAIN",
|
||||
"description": "SASL PLAIN authentication mechanism",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"name": "AMQPLAIN",
|
||||
"description": "QPid AMQPLAIN mechanism",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"name": "RABBIT-CR-DEMO",
|
||||
"description": "RabbitMQ Demo challenge-response authentication mechanism",
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
"applications": [
|
||||
{
|
||||
"name": "amqp_client",
|
||||
"description": "RabbitMQ AMQP Client",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "asn1",
|
||||
"description": "The Erlang ASN1 compiler version 5.0.14",
|
||||
"version": "5.0.14"
|
||||
},
|
||||
{
|
||||
"name": "aten",
|
||||
"description": "Erlang node failure detector",
|
||||
"version": "0.5.5"
|
||||
},
|
||||
{
|
||||
"name": "compiler",
|
||||
"description": "ERTS CXC 138 10",
|
||||
"version": "7.6.6"
|
||||
},
|
||||
{
|
||||
"name": "cowboy",
|
||||
"description": "Small, fast, modern HTTP server.",
|
||||
"version": "2.8.0"
|
||||
},
|
||||
{
|
||||
"name": "cowlib",
|
||||
"description": "Support library for manipulating Web protocols.",
|
||||
"version": "2.9.1"
|
||||
},
|
||||
{
|
||||
"name": "credentials_obfuscation",
|
||||
"description": "Helper library that obfuscates sensitive values in process state",
|
||||
"version": "2.4.0"
|
||||
},
|
||||
{
|
||||
"name": "crypto",
|
||||
"description": "CRYPTO",
|
||||
"version": "4.8.3"
|
||||
},
|
||||
{
|
||||
"name": "cuttlefish",
|
||||
"description": "cuttlefish configuration abstraction",
|
||||
"version": "2.6.0"
|
||||
},
|
||||
{
|
||||
"name": "gen_batch_server",
|
||||
"description": "Generic batching server",
|
||||
"version": "0.8.4"
|
||||
},
|
||||
{
|
||||
"name": "goldrush",
|
||||
"description": "Erlang event stream processor",
|
||||
"version": "0.1.9"
|
||||
},
|
||||
{
|
||||
"name": "inets",
|
||||
"description": "INETS CXC 138 49",
|
||||
"version": "7.3.2"
|
||||
},
|
||||
{
|
||||
"name": "jsx",
|
||||
"description": "a streaming, evented json parsing toolkit",
|
||||
"version": "2.11.0"
|
||||
},
|
||||
{
|
||||
"name": "kernel",
|
||||
"description": "ERTS CXC 138 10",
|
||||
"version": "7.2.1"
|
||||
},
|
||||
{
|
||||
"name": "lager",
|
||||
"description": "Erlang logging framework",
|
||||
"version": "3.8.2"
|
||||
},
|
||||
{
|
||||
"name": "mnesia",
|
||||
"description": "MNESIA CXC 138 12",
|
||||
"version": "4.18.1"
|
||||
},
|
||||
{
|
||||
"name": "observer_cli",
|
||||
"description": "Visualize Erlang Nodes On The Command Line",
|
||||
"version": "1.6.1"
|
||||
},
|
||||
{
|
||||
"name": "os_mon",
|
||||
"description": "CPO CXC 138 46",
|
||||
"version": "2.6.1"
|
||||
},
|
||||
{
|
||||
"name": "public_key",
|
||||
"description": "Public key infrastructure",
|
||||
"version": "1.9.2"
|
||||
},
|
||||
{
|
||||
"name": "ra",
|
||||
"description": "Raft library",
|
||||
"version": "1.1.8"
|
||||
},
|
||||
{
|
||||
"name": "rabbit",
|
||||
"description": "RabbitMQ",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "rabbit_common",
|
||||
"description": "Modules shared by rabbitmq-server and rabbitmq-erlang-client",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq_management",
|
||||
"description": "RabbitMQ Management Console",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq_management_agent",
|
||||
"description": "RabbitMQ Management Agent",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq_prelaunch",
|
||||
"description": "RabbitMQ prelaunch setup",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "rabbitmq_web_dispatch",
|
||||
"description": "RabbitMQ Web Dispatcher",
|
||||
"version": "3.8.14"
|
||||
},
|
||||
{
|
||||
"name": "ranch",
|
||||
"description": "Socket acceptor pool for TCP protocols.",
|
||||
"version": "1.7.1"
|
||||
},
|
||||
{
|
||||
"name": "recon",
|
||||
"description": "Diagnostic tools for production use",
|
||||
"version": "2.5.1"
|
||||
},
|
||||
{
|
||||
"name": "sasl",
|
||||
"description": "SASL CXC 138 11",
|
||||
"version": "4.0.1"
|
||||
},
|
||||
{
|
||||
"name": "ssl",
|
||||
"description": "Erlang/OTP SSL application",
|
||||
"version": "10.2.4"
|
||||
},
|
||||
{
|
||||
"name": "stdlib",
|
||||
"description": "ERTS CXC 138 10",
|
||||
"version": "3.14"
|
||||
},
|
||||
{
|
||||
"name": "stdout_formatter",
|
||||
"description": "Tools to format paragraphs, lists and tables as plain text",
|
||||
"version": "0.2.4"
|
||||
},
|
||||
{
|
||||
"name": "syntax_tools",
|
||||
"description": "Syntax tools",
|
||||
"version": "2.4"
|
||||
},
|
||||
{
|
||||
"name": "sysmon_handler",
|
||||
"description": "Rate-limiting system_monitor event handler",
|
||||
"version": "1.3.0"
|
||||
},
|
||||
{
|
||||
"name": "tools",
|
||||
"description": "DEVTOOLS CXC 138 16",
|
||||
"version": "3.4.3"
|
||||
},
|
||||
{
|
||||
"name": "xmerl",
|
||||
"description": "XML parser",
|
||||
"version": "1.3.26"
|
||||
}
|
||||
],
|
||||
"contexts": [
|
||||
{
|
||||
"description": "RabbitMQ Management",
|
||||
"path": "/",
|
||||
"cowboy_opts": "[{sendfile,false}]",
|
||||
"port": "15672"
|
||||
}
|
||||
],
|
||||
"log_files": [
|
||||
"c:/Users/user/AppData/Roaming/RabbitMQ/log/rabbit@rmqserver.log",
|
||||
"c:/Users/user/AppData/Roaming/RabbitMQ/log/rabbit@rmqserver_upgrade.log"
|
||||
],
|
||||
"db_dir": "c:/Users/user/AppData/Roaming/RabbitMQ/db/rabbit@rmqserver-mnesia",
|
||||
"config_files": [
|
||||
"c:/Users/user/AppData/Roaming/RabbitMQ/advanced.config"
|
||||
],
|
||||
"net_ticktime": 60,
|
||||
"enabled_plugins": [
|
||||
"rabbitmq_management"
|
||||
],
|
||||
"mem_calculation_strategy": "rss",
|
||||
"ra_open_file_metrics": {
|
||||
"ra_log_wal": 1,
|
||||
"ra_log_segment_writer": 0
|
||||
},
|
||||
"name": "rabbit@rmqserver",
|
||||
"type": "disc",
|
||||
"running": true,
|
||||
"mem_used": 387645440,
|
||||
"mem_used_details": {
|
||||
"rate": 419430.4
|
||||
},
|
||||
"fd_used": 78,
|
||||
"fd_used_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"sockets_used": 43,
|
||||
"sockets_used_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"proc_used": 1128,
|
||||
"proc_used_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"disk_free": 25086496768,
|
||||
"disk_free_details": {
|
||||
"rate": -118784
|
||||
},
|
||||
"gc_num": 329526389,
|
||||
"gc_num_details": {
|
||||
"rate": 125.2
|
||||
},
|
||||
"gc_bytes_reclaimed": 13660012170840,
|
||||
"gc_bytes_reclaimed_details": {
|
||||
"rate": 6583379.2
|
||||
},
|
||||
"context_switches": 974149754,
|
||||
"context_switches_details": {
|
||||
"rate": 270
|
||||
},
|
||||
"io_read_count": 1,
|
||||
"io_read_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_read_bytes": 1,
|
||||
"io_read_bytes_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_read_avg_time": 0,
|
||||
"io_read_avg_time_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_write_count": 45,
|
||||
"io_write_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_write_bytes": 193066,
|
||||
"io_write_bytes_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_write_avg_time": 0,
|
||||
"io_write_avg_time_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_sync_count": 45,
|
||||
"io_sync_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_sync_avg_time": 0,
|
||||
"io_sync_avg_time_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_seek_count": 31,
|
||||
"io_seek_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_seek_avg_time": 0,
|
||||
"io_seek_avg_time_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_reopen_count": 0,
|
||||
"io_reopen_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"mnesia_ram_tx_count": 2257,
|
||||
"mnesia_ram_tx_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"mnesia_disk_tx_count": 103,
|
||||
"mnesia_disk_tx_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"msg_store_read_count": 0,
|
||||
"msg_store_read_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"msg_store_write_count": 1,
|
||||
"msg_store_write_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_index_journal_write_count": 165,
|
||||
"queue_index_journal_write_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_index_write_count": 0,
|
||||
"queue_index_write_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_index_read_count": 0,
|
||||
"queue_index_read_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_file_handle_open_attempt_count": 882,
|
||||
"io_file_handle_open_attempt_count_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"io_file_handle_open_attempt_avg_time": 0.05442176870748299,
|
||||
"io_file_handle_open_attempt_avg_time_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"connection_created": 2310,
|
||||
"connection_created_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"connection_closed": 2268,
|
||||
"connection_closed_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"channel_created": 2310,
|
||||
"channel_created_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"channel_closed": 2267,
|
||||
"channel_closed_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_declared": 144281,
|
||||
"queue_declared_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_created": 663,
|
||||
"queue_created_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"queue_deleted": 629,
|
||||
"queue_deleted_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"cluster_links": [],
|
||||
"metrics_gc_queue_length": {
|
||||
"connection_closed": 0,
|
||||
"channel_closed": 0,
|
||||
"consumer_deleted": 0,
|
||||
"exchange_deleted": 0,
|
||||
"queue_deleted": 0,
|
||||
"vhost_deleted": 0,
|
||||
"node_node_deleted": 0,
|
||||
"channel_consumer_deleted": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"management_version":"3.8.14","rates_mode":"basic","sample_retention_policies":{"global":[600,3600,28800,86400],"basic":[600,3600],"detailed":[600]},"exchange_types":[{"name":"direct","description":"AMQP direct exchange, as per the AMQP specification","enabled":true},{"name":"fanout","description":"AMQP fanout exchange, as per the AMQP specification","enabled":true},{"name":"headers","description":"AMQP headers exchange, as per the AMQP specification","enabled":true},{"name":"topic","description":"AMQP topic exchange, as per the AMQP specification","enabled":true}],"product_version":"3.8.14","product_name":"RabbitMQ","rabbitmq_version":"3.8.14","cluster_name":"rabbit@rmqserver","erlang_version":"23.2.7","erlang_full_version":"Erlang/OTP 23 [erts-11.1.8] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]","disable_stats":false,"enable_queue_totals":false,"message_stats":{"ack":3736443,"ack_details":{"rate":0.0},"confirm":0,"confirm_details":{"rate":0.0},"deliver":3736446,"deliver_details":{"rate":0.0},"deliver_get":3736446,"deliver_get_details":{"rate":0.0},"deliver_no_ack":0,"deliver_no_ack_details":{"rate":0.0},"disk_reads":0,"disk_reads_details":{"rate":0.0},"disk_writes":55,"disk_writes_details":{"rate":0.0},"drop_unroutable":0,"drop_unroutable_details":{"rate":0.0},"get":0,"get_details":{"rate":0.0},"get_empty":0,"get_empty_details":{"rate":0.0},"get_no_ack":0,"get_no_ack_details":{"rate":0.0},"publish":770025,"publish_details":{"rate":0.0},"redeliver":1,"redeliver_details":{"rate":0.0},"return_unroutable":0,"return_unroutable_details":{"rate":0.0}},"churn_rates":{"channel_closed":2267,"channel_closed_details":{"rate":0.0},"channel_created":2310,"channel_created_details":{"rate":0.0},"connection_closed":2268,"connection_closed_details":{"rate":0.0},"connection_created":2310,"connection_created_details":{"rate":0.0},"queue_created":663,"queue_created_details":{"rate":0.0},"queue_declared":144281,"queue_declared_details":{"rate":0.0},"queue_deleted":629,"queue_deleted_details":{"rate":0.0}},"queue_totals":{"messages":30,"messages_details":{"rate":0.0},"messages_ready":30,"messages_ready_details":{"rate":0.0},"messages_unacknowledged":0,"messages_unacknowledged_details":{"rate":0.0}},"object_totals":{"channels":43,"connections":43,"consumers":37,"exchanges":8,"queues":34},"statistics_db_event_queue":0,"node":"rabbit@rmqserver","listeners":[{"node":"rabbit@rmqserver","protocol":"amqp","ip_address":"0.0.0.0","port":5672,"socket_opts":{"backlog":128,"nodelay":true,"linger":[true,0],"exit_on_close":false}},{"node":"rabbit@rmqserver","protocol":"amqp","ip_address":"::","port":5672,"socket_opts":{"backlog":128,"nodelay":true,"linger":[true,0],"exit_on_close":false}},{"node":"rabbit@rmqserver","protocol":"amqp/ssl","ip_address":"0.0.0.0","port":5671,"socket_opts":{"backlog":128,"nodelay":true,"linger":[true,0],"exit_on_close":false,"versions":["tlsv1.3","tlsv1.2","tlsv1.1","tlsv1"],"cacertfile":"C:\\ProgramData\\Chain.pem","certfile":"C:\\ProgramData\\server.crt","keyfile":"C:\\ProgramData\\server.key","verify":"verify_peer","depth":3,"fail_if_no_peer_cert":false}},{"node":"rabbit@rmqserver","protocol":"amqp/ssl","ip_address":"::","port":5671,"socket_opts":{"backlog":128,"nodelay":true,"linger":[true,0],"exit_on_close":false,"versions":["tlsv1.3","tlsv1.2","tlsv1.1","tlsv1"],"cacertfile":"C:\\ProgramData\\Chain.pem","certfile":"C:\\ProgramData\\server.crt","keyfile":"C:\\ProgramData\\server.key","verify":"verify_peer","depth":3,"fail_if_no_peer_cert":false}},{"node":"rabbit@rmqserver","protocol":"clustering","ip_address":"::","port":25672,"socket_opts":[]},{"node":"rabbit@rmqserver","protocol":"http","ip_address":"0.0.0.0","port":15672,"socket_opts":{"cowboy_opts":{"sendfile":false},"port":15672}},{"node":"rabbit@rmqserver","protocol":"http","ip_address":"::","port":15672,"socket_opts":{"cowboy_opts":{"sendfile":false},"port":15672}}],"contexts":[{"ssl_opts":[],"node":"rabbit@rmqserver","description":"RabbitMQ Management","path":"/","cowboy_opts":"[{sendfile,false}]","port":"15672"}]}
|
||||
|
|
@ -0,0 +1,356 @@
|
|||
[
|
||||
{
|
||||
"arguments": {
|
||||
"x-expires": 300000
|
||||
},
|
||||
"auto_delete": false,
|
||||
"backing_queue_status": {
|
||||
"avg_ack_egress_rate": 0,
|
||||
"avg_ack_ingress_rate": 0,
|
||||
"avg_egress_rate": 0,
|
||||
"avg_ingress_rate": 0,
|
||||
"delta": [
|
||||
"delta",
|
||||
"undefined",
|
||||
0,
|
||||
0,
|
||||
"undefined"
|
||||
],
|
||||
"len": 0,
|
||||
"mode": "default",
|
||||
"next_seq_id": 180,
|
||||
"q1": 0,
|
||||
"q2": 0,
|
||||
"q3": 0,
|
||||
"q4": 0,
|
||||
"target_ram_count": "infinity"
|
||||
},
|
||||
"consumer_capacity": 1,
|
||||
"consumer_utilisation": 1,
|
||||
"consumers": 1,
|
||||
"durable": false,
|
||||
"effective_policy_definition": {},
|
||||
"exclusive": false,
|
||||
"exclusive_consumer_tag": null,
|
||||
"garbage_collection": {
|
||||
"fullsweep_after": 65535,
|
||||
"max_heap_size": 0,
|
||||
"min_bin_vheap_size": 46422,
|
||||
"min_heap_size": 233,
|
||||
"minor_gcs": 16174
|
||||
},
|
||||
"head_message_timestamp": null,
|
||||
"idle_since": "2021-06-28 15:54:14",
|
||||
"memory": 15840,
|
||||
"message_bytes": 0,
|
||||
"message_bytes_paged_out": 0,
|
||||
"message_bytes_persistent": 0,
|
||||
"message_bytes_ram": 0,
|
||||
"message_bytes_ready": 0,
|
||||
"message_bytes_unacknowledged": 0,
|
||||
"message_stats": {
|
||||
"ack": 180,
|
||||
"ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver": 180,
|
||||
"deliver_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_get": 180,
|
||||
"deliver_get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_no_ack": 0,
|
||||
"deliver_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get": 0,
|
||||
"get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_empty": 0,
|
||||
"get_empty_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_no_ack": 0,
|
||||
"get_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"publish": 180,
|
||||
"publish_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"redeliver": 0,
|
||||
"redeliver_details": {
|
||||
"rate": 0
|
||||
}
|
||||
},
|
||||
"messages": 0,
|
||||
"messages_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_paged_out": 0,
|
||||
"messages_persistent": 0,
|
||||
"messages_ram": 0,
|
||||
"messages_ready": 0,
|
||||
"messages_ready_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_ready_ram": 0,
|
||||
"messages_unacknowledged": 0,
|
||||
"messages_unacknowledged_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_unacknowledged_ram": 0,
|
||||
"name": "39fd2caf-63e5-41e3-c15a-ba8fa11434b2",
|
||||
"node": "rabbit@rmqserver",
|
||||
"operator_policy": null,
|
||||
"policy": null,
|
||||
"recoverable_slaves": null,
|
||||
"reductions": 11766294,
|
||||
"reductions_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"single_active_consumer_tag": null,
|
||||
"state": "running",
|
||||
"type": "classic",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {
|
||||
"x-expires": 300000
|
||||
},
|
||||
"auto_delete": false,
|
||||
"backing_queue_status": {
|
||||
"avg_ack_egress_rate": 0,
|
||||
"avg_ack_ingress_rate": 0,
|
||||
"avg_egress_rate": 0,
|
||||
"avg_ingress_rate": 0,
|
||||
"delta": [
|
||||
"delta",
|
||||
"undefined",
|
||||
0,
|
||||
0,
|
||||
"undefined"
|
||||
],
|
||||
"len": 0,
|
||||
"mode": "default",
|
||||
"next_seq_id": 177,
|
||||
"q1": 0,
|
||||
"q2": 0,
|
||||
"q3": 0,
|
||||
"q4": 0,
|
||||
"target_ram_count": "infinity"
|
||||
},
|
||||
"consumer_capacity": 1,
|
||||
"consumer_utilisation": 1,
|
||||
"consumers": 1,
|
||||
"durable": false,
|
||||
"effective_policy_definition": {},
|
||||
"exclusive": false,
|
||||
"exclusive_consumer_tag": null,
|
||||
"garbage_collection": {
|
||||
"fullsweep_after": 65535,
|
||||
"max_heap_size": 0,
|
||||
"min_bin_vheap_size": 46422,
|
||||
"min_heap_size": 233,
|
||||
"minor_gcs": 16205
|
||||
},
|
||||
"head_message_timestamp": null,
|
||||
"idle_since": "2021-06-28 15:54:14",
|
||||
"memory": 15600,
|
||||
"message_bytes": 0,
|
||||
"message_bytes_paged_out": 0,
|
||||
"message_bytes_persistent": 0,
|
||||
"message_bytes_ram": 0,
|
||||
"message_bytes_ready": 0,
|
||||
"message_bytes_unacknowledged": 0,
|
||||
"message_stats": {
|
||||
"ack": 177,
|
||||
"ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver": 177,
|
||||
"deliver_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_get": 177,
|
||||
"deliver_get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_no_ack": 0,
|
||||
"deliver_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get": 0,
|
||||
"get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_empty": 0,
|
||||
"get_empty_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_no_ack": 0,
|
||||
"get_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"publish": 177,
|
||||
"publish_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"redeliver": 0,
|
||||
"redeliver_details": {
|
||||
"rate": 0
|
||||
}
|
||||
},
|
||||
"messages": 0,
|
||||
"messages_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_paged_out": 0,
|
||||
"messages_persistent": 0,
|
||||
"messages_ram": 0,
|
||||
"messages_ready": 0,
|
||||
"messages_ready_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_ready_ram": 0,
|
||||
"messages_unacknowledged": 0,
|
||||
"messages_unacknowledged_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_unacknowledged_ram": 0,
|
||||
"name": "39fd2cb4-aa2d-c08b-457a-62d0893523a1",
|
||||
"node": "rabbit@rmqserver",
|
||||
"operator_policy": null,
|
||||
"policy": null,
|
||||
"recoverable_slaves": null,
|
||||
"reductions": 11706656,
|
||||
"reductions_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"single_active_consumer_tag": null,
|
||||
"state": "running",
|
||||
"type": "classic",
|
||||
"vhost": "/"
|
||||
},
|
||||
{
|
||||
"arguments": {
|
||||
"x-expires": 300000
|
||||
},
|
||||
"auto_delete": false,
|
||||
"backing_queue_status": {
|
||||
"avg_ack_egress_rate": 0,
|
||||
"avg_ack_ingress_rate": 0,
|
||||
"avg_egress_rate": 0,
|
||||
"avg_ingress_rate": 0,
|
||||
"delta": [
|
||||
"delta",
|
||||
"undefined",
|
||||
0,
|
||||
0,
|
||||
"undefined"
|
||||
],
|
||||
"len": 0,
|
||||
"mode": "default",
|
||||
"next_seq_id": 175,
|
||||
"q1": 0,
|
||||
"q2": 0,
|
||||
"q3": 0,
|
||||
"q4": 0,
|
||||
"target_ram_count": "infinity"
|
||||
},
|
||||
"consumer_capacity": 1,
|
||||
"consumer_utilisation": 1,
|
||||
"consumers": 1,
|
||||
"durable": false,
|
||||
"effective_policy_definition": {},
|
||||
"exclusive": false,
|
||||
"exclusive_consumer_tag": null,
|
||||
"garbage_collection": {
|
||||
"fullsweep_after": 65535,
|
||||
"max_heap_size": 0,
|
||||
"min_bin_vheap_size": 46422,
|
||||
"min_heap_size": 233,
|
||||
"minor_gcs": 16183
|
||||
},
|
||||
"head_message_timestamp": null,
|
||||
"idle_since": "2021-06-28 15:54:15",
|
||||
"memory": 15584,
|
||||
"message_bytes": 0,
|
||||
"message_bytes_paged_out": 0,
|
||||
"message_bytes_persistent": 0,
|
||||
"message_bytes_ram": 0,
|
||||
"message_bytes_ready": 0,
|
||||
"message_bytes_unacknowledged": 0,
|
||||
"message_stats": {
|
||||
"ack": 175,
|
||||
"ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver": 175,
|
||||
"deliver_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_get": 175,
|
||||
"deliver_get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"deliver_no_ack": 0,
|
||||
"deliver_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get": 0,
|
||||
"get_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_empty": 0,
|
||||
"get_empty_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"get_no_ack": 0,
|
||||
"get_no_ack_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"publish": 175,
|
||||
"publish_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"redeliver": 0,
|
||||
"redeliver_details": {
|
||||
"rate": 0
|
||||
}
|
||||
},
|
||||
"messages": 0,
|
||||
"messages_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_paged_out": 0,
|
||||
"messages_persistent": 0,
|
||||
"messages_ram": 0,
|
||||
"messages_ready": 0,
|
||||
"messages_ready_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_ready_ram": 0,
|
||||
"messages_unacknowledged": 0,
|
||||
"messages_unacknowledged_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"messages_unacknowledged_ram": 0,
|
||||
"name": "39fd2cb5-3820-e01b-6e20-ba29d5553fc3",
|
||||
"node": "rabbit@rmqserver",
|
||||
"operator_policy": null,
|
||||
"policy": null,
|
||||
"recoverable_slaves": null,
|
||||
"reductions": 11649471,
|
||||
"reductions_details": {
|
||||
"rate": 0
|
||||
},
|
||||
"single_active_consumer_tag": null,
|
||||
"state": "running",
|
||||
"type": "classic",
|
||||
"vhost": "/"
|
||||
}
|
||||
]
|
||||
Loading…
Reference in New Issue