mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
parent
86ef8aae8c
commit
d53a121beb
@ -60,6 +60,8 @@ void ServiceDbObject::StaticInitialize(void)
|
|||||||
Service::OnFlappingChanged.connect(bind(&ServiceDbObject::AddFlappingLogHistory, _1, _2));
|
Service::OnFlappingChanged.connect(bind(&ServiceDbObject::AddFlappingLogHistory, _1, _2));
|
||||||
Service::OnDowntimeTriggered.connect(boost::bind(&ServiceDbObject::AddTriggerDowntimeLogHistory, _1, _2));
|
Service::OnDowntimeTriggered.connect(boost::bind(&ServiceDbObject::AddTriggerDowntimeLogHistory, _1, _2));
|
||||||
Service::OnDowntimeRemoved.connect(boost::bind(&ServiceDbObject::AddRemoveDowntimeLogHistory, _1, _2));
|
Service::OnDowntimeRemoved.connect(boost::bind(&ServiceDbObject::AddRemoveDowntimeLogHistory, _1, _2));
|
||||||
|
|
||||||
|
Service::OnFlappingChanged.connect(bind(&ServiceDbObject::AddFlappingHistory, _1, _2));
|
||||||
}
|
}
|
||||||
|
|
||||||
ServiceDbObject::ServiceDbObject(const DbType::Ptr& type, const String& name1, const String& name2)
|
ServiceDbObject::ServiceDbObject(const DbType::Ptr& type, const String& name1, const String& name2)
|
||||||
@ -310,6 +312,7 @@ void ServiceDbObject::OnStatusUpdate(void)
|
|||||||
dbobj->SendStatusUpdate();
|
dbobj->SendStatusUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* comments */
|
||||||
void ServiceDbObject::AddComments(const Service::Ptr& service)
|
void ServiceDbObject::AddComments(const Service::Ptr& service)
|
||||||
{
|
{
|
||||||
/* dump all comments */
|
/* dump all comments */
|
||||||
@ -479,6 +482,7 @@ void ServiceDbObject::RemoveComment(const Service::Ptr& service, const Dictionar
|
|||||||
OnQuery(query2);
|
OnQuery(query2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* downtimes */
|
||||||
void ServiceDbObject::AddDowntimes(const Service::Ptr& service)
|
void ServiceDbObject::AddDowntimes(const Service::Ptr& service)
|
||||||
{
|
{
|
||||||
/* dump all downtimes */
|
/* dump all downtimes */
|
||||||
@ -716,6 +720,7 @@ void ServiceDbObject::TriggerDowntime(const Service::Ptr& service, const Diction
|
|||||||
OnQuery(query3);
|
OnQuery(query3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* acknowledgements */
|
||||||
void ServiceDbObject::AddAcknowledgementHistory(const Service::Ptr& service, const String& author, const String& comment,
|
void ServiceDbObject::AddAcknowledgementHistory(const Service::Ptr& service, const String& author, const String& comment,
|
||||||
AcknowledgementType type, double expiry)
|
AcknowledgementType type, double expiry)
|
||||||
{
|
{
|
||||||
@ -758,6 +763,7 @@ void ServiceDbObject::AddAcknowledgementHistory(const Service::Ptr& service, con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* notifications */
|
||||||
void ServiceDbObject::AddNotificationHistory(const Service::Ptr& service, const std::set<User::Ptr>& users, NotificationType type,
|
void ServiceDbObject::AddNotificationHistory(const Service::Ptr& service, const std::set<User::Ptr>& users, NotificationType type,
|
||||||
const Dictionary::Ptr& cr, const String& author, const String& text)
|
const Dictionary::Ptr& cr, const String& author, const String& text)
|
||||||
{
|
{
|
||||||
@ -811,6 +817,7 @@ void ServiceDbObject::AddNotificationHistory(const Service::Ptr& service, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* statehistory */
|
||||||
void ServiceDbObject::AddStateChangeHistory(const Service::Ptr& service, const Dictionary::Ptr& cr, StateType type)
|
void ServiceDbObject::AddStateChangeHistory(const Service::Ptr& service, const Dictionary::Ptr& cr, StateType type)
|
||||||
{
|
{
|
||||||
Host::Ptr host = service->GetHost();
|
Host::Ptr host = service->GetHost();
|
||||||
@ -864,6 +871,7 @@ void ServiceDbObject::AddStateChangeHistory(const Service::Ptr& service, const D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* logentries */
|
||||||
void ServiceDbObject::AddCheckResultLogHistory(const Service::Ptr& service, const Dictionary::Ptr &cr)
|
void ServiceDbObject::AddCheckResultLogHistory(const Service::Ptr& service, const Dictionary::Ptr &cr)
|
||||||
{
|
{
|
||||||
Host::Ptr host = service->GetHost();
|
Host::Ptr host = service->GetHost();
|
||||||
@ -1182,3 +1190,62 @@ void ServiceDbObject::AddLogHistory(const Service::Ptr& service, String buffer,
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* flappinghistory */
|
||||||
|
void ServiceDbObject::AddFlappingHistory(const Service::Ptr& service, FlappingState flapping_state)
|
||||||
|
{
|
||||||
|
Host::Ptr host = service->GetHost();
|
||||||
|
|
||||||
|
if (!host)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Log(LogDebug, "db_ido", "add flapping history for '" + service->GetName() + "'");
|
||||||
|
|
||||||
|
double now = Utility::GetTime();
|
||||||
|
unsigned long event_time = static_cast<long>(now);
|
||||||
|
unsigned long event_time_usec = (now - event_time) * 1000 * 1000;
|
||||||
|
|
||||||
|
DbQuery query1;
|
||||||
|
query1.Table = "flappinghistory";
|
||||||
|
query1.Type = DbQueryInsert;
|
||||||
|
|
||||||
|
Dictionary::Ptr fields1 = boost::make_shared<Dictionary>();
|
||||||
|
|
||||||
|
fields1->Set("event_time", DbValue::FromTimestamp(event_time));
|
||||||
|
fields1->Set("event_time_usec", event_time_usec);
|
||||||
|
|
||||||
|
switch (flapping_state) {
|
||||||
|
case FlappingStarted:
|
||||||
|
fields1->Set("event_type", 1000);
|
||||||
|
break;
|
||||||
|
case FlappingStopped:
|
||||||
|
fields1->Set("event_type", 1001);
|
||||||
|
fields1->Set("reason_type", 1);
|
||||||
|
break;
|
||||||
|
case FlappingDisabled:
|
||||||
|
fields1->Set("event_type", 1001);
|
||||||
|
fields1->Set("reason_type", 2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Log(LogDebug, "db_ido", "Unhandled flapping state: " + Convert::ToString(flapping_state));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fields1->Set("flapping_type", 1); /* service */
|
||||||
|
fields1->Set("object_id", service);
|
||||||
|
fields1->Set("percent_state_change", service->GetFlappingCurrent());
|
||||||
|
fields1->Set("low_threshold", service->GetFlappingThreshold());
|
||||||
|
fields1->Set("high_threshold", service->GetFlappingThreshold());
|
||||||
|
|
||||||
|
fields1->Set("instance_id", 0); /* DbConnection class fills in real ID */
|
||||||
|
|
||||||
|
query1.Fields = fields1;
|
||||||
|
OnQuery(query1);
|
||||||
|
|
||||||
|
if (host->GetCheckService() == service) {
|
||||||
|
fields1->Set("object_id", host);
|
||||||
|
fields1->Set("flapping_type", 0); /* host */
|
||||||
|
query1.Fields = fields1;
|
||||||
|
OnQuery(query1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -107,6 +107,8 @@ private:
|
|||||||
static void AddRemoveDowntimeLogHistory(const Service::Ptr& service, const Dictionary::Ptr& downtime);
|
static void AddRemoveDowntimeLogHistory(const Service::Ptr& service, const Dictionary::Ptr& downtime);
|
||||||
static void AddNotificationSentLogHistory(const Service::Ptr& service, const User::Ptr& user, NotificationType const& notification_type, Dictionary::Ptr const& cr, const String& author, const String& comment_text);
|
static void AddNotificationSentLogHistory(const Service::Ptr& service, const User::Ptr& user, NotificationType const& notification_type, Dictionary::Ptr const& cr, const String& author, const String& comment_text);
|
||||||
static void AddFlappingLogHistory(const Service::Ptr& service, FlappingState flapping_state);
|
static void AddFlappingLogHistory(const Service::Ptr& service, FlappingState flapping_state);
|
||||||
|
|
||||||
|
static void AddFlappingHistory(const Service::Ptr& service, FlappingState flapping_state);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user