Introduce Endpoint#seconds_{reading_messages,awaiting_semaphore,processing_messages} for the API

This commit is contained in:
Alexander A. Klimov 2025-03-21 10:06:44 +01:00 committed by Julian Brost
parent 2b1e1a5a08
commit cf9ca50d19
5 changed files with 50 additions and 1 deletions

View File

@ -137,6 +137,9 @@ void ClusterZoneCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const Che
double messagesReceivedPerSecond = 0;
double bytesSentPerSecond = 0;
double bytesReceivedPerSecond = 0;
double secondsReadingMessages = 0;
double secondsAwaitingSemaphore = 0;
double secondsProcessingMessages = 0;
{
auto endpoints (zone->GetEndpoints());
@ -160,6 +163,9 @@ void ClusterZoneCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const Che
messagesReceivedPerSecond += endpoint->GetMessagesReceivedPerSecond();
bytesSentPerSecond += endpoint->GetBytesSentPerSecond();
bytesReceivedPerSecond += endpoint->GetBytesReceivedPerSecond();
secondsReadingMessages += endpoint->GetSecondsReadingMessages();
secondsAwaitingSemaphore += endpoint->GetSecondsAwaitingSemaphore();
secondsProcessingMessages += endpoint->GetSecondsProcessingMessages();
}
if (!connected && endpoints.size() == 1u && *endpoints.begin() == Endpoint::GetLocalEndpoint()) {
@ -210,7 +216,10 @@ void ClusterZoneCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const Che
new PerfdataValue("sum_messages_sent_per_second", messagesSentPerSecond),
new PerfdataValue("sum_messages_received_per_second", messagesReceivedPerSecond),
new PerfdataValue("sum_bytes_sent_per_second", bytesSentPerSecond),
new PerfdataValue("sum_bytes_received_per_second", bytesReceivedPerSecond)
new PerfdataValue("sum_bytes_received_per_second", bytesReceivedPerSecond),
new PerfdataValue("sum_seconds_reading_messages", secondsReadingMessages, true),
new PerfdataValue("sum_seconds_awaiting_semaphore", secondsAwaitingSemaphore, true),
new PerfdataValue("sum_seconds_processing_messages", secondsProcessingMessages, true)
}));
checkable->ProcessCheckResult(cr);

View File

@ -127,6 +127,9 @@ void IcingaCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckRes
double messagesReceivedPerSecond = 0;
double bytesSentPerSecond = 0;
double bytesReceivedPerSecond = 0;
double secondsReadingMessages = 0;
double secondsAwaitingSemaphore = 0;
double secondsProcessingMessages = 0;
for (const Endpoint::Ptr& endpoint : endpoints)
{
@ -140,6 +143,9 @@ void IcingaCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckRes
messagesReceivedPerSecond += endpoint->GetMessagesReceivedPerSecond();
bytesSentPerSecond += endpoint->GetBytesSentPerSecond();
bytesReceivedPerSecond += endpoint->GetBytesReceivedPerSecond();
secondsReadingMessages += endpoint->GetSecondsReadingMessages();
secondsAwaitingSemaphore += endpoint->GetSecondsAwaitingSemaphore();
secondsProcessingMessages += endpoint->GetSecondsProcessingMessages();
}
perfdata->Add(new PerfdataValue("last_messages_sent", lastMessageSent));
@ -148,6 +154,9 @@ void IcingaCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckRes
perfdata->Add(new PerfdataValue("sum_messages_received_per_second", messagesReceivedPerSecond));
perfdata->Add(new PerfdataValue("sum_bytes_sent_per_second", bytesSentPerSecond));
perfdata->Add(new PerfdataValue("sum_bytes_received_per_second", bytesReceivedPerSecond));
perfdata->Add(new PerfdataValue("sum_seconds_reading_messages", secondsReadingMessages, true));
perfdata->Add(new PerfdataValue("sum_seconds_awaiting_semaphore", secondsAwaitingSemaphore, true));
perfdata->Add(new PerfdataValue("sum_seconds_processing_messages", secondsProcessingMessages, true));
cr->SetPerformanceData(perfdata);
ServiceState state = ServiceOK;

View File

@ -136,3 +136,18 @@ double Endpoint::GetBytesReceivedPerSecond() const
{
return m_BytesReceived.CalculateRate(Utility::GetTime(), 60);
}
double Endpoint::GetSecondsReadingMessages() const
{
return m_InputReadTime;
}
double Endpoint::GetSecondsAwaitingSemaphore() const
{
return m_InputSemaphoreTime;
}
double Endpoint::GetSecondsProcessingMessages() const
{
return m_InputProcessTime;
}

View File

@ -57,6 +57,10 @@ public:
double GetBytesSentPerSecond() const override;
double GetBytesReceivedPerSecond() const override;
double GetSecondsReadingMessages() const override;
double GetSecondsAwaitingSemaphore() const override;
double GetSecondsProcessingMessages() const override;
protected:
void OnAllConfigLoaded() override;

View File

@ -54,6 +54,18 @@ class Endpoint : ConfigObject
[no_user_modify, no_storage] double bytes_received_per_second {
get;
};
[no_user_modify, no_storage] double seconds_reading_messages {
get;
};
[no_user_modify, no_storage] double seconds_awaiting_semaphore {
get;
};
[no_user_modify, no_storage] double seconds_processing_messages {
get;
};
};
}