Move stats into a separate file

This commit is contained in:
Michael Friedrich 2018-06-08 11:38:36 +02:00
parent 3229982bee
commit d7f6d7994b
4 changed files with 53 additions and 15 deletions

View File

@ -18,7 +18,7 @@
mkclass_target(rediswriter.ti rediswriter-ti.cpp rediswriter-ti.hpp)
set(redis_SOURCES
rediswriter.cpp rediswriter-objects.cpp rediswriter-utility.cpp rediswriter-ti.hpp
rediswriter.cpp rediswriter-objects.cpp rediswriter-stats.cpp rediswriter-utility.cpp rediswriter-ti.hpp
)
if(ICINGA2_UNITY_BUILD)

View File

@ -0,0 +1,48 @@
/******************************************************************************
* Icinga 2 *
* Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/) *
* *
* 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 "redis/rediswriter.hpp"
#include "base/json.hpp"
#include "base/logger.hpp"
#include "base/serializer.hpp"
#include "base/statsfunction.hpp"
#include "base/convert.hpp"
using namespace icinga;
Dictionary::Ptr RedisWriter::GetStats()
{
//TODO: Figure out if more stats can be useful here.
Dictionary::Ptr statsFunctions = ScriptGlobal::Get("StatsFunctions", &Empty);
if (!statsFunctions)
Dictionary::Ptr();
Function::Ptr func = statsFunctions->Get("CIB");
Dictionary::Ptr status = new Dictionary();
Array::Ptr perfdata = new Array();
func->Invoke({ status, perfdata });
// String jsonStats = JsonEncode(status);
return status;
}

View File

@ -21,7 +21,6 @@
#include "redis/rediswriter-ti.cpp"
#include "remote/eventqueue.hpp"
#include "base/json.hpp"
#include "base/statsfunction.hpp"
#include <boost/algorithm/string.hpp>
using namespace icinga;
@ -230,19 +229,7 @@ void RedisWriter::PublishStats()
if (!m_Context)
return;
//TODO: Figure out if more stats can be useful here.
Dictionary::Ptr statsFunctions = ScriptGlobal::Get("StatsFunctions", &Empty);
if (!statsFunctions)
return;
Function::Ptr func = statsFunctions->Get("CIB");
Dictionary::Ptr status = new Dictionary();
Array::Ptr perfdata = new Array();
func->Invoke({ status, perfdata });
Dictionary::Ptr status = GetStats();
String jsonStats = JsonEncode(status);
ExecuteQuery({ "PUBLISH", "icinga:stats", jsonStats });

View File

@ -71,6 +71,9 @@ private:
void SendStatusUpdate(const ConfigObject::Ptr& object, bool useTransaction);
void UpdateObjectAttrs(const String& keyPrefix, const ConfigObject::Ptr& object, int fieldType);
/* Stats */
Dictionary::Ptr GetStats();
/* utilities */
static String FormatCheckSumBinary(const String& str);