mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
parent
7c280bcfff
commit
84be5e3413
@ -25,11 +25,20 @@
|
|||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/logger_fwd.h"
|
#include "base/logger_fwd.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(CheckerComponent);
|
REGISTER_TYPE(CheckerComponent);
|
||||||
|
REGISTER_STATSFUNCTION(CheckerComponentStats, &CheckerComponent::StatsFunc);
|
||||||
|
|
||||||
|
Value CheckerComponent::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
status->Set("checkercomponent_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void CheckerComponent::OnConfigLoaded(void)
|
void CheckerComponent::OnConfigLoaded(void)
|
||||||
{
|
{
|
||||||
|
@ -71,6 +71,8 @@ public:
|
|||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
virtual void Stop(void);
|
virtual void Stop(void);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
boost::mutex m_Mutex;
|
boost::mutex m_Mutex;
|
||||||
boost::condition_variable m_CV;
|
boost::condition_variable m_CV;
|
||||||
|
@ -31,12 +31,22 @@
|
|||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
#include "base/convert.h"
|
#include "base/convert.h"
|
||||||
#include "base/context.h"
|
#include "base/context.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(ClusterListener);
|
REGISTER_TYPE(ClusterListener);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(ClusterListenerStats, &ClusterListener::StatsFunc);
|
||||||
|
|
||||||
|
Value ClusterListener::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
status->Set("clusterlistener_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the component.
|
* Starts the component.
|
||||||
*/
|
*/
|
||||||
@ -1637,22 +1647,11 @@ Dictionary::Ptr ClusterListener::GetClusterStatus(void)
|
|||||||
bag->Set("not_conn_endpoints", not_connected_endpoints);
|
bag->Set("not_conn_endpoints", not_connected_endpoints);
|
||||||
|
|
||||||
/* features */
|
/* features */
|
||||||
bag->Set("feature_CheckerComponent", SupportsChecks() ? 1 : 0);
|
std::pair<Dictionary::Ptr, Dictionary::Ptr> stats = CIB::GetFeatureStats();
|
||||||
bag->Set("feature_NotificationComponent", SupportsNotifications() ? 1 : 0);
|
|
||||||
|
|
||||||
/* XXX find a more generic way of getting features as a list */
|
|
||||||
bag->Set("feature_IdoMysqlConnection", SupportsFeature("IdoMysqlConnection") ? 1 : 0);
|
|
||||||
bag->Set("feature_IdoPgsqlConnection", SupportsFeature("IdoPgsqlConnection") ? 1 : 0);
|
|
||||||
bag->Set("feature_StatusDataWriter", SupportsFeature("StatusDataWriter") ? 1 : 0);
|
|
||||||
bag->Set("feature_CompatLogger", SupportsFeature("CompatLogger") ? 1 : 0);
|
|
||||||
bag->Set("feature_ExternalCommandListener", SupportsFeature("ExternalCommandListener") ? 1 : 0);
|
|
||||||
bag->Set("feature_CheckResultReader", SupportsFeature("CheckResultReader") ? 1 : 0);
|
|
||||||
bag->Set("feature_LivestatusListener", SupportsFeature("LivestatusListener") ? 1 : 0);
|
|
||||||
bag->Set("feature_GraphiteWriter", SupportsFeature("GraphiteWriter") ? 1 : 0);
|
|
||||||
bag->Set("feature_PerfdataWriter", SupportsFeature("PerfdataWriter") ? 1 : 0);
|
|
||||||
bag->Set("feature_FileLogger", SupportsFeature("FileLogger") ? 1 : 0);
|
|
||||||
bag->Set("feature_SyslogLogger", SupportsFeature("SyslogLogger") ? 1 : 0);
|
|
||||||
|
|
||||||
|
/* XXX find a more clean way */
|
||||||
|
bag->Set("feature_status", stats.first);
|
||||||
|
bag->Set("feature_perfdata", stats.second);
|
||||||
|
|
||||||
/* icinga stats */
|
/* icinga stats */
|
||||||
double interval = Utility::GetTime() - Application::GetStartTime();
|
double interval = Utility::GetTime() - Application::GetStartTime();
|
||||||
|
@ -45,6 +45,8 @@ public:
|
|||||||
DECLARE_PTR_TYPEDEFS(ClusterListener);
|
DECLARE_PTR_TYPEDEFS(ClusterListener);
|
||||||
DECLARE_TYPENAME(ClusterListener);
|
DECLARE_TYPENAME(ClusterListener);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
virtual void Stop(void);
|
virtual void Stop(void);
|
||||||
|
|
||||||
|
@ -29,12 +29,23 @@
|
|||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
#include "base/context.h"
|
#include "base/context.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(CheckResultReader);
|
REGISTER_TYPE(CheckResultReader);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(CheckResultReaderStats, &CheckResultReader::StatsFunc);
|
||||||
|
|
||||||
|
Value CheckResultReader::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("checkresultreader_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @threadsafety Always.
|
* @threadsafety Always.
|
||||||
*/
|
*/
|
||||||
|
@ -38,6 +38,8 @@ public:
|
|||||||
DECLARE_PTR_TYPEDEFS(CheckResultReader);
|
DECLARE_PTR_TYPEDEFS(CheckResultReader);
|
||||||
DECLARE_TYPENAME(CheckResultReader);
|
DECLARE_TYPENAME(CheckResultReader);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/scriptfunction.h"
|
#include "base/scriptfunction.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
@ -42,6 +43,16 @@ using namespace icinga;
|
|||||||
REGISTER_TYPE(CompatLogger);
|
REGISTER_TYPE(CompatLogger);
|
||||||
REGISTER_SCRIPTFUNCTION(ValidateRotationMethod, &CompatLogger::ValidateRotationMethod);
|
REGISTER_SCRIPTFUNCTION(ValidateRotationMethod, &CompatLogger::ValidateRotationMethod);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(CompatLoggerStats, &CompatLogger::StatsFunc);
|
||||||
|
|
||||||
|
Value CompatLogger::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("compatlogger_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @threadsafety Always.
|
* @threadsafety Always.
|
||||||
*/
|
*/
|
||||||
|
@ -39,6 +39,8 @@ public:
|
|||||||
DECLARE_PTR_TYPEDEFS(CompatLogger);
|
DECLARE_PTR_TYPEDEFS(CompatLogger);
|
||||||
DECLARE_TYPENAME(CompatLogger);
|
DECLARE_TYPENAME(CompatLogger);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
static void ValidateRotationMethod(const String& location, const Dictionary::Ptr& attrs);
|
static void ValidateRotationMethod(const String& location, const Dictionary::Ptr& attrs);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -23,11 +23,22 @@
|
|||||||
#include "base/logger_fwd.h"
|
#include "base/logger_fwd.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(ExternalCommandListener);
|
REGISTER_TYPE(ExternalCommandListener);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(ExternalCommandListenerStats, &ExternalCommandListener::StatsFunc);
|
||||||
|
|
||||||
|
Value ExternalCommandListener::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("externalcommandlisterner_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the component.
|
* Starts the component.
|
||||||
*/
|
*/
|
||||||
|
@ -38,6 +38,8 @@ class ExternalCommandListener : public ObjectImpl<ExternalCommandListener>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(ExternalCommandListener);
|
DECLARE_PTR_TYPEDEFS(ExternalCommandListener);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
#include "base/context.h"
|
#include "base/context.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/tuple/tuple.hpp>
|
#include <boost/tuple/tuple.hpp>
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
#include <boost/algorithm/string/replace.hpp>
|
||||||
@ -43,6 +44,16 @@ using namespace icinga;
|
|||||||
|
|
||||||
REGISTER_TYPE(StatusDataWriter);
|
REGISTER_TYPE(StatusDataWriter);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(StatusDataWriterStats, &StatusDataWriter::StatsFunc);
|
||||||
|
|
||||||
|
Value StatusDataWriter::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("statusdatawriter_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hint: The reason why we're using "\n" rather than std::endl is because
|
* Hint: The reason why we're using "\n" rather than std::endl is because
|
||||||
* std::endl also _flushes_ the output stream which severely degrades
|
* std::endl also _flushes_ the output stream which severely degrades
|
||||||
|
@ -42,6 +42,8 @@ class StatusDataWriter : public ObjectImpl<StatusDataWriter>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(StatusDataWriter);
|
DECLARE_PTR_TYPEDEFS(StatusDataWriter);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include "db_ido/dbtype.h"
|
#include "db_ido/dbtype.h"
|
||||||
#include "db_ido/dbvalue.h"
|
#include "db_ido/dbvalue.h"
|
||||||
#include "db_ido_mysql/idomysqlconnection.h"
|
#include "db_ido_mysql/idomysqlconnection.h"
|
||||||
@ -32,10 +33,19 @@
|
|||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(IdoMysqlConnection);
|
|
||||||
|
|
||||||
#define SCHEMA_VERSION "1.11.0"
|
#define SCHEMA_VERSION "1.11.0"
|
||||||
|
|
||||||
|
REGISTER_TYPE(IdoMysqlConnection);
|
||||||
|
REGISTER_STATSFUNCTION(IdoMysqlConnectionStats, &IdoMysqlConnection::StatsFunc);
|
||||||
|
|
||||||
|
Value IdoMysqlConnection::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("ido_mysql_version_req", SCHEMA_VERSION);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void IdoMysqlConnection::Start(void)
|
void IdoMysqlConnection::Start(void)
|
||||||
{
|
{
|
||||||
DbConnection::Start();
|
DbConnection::Start();
|
||||||
|
@ -41,6 +41,8 @@ class IdoMysqlConnection : public ObjectImpl<IdoMysqlConnection>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(IdoMysqlConnection);
|
DECLARE_PTR_TYPEDEFS(IdoMysqlConnection);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
virtual void Stop(void);
|
virtual void Stop(void);
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
#include "base/context.h"
|
#include "base/context.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include "db_ido/dbtype.h"
|
#include "db_ido/dbtype.h"
|
||||||
#include "db_ido/dbvalue.h"
|
#include "db_ido/dbvalue.h"
|
||||||
#include "db_ido_pgsql/idopgsqlconnection.h"
|
#include "db_ido_pgsql/idopgsqlconnection.h"
|
||||||
@ -33,9 +34,19 @@
|
|||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
|
#define SCHEMA_VERSION "1.11.0"
|
||||||
|
|
||||||
REGISTER_TYPE(IdoPgsqlConnection);
|
REGISTER_TYPE(IdoPgsqlConnection);
|
||||||
|
|
||||||
#define SCHEMA_VERSION "1.11.0"
|
REGISTER_STATSFUNCTION(IdoPgsqlConnectionStats, &IdoPgsqlConnection::StatsFunc);
|
||||||
|
|
||||||
|
Value IdoPgsqlConnection::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("ido_pgsql_version_req", SCHEMA_VERSION);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void IdoPgsqlConnection::Start(void)
|
void IdoPgsqlConnection::Start(void)
|
||||||
{
|
{
|
||||||
|
@ -41,6 +41,8 @@ class IdoPgsqlConnection : public ObjectImpl<IdoPgsqlConnection>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(IdoPgsqlConnection);
|
DECLARE_PTR_TYPEDEFS(IdoPgsqlConnection);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
virtual void Stop(void);
|
virtual void Stop(void);
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "base/networkstream.h"
|
#include "base/networkstream.h"
|
||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
#include "base/scriptfunction.h"
|
#include "base/scriptfunction.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include "base/convert.h"
|
#include "base/convert.h"
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
@ -40,6 +41,16 @@ static int l_ClientsConnected = 0;
|
|||||||
static int l_Connections = 0;
|
static int l_Connections = 0;
|
||||||
static boost::mutex l_ComponentMutex;
|
static boost::mutex l_ComponentMutex;
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(LivestatusListenerStats, &LivestatusListener::StatsFunc);
|
||||||
|
|
||||||
|
Value LivestatusListener::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("livestatus_connections", l_Connections);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the component.
|
* Starts the component.
|
||||||
*/
|
*/
|
||||||
|
@ -38,6 +38,8 @@ class LivestatusListener : public ObjectImpl<LivestatusListener>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(LivestatusListener);
|
DECLARE_PTR_TYPEDEFS(LivestatusListener);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
static int GetClientsConnected(void);
|
static int GetClientsConnected(void);
|
||||||
static int GetConnections(void);
|
static int GetConnections(void);
|
||||||
|
|
||||||
|
@ -24,12 +24,23 @@
|
|||||||
#include "base/logger_fwd.h"
|
#include "base/logger_fwd.h"
|
||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(NotificationComponent);
|
REGISTER_TYPE(NotificationComponent);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(NotificationComponentStats, &NotificationComponent::StatsFunc);
|
||||||
|
|
||||||
|
Value NotificationComponent::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("notification_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts the component.
|
* Starts the component.
|
||||||
*/
|
*/
|
||||||
|
@ -36,6 +36,8 @@ class NotificationComponent : public ObjectImpl<NotificationComponent>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(NotificationComponent);
|
DECLARE_PTR_TYPEDEFS(NotificationComponent);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "base/networkstream.h"
|
#include "base/networkstream.h"
|
||||||
#include "base/bufferedstream.h"
|
#include "base/bufferedstream.h"
|
||||||
#include "base/exception.h"
|
#include "base/exception.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
#include <boost/algorithm/string/classification.hpp>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
@ -44,6 +45,16 @@ using namespace icinga;
|
|||||||
|
|
||||||
REGISTER_TYPE(GraphiteWriter);
|
REGISTER_TYPE(GraphiteWriter);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(GraphiteWriterStats, &GraphiteWriter::StatsFunc);
|
||||||
|
|
||||||
|
Value GraphiteWriter::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("graphite_writer_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void GraphiteWriter::Start(void)
|
void GraphiteWriter::Start(void)
|
||||||
{
|
{
|
||||||
DynamicObject::Start();
|
DynamicObject::Start();
|
||||||
|
@ -41,6 +41,8 @@ public:
|
|||||||
DECLARE_PTR_TYPEDEFS(GraphiteWriter);
|
DECLARE_PTR_TYPEDEFS(GraphiteWriter);
|
||||||
DECLARE_TYPENAME(GraphiteWriter);
|
DECLARE_TYPENAME(GraphiteWriter);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
|
@ -28,11 +28,22 @@
|
|||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/context.h"
|
#include "base/context.h"
|
||||||
#include "base/application.h"
|
#include "base/application.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(PerfdataWriter);
|
REGISTER_TYPE(PerfdataWriter);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(PerfdataWriterStats, &PerfdataWriter::StatsFunc);
|
||||||
|
|
||||||
|
Value PerfdataWriter::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("perfdatawriter_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void PerfdataWriter::Start(void)
|
void PerfdataWriter::Start(void)
|
||||||
{
|
{
|
||||||
DynamicObject::Start();
|
DynamicObject::Start();
|
||||||
|
@ -40,6 +40,8 @@ public:
|
|||||||
DECLARE_PTR_TYPEDEFS(PerfdataWriter);
|
DECLARE_PTR_TYPEDEFS(PerfdataWriter);
|
||||||
DECLARE_TYPENAME(PerfdataWriter);
|
DECLARE_TYPENAME(PerfdataWriter);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ add_library(base SHARED
|
|||||||
process-unix.cpp process-windows.cpp qstring.cpp ringbuffer.cpp script.cpp
|
process-unix.cpp process-windows.cpp qstring.cpp ringbuffer.cpp script.cpp
|
||||||
script.th scriptfunction.cpp scriptfunctionwrapper.cpp scriptinterpreter.cpp
|
script.th scriptfunction.cpp scriptfunctionwrapper.cpp scriptinterpreter.cpp
|
||||||
scriptlanguage.cpp scriptvariable.cpp serializer.cpp socket.cpp stacktrace.cpp
|
scriptlanguage.cpp scriptvariable.cpp serializer.cpp socket.cpp stacktrace.cpp
|
||||||
stdiostream.cpp stream_bio.cpp stream.cpp streamlogger.cpp streamlogger.th
|
statsfunction.cpp stdiostream.cpp stream_bio.cpp stream.cpp streamlogger.cpp streamlogger.th
|
||||||
sysloglogger.cpp sysloglogger.th tcpsocket.cpp threadpool.cpp timer.cpp
|
sysloglogger.cpp sysloglogger.th tcpsocket.cpp threadpool.cpp timer.cpp
|
||||||
tlsstream.cpp tlsutility.cpp type.cpp unixsocket.cpp utility.cpp value.cpp
|
tlsstream.cpp tlsutility.cpp type.cpp unixsocket.cpp utility.cpp value.cpp
|
||||||
workqueue.cpp zlibstream.cpp
|
workqueue.cpp zlibstream.cpp
|
||||||
|
@ -59,7 +59,7 @@ struct DictionaryKeyLessComparer
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restrieves a value from a dictionary.
|
* Retrieves a value from a dictionary.
|
||||||
*
|
*
|
||||||
* @param key The key whose value should be retrieved.
|
* @param key The key whose value should be retrieved.
|
||||||
* @returns The value of an empty value if the key was not found.
|
* @returns The value of an empty value if the key was not found.
|
||||||
|
@ -19,12 +19,23 @@
|
|||||||
|
|
||||||
#include "base/filelogger.h"
|
#include "base/filelogger.h"
|
||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(FileLogger);
|
REGISTER_TYPE(FileLogger);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(FileLoggerStats, &FileLogger::StatsFunc);
|
||||||
|
|
||||||
|
Value FileLogger::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("filelogger_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the FileLogger class.
|
* Constructor for the FileLogger class.
|
||||||
*/
|
*/
|
||||||
|
@ -36,6 +36,8 @@ class I2_BASE_API FileLogger : public ObjectImpl<FileLogger>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(FileLogger);
|
DECLARE_PTR_TYPEDEFS(FileLogger);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
virtual void Start(void);
|
virtual void Start(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
45
lib/base/statsfunction.cpp
Normal file
45
lib/base/statsfunction.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Icinga 2 *
|
||||||
|
* Copyright (C) 2012-present Icinga Development Team (http://www.icinga.org) *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the Free Software Foundation *
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include "base/statsfunction.h"
|
||||||
|
#include "base/registry.h"
|
||||||
|
#include "base/singleton.h"
|
||||||
|
|
||||||
|
using namespace icinga;
|
||||||
|
|
||||||
|
StatsFunction::StatsFunction(const Callback& function)
|
||||||
|
: m_Callback(function)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
Value StatsFunction::Invoke(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
return m_Callback(status, perfdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
RegisterStatsFunctionHelper::RegisterStatsFunctionHelper(const String& name, const StatsFunction::Callback& function)
|
||||||
|
{
|
||||||
|
StatsFunction::Ptr func = make_shared<StatsFunction>(function);
|
||||||
|
StatsFunctionRegistry::GetInstance()->Register(name, func);
|
||||||
|
}
|
||||||
|
|
||||||
|
StatsFunctionRegistry *StatsFunctionRegistry::GetInstance(void)
|
||||||
|
{
|
||||||
|
return Singleton<StatsFunctionRegistry>::GetInstance();
|
||||||
|
}
|
||||||
|
|
81
lib/base/statsfunction.h
Normal file
81
lib/base/statsfunction.h
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Icinga 2 *
|
||||||
|
* Copyright (C) 2012-present Icinga Development Team (http://www.icinga.org) *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the Free Software Foundation *
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef STATSFUNCTION_H
|
||||||
|
#define STATSFUNCTION_H
|
||||||
|
|
||||||
|
#include "base/i2-base.h"
|
||||||
|
#include "base/registry.h"
|
||||||
|
#include "base/singleton.h"
|
||||||
|
#include "base/value.h"
|
||||||
|
#include "base/dictionary.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <boost/function.hpp>
|
||||||
|
|
||||||
|
namespace icinga
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A stats function that can be used to execute a stats task.
|
||||||
|
*
|
||||||
|
* @ingroup base
|
||||||
|
*/
|
||||||
|
class I2_BASE_API StatsFunction : public Object
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DECLARE_PTR_TYPEDEFS(StatsFunction);
|
||||||
|
|
||||||
|
typedef boost::function<Value (Dictionary::Ptr& status, Dictionary::Ptr& perfdata)> Callback;
|
||||||
|
|
||||||
|
StatsFunction(const Callback& function);
|
||||||
|
|
||||||
|
Value Invoke(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Callback m_Callback;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A registry for script functions.
|
||||||
|
*
|
||||||
|
* @ingroup base
|
||||||
|
*/
|
||||||
|
class I2_BASE_API StatsFunctionRegistry : public Registry<StatsFunctionRegistry, StatsFunction::Ptr>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static StatsFunctionRegistry *GetInstance(void);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper class for registering StatsFunction implementation classes.
|
||||||
|
*
|
||||||
|
* @ingroup base
|
||||||
|
*/
|
||||||
|
class I2_BASE_API RegisterStatsFunctionHelper
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RegisterStatsFunctionHelper(const String& name, const StatsFunction::Callback& function);
|
||||||
|
};
|
||||||
|
|
||||||
|
#define REGISTER_STATSFUNCTION(name, callback) \
|
||||||
|
I2_EXPORT icinga::RegisterStatsFunctionHelper g_RegisterSF_ ## name(#name, callback)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* STATSFUNCTION_H */
|
@ -19,12 +19,23 @@
|
|||||||
|
|
||||||
#include "base/sysloglogger.h"
|
#include "base/sysloglogger.h"
|
||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
REGISTER_TYPE(SyslogLogger);
|
REGISTER_TYPE(SyslogLogger);
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(SyslogLoggerStats, &SyslogLogger::StatsFunc);
|
||||||
|
|
||||||
|
Value SyslogLogger::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("sysloglogger_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a log entry and outputs it to syslog.
|
* Processes a log entry and outputs it to syslog.
|
||||||
*
|
*
|
||||||
|
@ -37,6 +37,8 @@ class I2_BASE_API SyslogLogger : public ObjectImpl<SyslogLogger>
|
|||||||
public:
|
public:
|
||||||
DECLARE_PTR_TYPEDEFS(SyslogLogger);
|
DECLARE_PTR_TYPEDEFS(SyslogLogger);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void ProcessLogEntry(const LogEntry& entry);
|
virtual void ProcessLogEntry(const LogEntry& entry);
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,9 @@
|
|||||||
#include "base/objectlock.h"
|
#include "base/objectlock.h"
|
||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
#include "base/dynamictype.h"
|
#include "base/dynamictype.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/tuple/tuple.hpp>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
@ -166,3 +168,24 @@ HostStatistics CIB::CalculateHostStats(void)
|
|||||||
|
|
||||||
return hs;
|
return hs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::pair<Dictionary::Ptr, Dictionary::Ptr> CIB::GetFeatureStats(void)
|
||||||
|
{
|
||||||
|
Dictionary::Ptr status = make_shared<Dictionary>();
|
||||||
|
Dictionary::Ptr perfdata = make_shared<Dictionary>();
|
||||||
|
|
||||||
|
String name;
|
||||||
|
Value ret;
|
||||||
|
BOOST_FOREACH(boost::tie(name, boost::tuples::ignore), StatsFunctionRegistry::GetInstance()->GetItems()) {
|
||||||
|
StatsFunction::Ptr func = StatsFunctionRegistry::GetInstance()->GetItem(name);
|
||||||
|
|
||||||
|
if (!func)
|
||||||
|
BOOST_THROW_EXCEPTION(std::invalid_argument("Function '" + name + "' does not exist."));
|
||||||
|
|
||||||
|
ret = func->Invoke(status, perfdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::make_pair(status, perfdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "icinga/i2-icinga.h"
|
#include "icinga/i2-icinga.h"
|
||||||
#include "base/ringbuffer.h"
|
#include "base/ringbuffer.h"
|
||||||
|
#include "base/dictionary.h"
|
||||||
|
|
||||||
namespace icinga
|
namespace icinga
|
||||||
{
|
{
|
||||||
@ -76,6 +77,8 @@ public:
|
|||||||
static ServiceStatistics CalculateServiceStats(void);
|
static ServiceStatistics CalculateServiceStats(void);
|
||||||
static HostStatistics CalculateHostStats(void);
|
static HostStatistics CalculateHostStats(void);
|
||||||
|
|
||||||
|
static std::pair<Dictionary::Ptr, Dictionary::Ptr> GetFeatureStats(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CIB(void);
|
CIB(void);
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "base/timer.h"
|
#include "base/timer.h"
|
||||||
#include "base/scriptvariable.h"
|
#include "base/scriptvariable.h"
|
||||||
#include "base/initialize.h"
|
#include "base/initialize.h"
|
||||||
|
#include "base/statsfunction.h"
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
@ -45,6 +46,16 @@ void IcingaApplication::StaticInitialize(void)
|
|||||||
ScriptVariable::Set("IcingaNodeName", Utility::GetHostName());
|
ScriptVariable::Set("IcingaNodeName", Utility::GetHostName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
REGISTER_STATSFUNCTION(IcingaApplicationStats, &IcingaApplication::StatsFunc);
|
||||||
|
|
||||||
|
Value IcingaApplication::StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata)
|
||||||
|
{
|
||||||
|
/* FIXME */
|
||||||
|
status->Set("icingaapplication_", 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The entry point for the Icinga application.
|
* The entry point for the Icinga application.
|
||||||
*
|
*
|
||||||
|
@ -42,6 +42,8 @@ public:
|
|||||||
|
|
||||||
int Main(void);
|
int Main(void);
|
||||||
|
|
||||||
|
static Value StatsFunc(Dictionary::Ptr& status, Dictionary::Ptr& perfdata);
|
||||||
|
|
||||||
static IcingaApplication::Ptr GetInstance(void);
|
static IcingaApplication::Ptr GetInstance(void);
|
||||||
|
|
||||||
String GetPidPath(void) const;
|
String GetPidPath(void) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user