Implement HA functionality for OpenTsdb feature

This commit is contained in:
Michael Friedrich 2018-10-24 13:55:19 +02:00
parent b905999f4b
commit 97c1296e99
3 changed files with 32 additions and 8 deletions

View File

@ -44,6 +44,20 @@ REGISTER_TYPE(OpenTsdbWriter);
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&)
{
DictionaryData nodes;
@ -55,12 +69,12 @@ void OpenTsdbWriter::StatsFunc(const Dictionary::Ptr& status, const Array::Ptr&)
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")
<< "'" << GetName() << "' started.";
<< "'" << GetName() << "' resumed.";
m_ReconnectTimer = new Timer();
m_ReconnectTimer->SetInterval(10);
@ -71,16 +85,19 @@ void OpenTsdbWriter::Start(bool runtimeCreated)
Service::OnNewCheckResult.connect(std::bind(&OpenTsdbWriter::CheckResultHandler, this, _1, _2));
}
void OpenTsdbWriter::Stop(bool runtimeRemoved)
void OpenTsdbWriter::Pause()
{
Log(LogInformation, "OpentsdbWriter")
<< "'" << GetName() << "' stopped.";
<< "'" << GetName() << "' paused.";
ObjectImpl<OpenTsdbWriter>::Stop(runtimeRemoved);
ObjectImpl<OpenTsdbWriter>::Pause();
}
void OpenTsdbWriter::ReconnectTimerHandler()
{
if (IsPaused())
return;
if (m_Stream)
return;
@ -102,6 +119,9 @@ void OpenTsdbWriter::ReconnectTimerHandler()
void OpenTsdbWriter::CheckResultHandler(const Checkable::Ptr& checkable, const CheckResult::Ptr& cr)
{
if (IsPaused())
return;
CONTEXT("Processing check result for '" + checkable->GetName() + "'");
if (!IcingaApplication::GetInstance()->GetEnablePerfdata() || !checkable->GetEnablePerfdata())

View File

@ -44,8 +44,9 @@ public:
static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata);
protected:
void Start(bool runtimeCreated) override;
void Stop(bool runtimeRemoved) override;
void OnConfigLoaded() override;
void Resume() override;
void Pause() override;
private:
Stream::Ptr m_Stream;

View File

@ -34,6 +34,9 @@ class OpenTsdbWriter : ConfigObject
[config] String port {
default {{{ return "4242"; }}}
};
[config] bool enable_ha {
default {{{ return true; }}}
};
};
}