mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-23 21:55:03 +02:00
Implement HA functionality for OpenTsdb feature
This commit is contained in:
parent
b905999f4b
commit
97c1296e99
@ -44,6 +44,20 @@ REGISTER_TYPE(OpenTsdbWriter);
|
|||||||
|
|
||||||
REGISTER_STATSFUNCTION(OpenTsdbWriter, &OpenTsdbWriter::StatsFunc);
|
REGISTER_STATSFUNCTION(OpenTsdbWriter, &OpenTsdbWriter::StatsFunc);
|
||||||
|
|
||||||
|
void OpenTsdbWriter::OnConfigLoaded()
|
||||||
|
{
|
||||||
|
ObjectImpl<OpenTsdbWriter>::OnConfigLoaded();
|
||||||
|
|
||||||
|
if (!GetEnableHa()) {
|
||||||
|
Log(LogDebug, "OpenTsdbWriter")
|
||||||
|
<< "HA functionality disabled. Won't pause connection: " << GetName();
|
||||||
|
|
||||||
|
SetHAMode(HARunEverywhere);
|
||||||
|
} else {
|
||||||
|
SetHAMode(HARunOnce);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OpenTsdbWriter::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr&)
|
void OpenTsdbWriter::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr&)
|
||||||
{
|
{
|
||||||
DictionaryData nodes;
|
DictionaryData nodes;
|
||||||
@ -55,12 +69,12 @@ void OpenTsdbWriter::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr&)
|
|||||||
status->Set("opentsdbwriter", new Dictionary(std::move(nodes)));
|
status->Set("opentsdbwriter", new Dictionary(std::move(nodes)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenTsdbWriter::Start(bool runtimeCreated)
|
void OpenTsdbWriter::Resume()
|
||||||
{
|
{
|
||||||
ObjectImpl<OpenTsdbWriter>::Start(runtimeCreated);
|
ObjectImpl<OpenTsdbWriter>::Resume();
|
||||||
|
|
||||||
Log(LogInformation, "OpentsdbWriter")
|
Log(LogInformation, "OpentsdbWriter")
|
||||||
<< "'" << GetName() << "' started.";
|
<< "'" << GetName() << "' resumed.";
|
||||||
|
|
||||||
m_ReconnectTimer = new Timer();
|
m_ReconnectTimer = new Timer();
|
||||||
m_ReconnectTimer->SetInterval(10);
|
m_ReconnectTimer->SetInterval(10);
|
||||||
@ -71,16 +85,19 @@ void OpenTsdbWriter::Start(bool runtimeCreated)
|
|||||||
Service::OnNewCheckResult.connect(std::bind(&OpenTsdbWriter::CheckResultHandler, this, _1, _2));
|
Service::OnNewCheckResult.connect(std::bind(&OpenTsdbWriter::CheckResultHandler, this, _1, _2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenTsdbWriter::Stop(bool runtimeRemoved)
|
void OpenTsdbWriter::Pause()
|
||||||
{
|
{
|
||||||
Log(LogInformation, "OpentsdbWriter")
|
Log(LogInformation, "OpentsdbWriter")
|
||||||
<< "'" << GetName() << "' stopped.";
|
<< "'" << GetName() << "' paused.";
|
||||||
|
|
||||||
ObjectImpl<OpenTsdbWriter>::Stop(runtimeRemoved);
|
ObjectImpl<OpenTsdbWriter>::Pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenTsdbWriter::ReconnectTimerHandler()
|
void OpenTsdbWriter::ReconnectTimerHandler()
|
||||||
{
|
{
|
||||||
|
if (IsPaused())
|
||||||
|
return;
|
||||||
|
|
||||||
if (m_Stream)
|
if (m_Stream)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -102,6 +119,9 @@ void OpenTsdbWriter::ReconnectTimerHandler()
|
|||||||
|
|
||||||
void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr)
|
void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr)
|
||||||
{
|
{
|
||||||
|
if (IsPaused())
|
||||||
|
return;
|
||||||
|
|
||||||
CONTEXT("Processing check result for '" + checkable->GetName() + "'");
|
CONTEXT("Processing check result for '" + checkable->GetName() + "'");
|
||||||
|
|
||||||
if (!IcingaApplication::GetInstance()->GetEnablePerfdata() || !checkable->GetEnablePerfdata())
|
if (!IcingaApplication::GetInstance()->GetEnablePerfdata() || !checkable->GetEnablePerfdata())
|
||||||
|
@ -44,8 +44,9 @@ public:
|
|||||||
static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata);
|
static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Start(bool runtimeCreated) override;
|
void OnConfigLoaded() override;
|
||||||
void Stop(bool runtimeRemoved) override;
|
void Resume() override;
|
||||||
|
void Pause() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Stream::Ptr m_Stream;
|
Stream::Ptr m_Stream;
|
||||||
|
@ -34,6 +34,9 @@ class OpenTsdbWriter : ConfigObject
|
|||||||
[config] String port {
|
[config] String port {
|
||||||
default {{{ return "4242"; }}}
|
default {{{ return "4242"; }}}
|
||||||
};
|
};
|
||||||
|
[config] bool enable_ha {
|
||||||
|
default {{{ return true; }}}
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user