1%% This Source Code Form is subject to the terms of the Mozilla Public 2%% License, v. 2.0. If a copy of the MPL was not distributed with this 3%% file, You can obtain one at https://mozilla.org/MPL/2.0/. 4%% 5%% Copyright (c) 2007-2021 VMware, Inc. or its affiliates. All rights reserved. 6%% 7 8-type(event_type() :: queue_stats | queue_exchange_stats | vhost_stats 9 | channel_queue_stats | channel_stats 10 | channel_exchange_stats | exchange_stats 11 | node_stats | node_node_stats | connection_stats). 12-type(type() :: deliver_get | fine_stats | queue_msg_rates | queue_msg_counts 13 | coarse_node_stats | coarse_node_node_stats | coarse_conn_stats 14 | process_stats). 15 16-type(table_name() :: atom()). 17 18-define(TABLES, [{connection_stats_coarse_conn_stats, set}, 19 {vhost_stats_coarse_conn_stats, set}, 20 {connection_created_stats, set}, 21 {connection_stats, set}, 22 {channel_created_stats, set}, 23 {channel_stats, set}, 24 {channel_stats_fine_stats, set}, 25 {channel_exchange_stats_fine_stats, set}, 26 {channel_queue_stats_deliver_stats, set}, 27 {vhost_stats_fine_stats, set}, 28 {queue_stats_deliver_stats, set}, 29 {vhost_stats_deliver_stats, set}, 30 {channel_stats_deliver_stats, set}, 31 {channel_process_stats, set}, 32 {queue_stats_publish, set}, 33 {queue_exchange_stats_publish, set}, 34 {exchange_stats_publish_out, set}, 35 {exchange_stats_publish_in, set}, 36 {consumer_stats, set}, 37 {queue_stats, set}, 38 {queue_msg_stats, set}, 39 {vhost_msg_stats, set}, 40 {queue_process_stats, set}, 41 {node_stats, set}, 42 {node_coarse_stats, set}, 43 {node_persister_stats, set}, 44 {node_node_stats, set}, 45 {node_node_coarse_stats, set}, 46 {queue_msg_rates, set}, 47 {vhost_msg_rates, set}, 48 {connection_churn_rates, set}]). 49 50-define(INDEX_TABLES, [consumer_stats_queue_index, 51 consumer_stats_channel_index, 52 channel_exchange_stats_fine_stats_exchange_index, 53 channel_exchange_stats_fine_stats_channel_index, 54 channel_queue_stats_deliver_stats_queue_index, 55 channel_queue_stats_deliver_stats_channel_index, 56 queue_exchange_stats_publish_queue_index, 57 queue_exchange_stats_publish_exchange_index, 58 node_node_coarse_stats_node_index]). 59 60-define(GC_EVENTS, [connection_closed, channel_closed, consumer_deleted, 61 exchange_deleted, queue_deleted, vhost_deleted, 62 node_node_deleted, channel_consumer_deleted]). 63 64-define(DELEGATE_PREFIX, "delegate_management_"). 65 66%%------------------------------------------------------------------------------ 67%% Only for documentation and testing purposes, so we keep track of the number and 68%% order of the metrics 69-define(connection_stats_coarse_conn_stats(Recv_oct, Send_oct, Reductions), 70 {Recv_oct, Send_oct, Reductions}). 71-define(vhost_stats_coarse_conn_stats(Recv_oct, Send_oct), {Recv_oct, Send_oct}). 72-define(connection_created_stats(Id, Name, Props), {Id, Name, Props}). 73-define(connection_stats(Id, Props), {Id, Props}). 74-define(channel_created_stats(Id, Name, Props), {Id, Name, Props}). 75-define(channel_consumer_created_stats(Queue, ChPid, ConsumerTag), 76 {Queue, {ChPid, ConsumerTag}}). 77-define(channel_stats(Id, Props), {Id, Props}). 78-define(channel_stats_fine_stats(Publish, Confirm, ReturnUnroutable, DropUnroutable), 79 {Publish, Confirm, ReturnUnroutable, DropUnroutable}). 80-define(channel_exchange_stats_fine_stats(Publish, Confirm, ReturnUnroutable, DropUnroutable), 81 {Publish, Confirm, ReturnUnroutable, DropUnroutable}). 82-define(channel_queue_stats_deliver_stats(Get, Get_no_ack, Deliver, Deliver_no_ack, 83 Redeliver, Ack, Deliver_get, Get_empty), 84 {Get, Get_no_ack, Deliver, Deliver_no_ack, Redeliver, Ack, Deliver_get, 85 Get_empty}). 86-define(vhost_stats_fine_stats(Publish, Confirm, ReturnUnroutable, DropUnroutable), 87 {Publish, Confirm, ReturnUnroutable, DropUnroutable}). 88-define(queue_stats_deliver_stats(Get, Get_no_ack, Deliver, Deliver_no_ack, 89 Redeliver, Ack, Deliver_get, Get_empty), 90 {Get, Get_no_ack, Deliver, Deliver_no_ack, Redeliver, Ack, Deliver_get, 91 Get_empty}). 92-define(vhost_stats_deliver_stats(Get, Get_no_ack, Deliver, Deliver_no_ack, 93 Redeliver, Ack, Deliver_get, Get_empty), 94 {Get, Get_no_ack, Deliver, Deliver_no_ack, Redeliver, Ack, Deliver_get, 95 Get_empty}). 96-define(channel_stats_deliver_stats(Get, Get_no_ack, Deliver, Deliver_no_ack, 97 Redeliver, Ack, Deliver_get, Get_empty), 98 {Get, Get_no_ack, Deliver, Deliver_no_ack, Redeliver, Ack, Deliver_get, 99 Get_empty}). 100-define(channel_process_stats(Reductions), {Reductions}). 101-define(queue_stats_publish(Publish), {Publish}). 102-define(queue_exchange_stats_publish(Publish), {Publish}). 103-define(exchange_stats_publish_out(Publish_out), {Publish_out}). 104-define(exchange_stats_publish_in(Publish_in), {Publish_in}). 105-define(consumer_stats(Id, Props), {Id, Props}). 106-define(queue_stats(Id, Props), {Id, Props}). 107-define(queue_msg_stats(Messages_ready, Messages_unacknowledged, Messages), 108 {Messages_ready, Messages_unacknowledged, Messages}). 109-define(vhost_msg_stats(Messages_ready, Messages_unacknowledged, Messages), 110 {Messages_ready, Messages_unacknowledged, Messages}). 111-define(queue_process_stats(Reductions), {Reductions}). 112-define(node_stats(Id, Props), {Id, Props}). 113-define(node_coarse_stats(Fd_used, Sockets_used, Mem_used, Disk_free, Proc_used, 114 Gc_num, Gc_bytes_reclaimed, Context_switches), 115 {Fd_used, Sockets_used, Mem_used, Disk_free, Proc_used, Gc_num, 116 Gc_bytes_reclaimed, Context_switches}). 117-define(node_persister_stats(Io_read_count, Io_read_bytes, Io_read_avg_time, Io_write_count, 118 Io_write_bytes, Io_write_avg_time, Io_sync_count, Io_sync_avg_time, 119 Io_seek_count, Io_seek_avg_time, Io_reopen_count, Mnesia_ram_tx_count, 120 Mnesia_disk_tx_count, Msg_store_read_count, Msg_store_write_count, 121 Queue_index_journal_write_count, Queue_index_write_count, 122 Queue_index_read_count, Io_file_handle_open_attempt_count, 123 Io_file_handle_open_attempt_avg_time), 124 {Io_read_count, Io_read_bytes, Io_read_avg_time, Io_write_count, Io_write_bytes, 125 Io_write_avg_time, Io_sync_count, Io_sync_avg_time, Io_seek_count, Io_seek_avg_time, 126 Io_reopen_count, Mnesia_ram_tx_count, Mnesia_disk_tx_count, Msg_store_read_count, 127 Msg_store_write_count, Queue_index_journal_write_count, Queue_index_write_count, 128 Queue_index_read_count, Io_file_handle_open_attempt_count, 129 Io_file_handle_open_attempt_avg_time}). 130-define(node_node_stats(Send_bytes, Recv_bytes), {Send_bytes, Recv_bytes}). 131-define(node_node_coarse_stats(Send_bytes, Recv_bytes), {Send_bytes, Recv_bytes}). 132-define(queue_msg_rates(Disk_reads, Disk_writes), {Disk_reads, Disk_writes}). 133-define(vhost_msg_rates(Disk_reads, Disk_writes), {Disk_reads, Disk_writes}). 134-define(old_aggr_stats(Id, Stats), {Id, Stats}). 135-define(connection_churn_rates(Connection_created, Connection_closed, Channel_created, 136 Channel_closed, Queue_declared, Queue_created, 137 Queue_deleted), 138 {Connection_created, Connection_closed, Channel_created, Channel_closed, 139 Queue_declared, Queue_created, Queue_deleted}). 140 141-define(stats_per_table(Table), 142 case Table of 143 connection_stats_coarse_conn_stats -> 144 [recv_oct, send_oct, reductions]; 145 vhost_stats_coarse_conn_stats -> 146 [recv_oct, send_oct]; 147 T when T =:= channel_stats_fine_stats; 148 T =:= channel_exchange_stats_fine_stats; 149 T =:= vhost_stats_fine_stats -> 150 [publish, confirm, return_unroutable, drop_unroutable]; 151 T when T =:= channel_queue_stats_deliver_stats; 152 T =:= queue_stats_deliver_stats; 153 T =:= vhost_stats_deliver_stats; 154 T =:= channel_stats_deliver_stats -> 155 [get, get_no_ack, deliver, deliver_no_ack, redeliver, ack, deliver_get, 156 get_empty]; 157 T when T =:= channel_process_stats; 158 T =:= queue_process_stats -> 159 [reductions]; 160 T when T =:= queue_stats_publish; 161 T =:= queue_exchange_stats_publish -> 162 [publish]; 163 exchange_stats_publish_out -> 164 [publish_out]; 165 exchange_stats_publish_in -> 166 [publish_in]; 167 T when T =:= queue_msg_stats; 168 T =:= vhost_msg_stats -> 169 [messages_ready, messages_unacknowledged, messages]; 170 node_coarse_stats -> 171 [fd_used, sockets_used, mem_used, disk_free, proc_used, gc_num, 172 gc_bytes_reclaimed, context_switches]; 173 node_persister_stats -> 174 [io_read_count, io_read_bytes, io_read_avg_time, io_write_count, 175 io_write_bytes, io_write_avg_time, io_sync_count, io_sync_avg_time, 176 io_seek_count, io_seek_avg_time, io_reopen_count, mnesia_ram_tx_count, 177 mnesia_disk_tx_count, msg_store_read_count, msg_store_write_count, 178 queue_index_journal_write_count, queue_index_write_count, 179 queue_index_read_count, io_file_handle_open_attempt_count, 180 io_file_handle_open_attempt_avg_time]; 181 node_node_coarse_stats -> 182 [send_bytes, recv_bytes]; 183 T when T =:= queue_msg_rates; 184 T =:= vhost_msg_rates -> 185 [disk_reads, disk_writes]; 186 T when T =:= connection_churn_rates -> 187 [connection_created, connection_closed, channel_created, channel_closed, queue_declared, queue_created, queue_deleted] 188 end). 189%%------------------------------------------------------------------------------ 190