Correct current_concurrent_checks to actually running checks

refs #7416
This commit is contained in:
Alexander A. Klimov 2019-08-14 17:43:06 +02:00 committed by Michael Friedrich
parent c2e1d023e2
commit efc7f2cf8d
5 changed files with 12 additions and 3 deletions

View File

@ -23,6 +23,8 @@ boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, st
boost::signals2::signal<void (const Checkable::Ptr&, NotificationType, const CheckResult::Ptr&, const String&, const String&, const MessageOrigin::Ptr&)> Checkable::OnNotificationsRequested; boost::signals2::signal<void (const Checkable::Ptr&, NotificationType, const CheckResult::Ptr&, const String&, const String&, const MessageOrigin::Ptr&)> Checkable::OnNotificationsRequested;
boost::signals2::signal<void (const Checkable::Ptr&)> Checkable::OnNextCheckUpdated; boost::signals2::signal<void (const Checkable::Ptr&)> Checkable::OnNextCheckUpdated;
Atomic<uint_fast64_t> Checkable::CurrentConcurrentChecks (0);
boost::mutex Checkable::m_StatsMutex; boost::mutex Checkable::m_StatsMutex;
int Checkable::m_PendingChecks = 0; int Checkable::m_PendingChecks = 0;
boost::condition_variable Checkable::m_PendingChecksCV; boost::condition_variable Checkable::m_PendingChecksCV;

View File

@ -3,6 +3,7 @@
#ifndef CHECKABLE_H #ifndef CHECKABLE_H
#define CHECKABLE_H #define CHECKABLE_H
#include "base/atomic.hpp"
#include "base/timer.hpp" #include "base/timer.hpp"
#include "icinga/i2-icinga.hpp" #include "icinga/i2-icinga.hpp"
#include "icinga/checkable-ti.hpp" #include "icinga/checkable-ti.hpp"
@ -12,6 +13,7 @@
#include "icinga/downtime.hpp" #include "icinga/downtime.hpp"
#include "remote/endpoint.hpp" #include "remote/endpoint.hpp"
#include "remote/messageorigin.hpp" #include "remote/messageorigin.hpp"
#include <cstdint>
namespace icinga namespace icinga
{ {
@ -131,6 +133,8 @@ public:
static boost::signals2::signal<void (const Checkable::Ptr&)> OnNextCheckUpdated; static boost::signals2::signal<void (const Checkable::Ptr&)> OnNextCheckUpdated;
static boost::signals2::signal<void (const Checkable::Ptr&)> OnEventCommandExecuted; static boost::signals2::signal<void (const Checkable::Ptr&)> OnEventCommandExecuted;
static Atomic<uint_fast64_t> CurrentConcurrentChecks;
/* Downtimes */ /* Downtimes */
int GetDowntimeDepth() const final; int GetDowntimeDepth() const final;

View File

@ -292,8 +292,8 @@ void CIB::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata) {
// Checker related stats // Checker related stats
status->Set("remote_check_queue", ClusterEvents::GetCheckRequestQueueSize()); status->Set("remote_check_queue", ClusterEvents::GetCheckRequestQueueSize());
status->Set("current_concurrent_checks", Checkable::GetPendingChecks());
status->Set("current_pending_callbacks", Application::GetTP().GetPending()); status->Set("current_pending_callbacks", Application::GetTP().GetPending());
status->Set("current_concurrent_checks", Checkable::CurrentConcurrentChecks.load());
CheckableCheckStatistics scs = CalculateServiceCheckStats(); CheckableCheckStatistics scs = CalculateServiceCheckStats();

View File

@ -76,7 +76,7 @@ void IcingaCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckRes
perfdata->Add(new PerfdataValue("passive_service_checks_15min", CIB::GetPassiveServiceChecksStatistics(60 * 15))); perfdata->Add(new PerfdataValue("passive_service_checks_15min", CIB::GetPassiveServiceChecksStatistics(60 * 15)));
perfdata->Add(new PerfdataValue("current_pending_callbacks", Application::GetTP().GetPending())); perfdata->Add(new PerfdataValue("current_pending_callbacks", Application::GetTP().GetPending()));
perfdata->Add(new PerfdataValue("current_concurrent_checks", Checkable::GetPendingChecks())); perfdata->Add(new PerfdataValue("current_concurrent_checks", Checkable::CurrentConcurrentChecks.load()));
perfdata->Add(new PerfdataValue("remote_check_queue", ClusterEvents::GetCheckRequestQueueSize())); perfdata->Add(new PerfdataValue("remote_check_queue", ClusterEvents::GetCheckRequestQueueSize()));
CheckableCheckStatistics scs = CIB::CalculateServiceCheckStats(); CheckableCheckStatistics scs = CIB::CalculateServiceCheckStats();

View File

@ -44,12 +44,15 @@ void PluginCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckRes
resolvers, resolvedMacros, useResolvedMacros, timeout, resolvers, resolvedMacros, useResolvedMacros, timeout,
std::bind(&PluginCheckTask::ProcessFinishedHandler, checkable, cr, _1, _2)); std::bind(&PluginCheckTask::ProcessFinishedHandler, checkable, cr, _1, _2));
if (!resolvedMacros || useResolvedMacros) if (!resolvedMacros || useResolvedMacros) {
Checkable::CurrentConcurrentChecks.fetch_add(1);
Checkable::IncreasePendingChecks(); Checkable::IncreasePendingChecks();
}
} }
void PluginCheckTask::ProcessFinishedHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr, const Value& commandLine, const ProcessResult& pr) void PluginCheckTask::ProcessFinishedHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr, const Value& commandLine, const ProcessResult& pr)
{ {
Checkable::CurrentConcurrentChecks.fetch_sub(1);
Checkable::DecreasePendingChecks(); Checkable::DecreasePendingChecks();
if (pr.ExitStatus > 3) { if (pr.ExitStatus > 3) {