mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-25 14:44:32 +02:00
RedisWriter: populate icinga:history:stream:*:flapping
This commit is contained in:
parent
81873248e1
commit
fb6d31fcde
@ -104,6 +104,8 @@ void RedisWriter::ConfigStaticInitialize()
|
|||||||
|
|
||||||
Comment::OnCommentAdded.connect(&RedisWriter::CommentAddedHandler);
|
Comment::OnCommentAdded.connect(&RedisWriter::CommentAddedHandler);
|
||||||
Comment::OnCommentRemoved.connect(&RedisWriter::CommentRemovedHandler);
|
Comment::OnCommentRemoved.connect(&RedisWriter::CommentRemovedHandler);
|
||||||
|
|
||||||
|
Checkable::OnFlappingChanged.connect(&RedisWriter::FlappingChangedHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::pair<String, String> SplitOutput(String output)
|
static std::pair<String, String> SplitOutput(String output)
|
||||||
@ -1337,6 +1339,25 @@ void RedisWriter::SendRemovedComment(const Comment::Ptr& comment)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RedisWriter::SendFlappingChanged(const Checkable::Ptr& checkable, const Value& value)
|
||||||
|
{
|
||||||
|
if (!m_Rcon || !m_Rcon->IsConnected())
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto service (dynamic_pointer_cast<Service>(checkable));
|
||||||
|
|
||||||
|
m_Rcon->FireAndForgetQuery({
|
||||||
|
"XADD", service ? "icinga:history:stream:service:flapping" : "icinga:history:stream:host:flapping", "*",
|
||||||
|
"id", Utility::NewUniqueID(),
|
||||||
|
"environment_id", SHA1(GetEnvironment()),
|
||||||
|
service ? "service_id" : "host_id", GetObjectIdentifier(checkable),
|
||||||
|
value.ToBool() ? "start_time" : "end_time", Convert::ToString(Utility::GetTime()),
|
||||||
|
"percent_state_change", Convert::ToString(checkable->GetFlappingCurrent()),
|
||||||
|
"flapping_threshold_low", Convert::ToString(checkable->GetFlappingThresholdLow()),
|
||||||
|
"flapping_threshold_high", Convert::ToString(checkable->GetFlappingThresholdHigh())
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Dictionary::Ptr RedisWriter::SerializeState(const Checkable::Ptr& checkable)
|
Dictionary::Ptr RedisWriter::SerializeState(const Checkable::Ptr& checkable)
|
||||||
{
|
{
|
||||||
Dictionary::Ptr attrs = new Dictionary();
|
Dictionary::Ptr attrs = new Dictionary();
|
||||||
@ -1561,3 +1582,10 @@ void RedisWriter::CommentRemovedHandler(const Comment::Ptr& comment)
|
|||||||
rw->m_WorkQueue.Enqueue([rw, comment]() { rw->SendRemovedComment(comment); });
|
rw->m_WorkQueue.Enqueue([rw, comment]() { rw->SendRemovedComment(comment); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RedisWriter::FlappingChangedHandler(const Checkable::Ptr& checkable, const Value& value)
|
||||||
|
{
|
||||||
|
for (auto& rw : ConfigType::GetObjectsByType<RedisWriter>()) {
|
||||||
|
rw->m_WorkQueue.Enqueue([rw, checkable, value]() { rw->SendFlappingChanged(checkable, value); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -91,6 +91,7 @@ private:
|
|||||||
void SendRemovedDowntime(const Downtime::Ptr& downtime);
|
void SendRemovedDowntime(const Downtime::Ptr& downtime);
|
||||||
void SendAddedComment(const Comment::Ptr& comment);
|
void SendAddedComment(const Comment::Ptr& comment);
|
||||||
void SendRemovedComment(const Comment::Ptr& comment);
|
void SendRemovedComment(const Comment::Ptr& comment);
|
||||||
|
void SendFlappingChanged(const Checkable::Ptr& checkable, const Value& value);
|
||||||
|
|
||||||
std::vector<String> UpdateObjectAttrs(const ConfigObject::Ptr& object, int fieldType, const String& typeNameOverride);
|
std::vector<String> UpdateObjectAttrs(const ConfigObject::Ptr& object, int fieldType, const String& typeNameOverride);
|
||||||
Dictionary::Ptr SerializeState(const Checkable::Ptr& checkable);
|
Dictionary::Ptr SerializeState(const Checkable::Ptr& checkable);
|
||||||
@ -130,6 +131,7 @@ private:
|
|||||||
|
|
||||||
static void CommentAddedHandler(const Comment::Ptr& comment);
|
static void CommentAddedHandler(const Comment::Ptr& comment);
|
||||||
static void CommentRemovedHandler(const Comment::Ptr& comment);
|
static void CommentRemovedHandler(const Comment::Ptr& comment);
|
||||||
|
static void FlappingChangedHandler(const Checkable::Ptr& checkable, const Value& value);
|
||||||
|
|
||||||
void AssertOnWorkQueue();
|
void AssertOnWorkQueue();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user