firehol/netdata

View on GitHub
src/go/plugin/go.d/modules/rabbitmq/metrics.go

Summary

Maintainability
A
0 mins
Test Coverage
// SPDX-License-Identifier: GPL-3.0-or-later

package rabbitmq

// https://www.rabbitmq.com/monitoring.html#cluster-wide-metrics
type overviewStats struct {
    ObjectTotals struct {
        Consumers   int64 `json:"consumers" stm:"consumers"`
        Queues      int64 `json:"queues" stm:"queues"`
        Exchanges   int64 `json:"exchanges" stm:"exchanges"`
        Connections int64 `json:"connections" stm:"connections"`
        Channels    int64 `json:"channels" stm:"channels"`
    } `json:"object_totals" stm:"object_totals"`
    ChurnRates struct {
        ChannelClosed     int64 `json:"channel_closed" stm:"channel_closed"`
        ChannelCreated    int64 `json:"channel_created" stm:"channel_created"`
        ConnectionClosed  int64 `json:"connection_closed" stm:"connection_closed"`
        ConnectionCreated int64 `json:"connection_created" stm:"connection_created"`
        QueueCreated      int64 `json:"queue_created" stm:"queue_created"`
        QueueDeclared     int64 `json:"queue_declared" stm:"queue_declared"`
        QueueDeleted      int64 `json:"queue_deleted" stm:"queue_deleted"`
    } `json:"churn_rates" stm:"churn_rates"`
    QueueTotals struct {
        Messages               int64 `json:"messages" stm:"messages"`
        MessagesReady          int64 `json:"messages_ready" stm:"messages_ready"`
        MessagesUnacknowledged int64 `json:"messages_unacknowledged" stm:"messages_unacknowledged"`
    } `json:"queue_totals" stm:"queue_totals"`
    MessageStats messageStats `json:"message_stats" stm:"message_stats"`
    Node         string
}

// https://www.rabbitmq.com/monitoring.html#node-metrics
type nodeStats struct {
    FDTotal      int64 `json:"fd_total" stm:"fd_total"`
    FDUsed       int64 `json:"fd_used" stm:"fd_used"`
    MemLimit     int64 `json:"mem_limit" stm:"mem_limit"`
    MemUsed      int64 `json:"mem_used" stm:"mem_used"`
    SocketsTotal int64 `json:"sockets_total" stm:"sockets_total"`
    SocketsUsed  int64 `json:"sockets_used" stm:"sockets_used"`
    ProcTotal    int64 `json:"proc_total" stm:"proc_total"`
    ProcUsed     int64 `json:"proc_used" stm:"proc_used"`
    DiskFree     int64 `json:"disk_free" stm:"disk_free"`
    RunQueue     int64 `json:"run_queue" stm:"run_queue"`
}

type vhostStats struct {
    Name                   string       `json:"name"`
    Messages               int64        `json:"messages" stm:"messages"`
    MessagesReady          int64        `json:"messages_ready" stm:"messages_ready"`
    MessagesUnacknowledged int64        `json:"messages_unacknowledged" stm:"messages_unacknowledged"`
    MessageStats           messageStats `json:"message_stats" stm:"message_stats"`
}

// https://www.rabbitmq.com/monitoring.html#queue-metrics
type queueStats struct {
    Name                   string       `json:"name"`
    Vhost                  string       `json:"vhost"`
    State                  string       `json:"state"`
    Type                   string       `json:"type"`
    Messages               int64        `json:"messages" stm:"messages"`
    MessagesReady          int64        `json:"messages_ready" stm:"messages_ready"`
    MessagesUnacknowledged int64        `json:"messages_unacknowledged" stm:"messages_unacknowledged"`
    MessagesPagedOut       int64        `json:"messages_paged_out" stm:"messages_paged_out"`
    MessagesPersistent     int64        `json:"messages_persistent" stm:"messages_persistent"`
    MessageStats           messageStats `json:"message_stats" stm:"message_stats"`
}

// https://rawcdn.githack.com/rabbitmq/rabbitmq-server/v3.11.5/deps/rabbitmq_management/priv/www/api/index.html
type messageStats struct {
    Ack              int64 `json:"ack" stm:"ack"`
    Publish          int64 `json:"publish" stm:"publish"`
    PublishIn        int64 `json:"publish_in" stm:"publish_in"`
    PublishOut       int64 `json:"publish_out" stm:"publish_out"`
    Confirm          int64 `json:"confirm" stm:"confirm"`
    Deliver          int64 `json:"deliver" stm:"deliver"`
    DeliverNoAck     int64 `json:"deliver_no_ack" stm:"deliver_no_ack"`
    Get              int64 `json:"get" stm:"get"`
    GetNoAck         int64 `json:"get_no_ack" stm:"get_no_ack"`
    DeliverGet       int64 `json:"deliver_get" stm:"deliver_get"`
    Redeliver        int64 `json:"redeliver" stm:"redeliver"`
    ReturnUnroutable int64 `json:"return_unroutable" stm:"return_unroutable"`
}