Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion thorlcr/master/thgraphmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1376,11 +1376,20 @@ void publishPodNames(IWorkUnit *workunit, const char *graphName, const std::vect
}
}

static void auditThorSystemEventBuilder(std::string &msg, const char *eventName, std::initializer_list<const char*> args)
static void auditThorSystemEventBuilder(std::string &msg, const char *eventName, std::initializer_list<const char*> args, std::initializer_list<StatisticKind> statKinds, std::initializer_list<stat_type> statValues)
{
dbgassertex(statKinds.size() == statValues.size());
msg += std::string(",Progress,Thor,") + eventName + "," + getComponentConfigSP()->queryProp("@name");
for (auto arg : args)
msg += "," + std::string(arg);
auto kindIt = statKinds.begin();
auto valueIt = statValues.begin();
for (; kindIt != statKinds.end(); ++kindIt, ++valueIt)
{
StringBuffer sb;
formatStatistic(sb, *valueIt, *kindIt);
msg += std::string(",") + queryStatisticName(*kindIt) + "=" + sb.str();
}
if (isContainerized())
msg += std::string(",") + k8s::queryMyPodName() + "," + k8s::queryMyContainerName();
else
Expand All @@ -1391,6 +1400,11 @@ static void auditThorSystemEventBuilder(std::string &msg, const char *eventName,
}
}

static void auditThorSystemEventBuilder(std::string &msg, const char *eventName, std::initializer_list<const char*> args)
{
auditThorSystemEventBuilder(msg, eventName, args, {}, {});
}

void auditThorSystemEvent(const char *eventName)
{
std::string msg;
Expand All @@ -1405,6 +1419,13 @@ void auditThorSystemEvent(const char *eventName, std::initializer_list<const cha
LOG(MCauditInfo, "%s", msg.c_str());
}

void auditThorSystemEvent(const char *eventName, std::initializer_list<StatisticKind> statKinds, std::initializer_list<stat_type> statValues)
{
std::string msg;
auditThorSystemEventBuilder(msg, eventName, {}, statKinds, statValues);
LOG(MCauditInfo, "%s", msg.c_str());
}

void auditThorJobEvent(const char *eventName, const char *wuid, const char *graphName, const char *user)
{
std::string msg;
Expand Down
6 changes: 5 additions & 1 deletion thorlcr/master/thgraphmanager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@
#ifndef _THGRAPHMANAGER_HPP
#define _THGRAPHMANAGER_HPP

#include <vector>
#include <initializer_list>
#include <string>
#include <vector>

#include "jstats.h"

class CSDSServerStatus;
interface IException;
Expand Down Expand Up @@ -52,6 +55,7 @@ void publishPodNames(IWorkUnit *workunit, const char *graphName, const std::vect
void relayWuidException(IConstWorkUnit *wu, const IException *exception);
void auditThorSystemEvent(const char *eventName);
void auditThorSystemEvent(const char *eventName, std::initializer_list<const char*> args);
void auditThorSystemEvent(const char *eventName, std::initializer_list<StatisticKind> statKinds, std::initializer_list<stat_type> statValues);
void auditThorJobEvent(const char *eventName, const char *wuid, const char *graphName, const char *user);


Expand Down
6 changes: 2 additions & 4 deletions thorlcr/master/thmastermain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1144,11 +1144,7 @@ int main( int argc, const char *argv[] )
throwStringExceptionV(0, "Failed to connect to all nodes");
PROGLOG("verified mp connection to rest of cluster");

auditThorSystemEvent("Startup");
auditStartLogged = true;

writeSentinelFile(sentinelFile);

#ifndef _CONTAINERIZED
unsigned pinterval = globals->getPropInt("@system_monitor_interval",1000*60);
if (pinterval)
Expand All @@ -1164,6 +1160,8 @@ int main( int argc, const char *argv[] )
double expenseStart = calcCostNs(getThorManagerRate(), startupElapsedTimeNs) + calcCostNs(getThorWorkerRate(), workerWaitingTimeNs);
cost_type costStart = money2cost_type(expenseStart);
recordGlobalMetrics("Queue", { {"component", "thor" }, { "name", thorName } }, { StNumStarts, StTimeProvision, StTimeStart, StCostStart }, { 1ULL, workerProvisionTimeNs, startupElapsedTimeNs, costStart });
auditThorSystemEvent("Startup", { StNumStarts, StTimeProvision, StTimeStart, StCostStart }, { 1ULL, workerProvisionTimeNs, startupElapsedTimeNs, costStart });
auditStartLogged = true;

// NB: workunit/graphName only set in one-shot mode (if isCloud())
thorMain(logHandler, workunit, graphName);
Expand Down