From f470c528196948540e15eb0e7a3b1697e8ca0b1e Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Fri, 5 Nov 2021 19:00:02 +0100 Subject: [PATCH 1/2] Icinga DB: Add `downtime.duration` & `scheduled_duration` to Redis --- lib/icingadb/icingadb-objects.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/icingadb/icingadb-objects.cpp b/lib/icingadb/icingadb-objects.cpp index f1f6b5f09..fa0b85b51 100644 --- a/lib/icingadb/icingadb-objects.cpp +++ b/lib/icingadb/icingadb-objects.cpp @@ -1330,6 +1330,7 @@ bool IcingaDB::PrepareObject(const ConfigObject::Ptr& object, Dictionary::Ptr& a attributes->Set("entry_time", TimestampToMilliseconds(downtime->GetEntryTime())); attributes->Set("scheduled_start_time", TimestampToMilliseconds(downtime->GetStartTime())); attributes->Set("scheduled_end_time", TimestampToMilliseconds(downtime->GetEndTime())); + attributes->Set("scheduled_duration", TimestampToMilliseconds(downtime->GetEndTime() - downtime->GetStartTime())); attributes->Set("flexible_duration", TimestampToMilliseconds(downtime->GetDuration())); attributes->Set("is_flexible", !downtime->GetFixed()); attributes->Set("is_in_effect", downtime->IsInEffect()); @@ -1338,6 +1339,12 @@ bool IcingaDB::PrepareObject(const ConfigObject::Ptr& object, Dictionary::Ptr& a attributes->Set("end_time", TimestampToMilliseconds(downtime->GetFixed() ? downtime->GetEndTime() : (downtime->GetTriggerTime() + downtime->GetDuration()))); } + auto duration = downtime->GetDuration(); + if (downtime->GetFixed()) { + duration = downtime->GetEndTime() - downtime->GetStartTime(); + } + attributes->Set("duration", TimestampToMilliseconds(duration)); + Host::Ptr host; Service::Ptr service; tie(host, service) = GetHostService(downtime->GetCheckable()); @@ -1682,7 +1689,7 @@ void IcingaDB::SendStartedDowntime(const Downtime::Ptr& downtime) "author", Utility::ValidateUTF8(downtime->GetAuthor()), "comment", Utility::ValidateUTF8(downtime->GetComment()), "is_flexible", Convert::ToString((unsigned short)!downtime->GetFixed()), - "flexible_duration", Convert::ToString(downtime->GetDuration()), + "flexible_duration", Convert::ToString(TimestampToMilliseconds(downtime->GetDuration())), "scheduled_start_time", Convert::ToString(TimestampToMilliseconds(downtime->GetStartTime())), "scheduled_end_time", Convert::ToString(TimestampToMilliseconds(downtime->GetEndTime())), "has_been_cancelled", Convert::ToString((unsigned short)downtime->GetWasCancelled()), @@ -1761,7 +1768,7 @@ void IcingaDB::SendRemovedDowntime(const Downtime::Ptr& downtime) "cancelled_by", Utility::ValidateUTF8(downtime->GetRemovedBy()), "comment", Utility::ValidateUTF8(downtime->GetComment()), "is_flexible", Convert::ToString((unsigned short)!downtime->GetFixed()), - "flexible_duration", Convert::ToString(downtime->GetDuration()), + "flexible_duration", Convert::ToString(TimestampToMilliseconds(downtime->GetDuration())), "scheduled_start_time", Convert::ToString(TimestampToMilliseconds(downtime->GetStartTime())), "scheduled_end_time", Convert::ToString(TimestampToMilliseconds(downtime->GetEndTime())), "has_been_cancelled", Convert::ToString((unsigned short)downtime->GetWasCancelled()), From ca2f54352fa0782cc528bc2f6e9ffd570928500a Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Fri, 5 Nov 2021 19:00:41 +0100 Subject: [PATCH 2/2] Icinga DB: Add `service_state.host_id` to Redis --- lib/icingadb/icingadb-objects.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/icingadb/icingadb-objects.cpp b/lib/icingadb/icingadb-objects.cpp index fa0b85b51..d3e493236 100644 --- a/lib/icingadb/icingadb-objects.cpp +++ b/lib/icingadb/icingadb-objects.cpp @@ -2170,6 +2170,7 @@ Dictionary::Ptr IcingaDB::SerializeState(const Checkable::Ptr& checkable) attrs->Set("state", state); attrs->Set("hard_state", service->HasBeenChecked() ? service->GetLastHardState() : 99); attrs->Set("severity", service->GetSeverity()); + attrs->Set("host_id", GetObjectIdentifier(host)); } else { attrs->Set("host_id", id); auto state = host->HasBeenChecked() ? host->GetState() : 99;