MCPcopy Create free account
hub / github.com/Icinga/icinga2 / SendFlappingChange

Method SendFlappingChange

lib/icingadb/icingadb-objects.cpp:2382–2447  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2380}
2381
2382void IcingaDB::SendFlappingChange(const Checkable::Ptr& checkable, double changeTime, double flappingLastChange)
2383{
2384 if (!GetActive()) {
2385 return;
2386 }
2387
2388 Host::Ptr host;
2389 Service::Ptr service;
2390 tie(host, service) = GetHostService(checkable);
2391
2392 RedisConnection::Query xAdd ({
2393 "XADD", "icinga:history:stream:flapping", "*",
2394 "environment_id", m_EnvironmentId,
2395 "host_id", GetObjectIdentifier(host),
2396 "flapping_threshold_low", Convert::ToString(checkable->GetFlappingThresholdLow()),
2397 "flapping_threshold_high", Convert::ToString(checkable->GetFlappingThresholdHigh())
2398 });
2399
2400 if (service) {
2401 xAdd.emplace_back("object_type");
2402 xAdd.emplace_back("service");
2403 xAdd.emplace_back("service_id");
2404 xAdd.emplace_back(GetObjectIdentifier(checkable));
2405 } else {
2406 xAdd.emplace_back("object_type");
2407 xAdd.emplace_back("host");
2408 }
2409
2410 auto endpoint (Endpoint::GetLocalEndpoint());
2411
2412 if (endpoint) {
2413 xAdd.emplace_back("endpoint_id");
2414 xAdd.emplace_back(GetObjectIdentifier(endpoint));
2415 }
2416
2417 double startTime;
2418
2419 if (checkable->IsFlapping()) {
2420 startTime = changeTime;
2421
2422 xAdd.emplace_back("event_type");
2423 xAdd.emplace_back("flapping_start");
2424 xAdd.emplace_back("percent_state_change_start");
2425 xAdd.emplace_back(Convert::ToString(checkable->GetFlappingCurrent()));
2426 } else {
2427 startTime = flappingLastChange;
2428
2429 xAdd.emplace_back("event_type");
2430 xAdd.emplace_back("flapping_end");
2431 xAdd.emplace_back("end_time");
2432 xAdd.emplace_back(Convert::ToString(TimestampToMilliseconds(changeTime)));
2433 xAdd.emplace_back("percent_state_change_end");
2434 xAdd.emplace_back(Convert::ToString(checkable->GetFlappingCurrent()));
2435 }
2436
2437 long long startTs = TimestampToMilliseconds(startTime);
2438
2439 xAdd.emplace_back("start_time");

Callers 1

FlappingChangeHandlerMethod · 0.80

Calls 3

IsFlappingMethod · 0.80
ProduceOneMethod · 0.80
GetNameMethod · 0.45

Tested by

no test coverage detected