10 #include <boost/foreach.hpp>
12 #include <sandesh/sandesh_types.h>
13 #include <sandesh/sandesh.h>
14 #include <sandesh/sandesh_statistics.h>
22 SandeshMessageStats *detail_agg_stats)
const {
28 SandeshMessageStats *detail_agg_stats)
const {
32 BOOST_FOREACH(DetailStatsMap::const_iterator::value_type it,
34 v_detail_type_stats->push_back(*it.second);
41 SandeshMessageBasicStats *basic_stats) {
42 basic_stats->set_messages_sent(detail_stats.get_messages_sent());
43 basic_stats->set_bytes_sent(detail_stats.get_bytes_sent());
44 basic_stats->set_messages_received(detail_stats.get_messages_received());
45 basic_stats->set_bytes_received(detail_stats.get_bytes_received());
46 basic_stats->set_messages_sent_dropped(
47 detail_stats.get_messages_sent_dropped());
48 basic_stats->set_messages_received_dropped(
49 detail_stats.get_messages_received_dropped());
53 SandeshMessageTypeBasicStats *basic_stats) {
54 basic_stats->message_type = detail_stats.message_type;
59 SandeshMessageBasicStats *basic_agg_stats)
const {
63 BOOST_FOREACH(DetailStatsMap::const_iterator::value_type it,
65 const SandeshMessageTypeStats *detail_stats(it.second);
66 SandeshMessageTypeBasicStats basic_stats;
68 v_basic_type_stats->push_back(basic_stats);
77 switch (send_dreason) {
78 case SandeshTxDropReason::ValidationFailed:
79 smstats->set_messages_sent_dropped_validation_failed(
80 smstats->get_messages_sent_dropped_validation_failed() + 1);
81 smstats->set_bytes_sent_dropped_validation_failed(
82 smstats->get_bytes_sent_dropped_validation_failed() + bytes);
84 case SandeshTxDropReason::RatelimitDrop:
85 smstats->set_messages_sent_dropped_rate_limited(
86 smstats->get_messages_sent_dropped_rate_limited() + 1);
87 smstats->set_bytes_sent_dropped_rate_limited(
88 smstats->get_bytes_sent_dropped_rate_limited() + bytes);
90 case SandeshTxDropReason::QueueLevel:
91 smstats->set_messages_sent_dropped_queue_level(
92 smstats->get_messages_sent_dropped_queue_level() + 1);
93 smstats->set_bytes_sent_dropped_queue_level(
94 smstats->get_bytes_sent_dropped_queue_level() + bytes);
96 case SandeshTxDropReason::NoClient:
97 smstats->set_messages_sent_dropped_no_client(
98 smstats->get_messages_sent_dropped_no_client() + 1);
99 smstats->set_bytes_sent_dropped_no_client(
100 smstats->get_bytes_sent_dropped_no_client() + bytes);
102 case SandeshTxDropReason::NoSession:
103 smstats->set_messages_sent_dropped_no_session(
104 smstats->get_messages_sent_dropped_no_session() + 1);
105 smstats->set_bytes_sent_dropped_no_session(
106 smstats->get_bytes_sent_dropped_no_session() + bytes);
108 case SandeshTxDropReason::NoQueue:
109 smstats->set_messages_sent_dropped_no_queue(
110 smstats->get_messages_sent_dropped_no_queue() + 1);
111 smstats->set_bytes_sent_dropped_no_queue(
112 smstats->get_bytes_sent_dropped_no_queue() + bytes);
114 case SandeshTxDropReason::ClientSendFailed:
115 smstats->set_messages_sent_dropped_client_send_failed(
116 smstats->get_messages_sent_dropped_client_send_failed() + 1);
117 smstats->set_bytes_sent_dropped_client_send_failed(
118 smstats->get_bytes_sent_dropped_client_send_failed() + bytes);
120 case SandeshTxDropReason::WrongClientSMState:
121 smstats->set_messages_sent_dropped_wrong_client_sm_state(
122 smstats->get_messages_sent_dropped_wrong_client_sm_state() + 1);
123 smstats->set_bytes_sent_dropped_wrong_client_sm_state(
124 smstats->get_bytes_sent_dropped_wrong_client_sm_state() +
127 case SandeshTxDropReason::WriteFailed:
128 smstats->set_messages_sent_dropped_write_failed(
129 smstats->get_messages_sent_dropped_write_failed() + 1);
130 smstats->set_bytes_sent_dropped_write_failed(
131 smstats->get_bytes_sent_dropped_write_failed() + bytes);
133 case SandeshTxDropReason::HeaderWriteFailed:
134 smstats->set_messages_sent_dropped_header_write_failed(
135 smstats->get_messages_sent_dropped_header_write_failed() + 1);
136 smstats->set_bytes_sent_dropped_header_write_failed(
137 smstats->get_bytes_sent_dropped_header_write_failed() + bytes);
139 case SandeshTxDropReason::SessionNotConnected:
140 smstats->set_messages_sent_dropped_session_not_connected(
141 smstats->get_messages_sent_dropped_session_not_connected() + 1);
142 smstats->set_bytes_sent_dropped_session_not_connected(
143 smstats->get_bytes_sent_dropped_session_not_connected() +
146 case SandeshTxDropReason::SendingDisabled:
147 smstats->set_messages_sent_dropped_sending_disabled(
148 smstats->get_messages_sent_dropped_sending_disabled() + 1);
149 smstats->set_bytes_sent_dropped_sending_disabled(
150 smstats->get_bytes_sent_dropped_sending_disabled() +
153 case SandeshTxDropReason::SendingToSyslog:
154 smstats->set_messages_sent_dropped_sending_to_syslog(
155 smstats->get_messages_sent_dropped_sending_to_syslog() + 1);
156 smstats->set_bytes_sent_dropped_sending_to_syslog(
157 smstats->get_bytes_sent_dropped_sending_to_syslog() +
163 smstats->set_messages_sent_dropped(
164 smstats->get_messages_sent_dropped() + 1);
165 smstats->set_bytes_sent_dropped(
166 smstats->get_bytes_sent_dropped() + bytes);
168 switch (recv_dreason) {
169 case SandeshRxDropReason::QueueLevel:
170 smstats->set_messages_received_dropped_queue_level(
171 smstats->get_messages_received_dropped_queue_level() + 1);
172 smstats->set_bytes_received_dropped_queue_level(
173 smstats->get_bytes_received_dropped_queue_level() + bytes);
175 case SandeshRxDropReason::NoQueue:
176 smstats->set_messages_received_dropped_no_queue(
177 smstats->get_messages_received_dropped_no_queue() + 1);
178 smstats->set_bytes_received_dropped_no_queue(
179 smstats->get_bytes_received_dropped_no_queue() + bytes);
181 case SandeshRxDropReason::DecodingFailed:
182 smstats->set_messages_received_dropped_decoding_failed(
183 smstats->get_messages_received_dropped_decoding_failed() + 1);
184 smstats->set_bytes_received_dropped_decoding_failed(
185 smstats->get_bytes_received_dropped_decoding_failed() + bytes);
187 case SandeshRxDropReason::ControlMsgFailed:
188 smstats->set_messages_received_dropped_control_msg_failed(
189 smstats->get_messages_received_dropped_control_msg_failed() +
191 smstats->set_bytes_received_dropped_control_msg_failed(
192 smstats->get_bytes_received_dropped_control_msg_failed() +
195 case SandeshRxDropReason::CreateFailed:
196 smstats->set_messages_received_dropped_create_failed(
197 smstats->get_messages_received_dropped_create_failed() + 1);
198 smstats->set_bytes_received_dropped_create_failed(
199 smstats->get_bytes_received_dropped_create_failed() + bytes);
204 smstats->set_messages_received_dropped(
205 smstats->get_messages_received_dropped() + 1);
206 smstats->set_bytes_received_dropped(
207 smstats->get_bytes_received_dropped() + bytes);
214 SandeshTxDropReason::NoDrop, SandeshRxDropReason::NoDrop);
220 SandeshRxDropReason::NoDrop);
226 SandeshTxDropReason::NoDrop, SandeshRxDropReason::NoDrop);
232 SandeshTxDropReason::NoDrop, dreason);
236 uint64_t bytes,
bool is_tx,
bool dropped,
245 std::string name(msg_name);
246 SandeshMessageTypeStats *n_detail_mtstats(
new SandeshMessageTypeStats);
247 n_detail_mtstats->message_type = name;
250 SandeshMessageTypeStats *detail_mtstats = it->second;
253 bytes, send_dreason, recv_dreason);
255 bytes, send_dreason, recv_dreason);
257 SandeshMessageStats *d_smstats(&detail_mtstats->stats);
259 d_smstats->set_messages_sent(d_smstats->get_messages_sent() + 1);
260 d_smstats->set_bytes_sent(d_smstats->get_bytes_sent() + bytes);
266 d_smstats->set_messages_received(
267 d_smstats->get_messages_received() + 1);
268 d_smstats->set_bytes_received(
269 d_smstats->get_bytes_received() + bytes);
285 std::vector<SandeshStateMachineEvStats> *ev_stats)
const {
289 BOOST_FOREACH(EventStatsMap::const_iterator::value_type it,
291 ev_stats->push_back(*it.second);
301 EventStatsMap::iterator it =
event_stats_.find(event_name);
303 it = (
event_stats_.insert(event_name,
new SandeshStateMachineEvStats)).first;
305 SandeshStateMachineEvStats *es = it->second;
306 es->set_event(event_name);
309 es->set_enqueue_fails(es->get_enqueue_fails() + 1);
312 es->set_enqueues(es->get_enqueues() + 1);
317 es->set_dequeue_fails(es->get_dequeue_fails() + 1);
320 es->set_dequeues(es->get_dequeues() + 1);
static void PopulateBasicTypeStats(const SandeshMessageTypeStats &detail_stats, SandeshMessageTypeBasicStats *basic_stats)
void UpdateSend(const std::string &msg_name, uint64_t bytes)
void UpdateInternal(const std::string &msg_name, uint64_t bytes, bool is_tx, bool dropped, SandeshTxDropReason::type send_dreason, SandeshRxDropReason::type recv_dreason)
void UpdateSendFailed(const std::string &msg_name, uint64_t bytes, SandeshTxDropReason::type dreason)
static void UpdateDetailStatsDrops(SandeshMessageStats *smstats, bool sent, uint64_t bytes, SandeshTxDropReason::type send_dreason, SandeshRxDropReason::type recv_dreason)
boost::ptr_map< std::string, SandeshMessageTypeStats > DetailStatsMap
std::vector< SandeshMessageTypeBasicStats > BasicStatsList
std::vector< SandeshMessageTypeStats > DetailStatsList
void UpdateRecv(const std::string &msg_name, uint64_t bytes)
SandeshStateMachineEvStats agg_stats_
static void PopulateBasicStats(const SandeshMessageStats &detail_stats, SandeshMessageBasicStats *basic_stats)
EventStatsMap event_stats_
void UpdateRecvFailed(const std::string &msg_name, uint64_t bytes, SandeshRxDropReason::type dreason)
SandeshMessageStats detail_agg_stats_
void Get(DetailStatsList *v_detail_type_stats, SandeshMessageStats *detail_agg_stats) const
DetailStatsMap detail_type_stats_map_
void Get(std::vector< SandeshStateMachineEvStats > *ev_stats) const
void Update(std::string &event_name, bool enqueue, bool fail)