JsonRpcConnection: re-add num_json_rpc_work_queue_item_rate

This commit is contained in:
Alexander A. Klimov 2019-02-20 14:24:09 +01:00
parent a54bd9d5c4
commit a451327b81
3 changed files with 14 additions and 0 deletions

View File

@ -1466,6 +1466,7 @@ std::pair<Dictionary::Ptr, Dictionary::Ptr> ApiListener::GetStatus()
size_t httpClients = GetHttpClients().size();
size_t syncQueueItems = m_SyncQueue.GetLength();
size_t relayQueueItems = m_RelayQueue.GetLength();
double workQueueItemRate = JsonRpcConnection::GetWorkQueueRate();
double syncQueueItemRate = m_SyncQueue.GetTaskCount(60) / 60.0;
double relayQueueItemRate = m_RelayQueue.GetTaskCount(60) / 60.0;
@ -1483,6 +1484,7 @@ std::pair<Dictionary::Ptr, Dictionary::Ptr> ApiListener::GetStatus()
{ "anonymous_clients", jsonRpcAnonymousClients },
{ "sync_queue_items", syncQueueItems },
{ "relay_queue_items", relayQueueItems },
{ "work_queue_item_rate", workQueueItemRate },
{ "sync_queue_item_rate", syncQueueItemRate },
{ "relay_queue_item_rate", relayQueueItemRate }
}) },
@ -1502,6 +1504,7 @@ std::pair<Dictionary::Ptr, Dictionary::Ptr> ApiListener::GetStatus()
perfdata->Set("num_json_rpc_sync_queue_items", syncQueueItems);
perfdata->Set("num_json_rpc_relay_queue_items", relayQueueItems);
perfdata->Set("num_json_rpc_work_queue_item_rate", workQueueItemRate);
perfdata->Set("num_json_rpc_sync_queue_item_rate", syncQueueItemRate);
perfdata->Set("num_json_rpc_relay_queue_item_rate", relayQueueItemRate);

View File

@ -25,6 +25,8 @@ using namespace icinga;
static Value SetLogPositionHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params);
REGISTER_APIFUNCTION(SetLogPosition, log, &SetLogPositionHandler);
static RingBuffer l_TaskStats (15 * 60);
JsonRpcConnection::JsonRpcConnection(const String& identity, bool authenticated,
const std::shared_ptr<AsioTlsStream>& stream, ConnectionRole role)
: m_Identity(identity), m_Authenticated(authenticated), m_Stream(stream),
@ -84,6 +86,8 @@ void JsonRpcConnection::HandleIncomingMessages(boost::asio::yield_context yc)
break;
}
l_TaskStats.InsertValue(Utility::GetTime(), 1);
}
}
@ -319,3 +323,8 @@ void JsonRpcConnection::CheckLiveness(boost::asio::yield_context yc)
}
}
}
double JsonRpcConnection::GetWorkQueueRate()
{
return l_TaskStats.UpdateAndGetValues(Utility::GetTime(), 60) / 60.0;
}

View File

@ -58,6 +58,8 @@ public:
static Value HeartbeatAPIHandler(const intrusive_ptr<MessageOrigin>& origin, const Dictionary::Ptr& params);
static double GetWorkQueueRate();
static void SendCertificateRequest(const JsonRpcConnection::Ptr& aclient, const intrusive_ptr<MessageOrigin>& origin, const String& path);
private: