commit a2fd768907b0ada2f5a93e887624d06d4e46a8ef
parent c3d5a7cb79a73c1349b83e6c75014c28443cf1a9
Author: Remy Noulin <loader2x@gmail.com>
Date: Fri, 7 Jul 2023 20:58:34 +0200
record events only on disk (not all messages)
heartbeat.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
Diffstat:
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/heartbeat.c b/heartbeat.c
@@ -514,13 +514,14 @@ void probe(char *cfgfile) {
else {
// this is the logger
// write messages directly
- record.m = msg;
- record.time = getCurrentUnixTime();
- write(agentf[id], &record, sizeof(record));
+ bool saveEvent = no;
+ record.m = msg;
+ record.time = getCurrentUnixTime();
cleanFinishSmallDictP(logAgent) = getG(completeCfg, rtSmallDictt, name);
setG(logAgent, "time", getCurrentUnixTime());
char *newstate = messageId ? "alive" : "init";
if (!eqG($(logAgent, "state"), newstate)) {
+ saveEvent = yes;
/* logD("%s is %s, previous state was %s", */
/* name#<{(|agent name|)}>#, */
/* newstate, */
@@ -537,6 +538,7 @@ void probe(char *cfgfile) {
cast(smallDictt*,p,P);
bool newstate = msg.status & (1UL << iI(probes));
if (getG(p, rtBool, "state") != newstate) {
+ saveEvent = yes;
setG(p, "state", newstate);
setG(p, "last", getCurrentUnixTime());
// send mail when service is down
@@ -561,6 +563,10 @@ void probe(char *cfgfile) {
}
} // if probes
+ if (saveEvent) {
+ write(agentf[id], &record, sizeof(record));
+ }
+
// set remote agents down if there hasn't been a message in a while
iter(completeCfg, D) {
if (!isOSmallDict(D)) continue;
@@ -615,9 +621,9 @@ void probe(char *cfgfile) {
logE("Invalid id, the logger doesn't send packets");
}
else {
- record.m = *m;
- record.time = getCurrentUnixTime();
- write(agentf[m->id], &record, sizeof(record));
+ bool saveEvent = no;
+ record.m = *m;
+ record.time = getCurrentUnixTime();
cleanAllocateSmallArray(mailMsg);
@@ -626,6 +632,7 @@ void probe(char *cfgfile) {
setG(agent, "time", getCurrentUnixTime());
char *newstate = m->messageId ? "alive" : "init";
if (!eqG($(agent, "state"), newstate)) {
+ saveEvent = yes;
if (eqG($(agent, "state"), "alive")) {
setG(agent, "rebooted", TRUE);
setG(agent, "lastBoot", getCurrentUnixTime());
@@ -638,6 +645,7 @@ void probe(char *cfgfile) {
setG(agent, "last", getCurrentUnixTime());
}
if (m->messageId < u$(agent,"mId")) {
+ saveEvent = yes;
setG(agent, "rebooted", TRUE);
setG(agent, "lastBoot", getCurrentUnixTime());
// send mail when agent rebooted
@@ -652,6 +660,7 @@ void probe(char *cfgfile) {
cast(smallDictt*,p,P);
bool newstate = m->status & (1UL << iI(probes));
if (getG(p, rtBool, "state") != newstate) {
+ saveEvent = yes;
setG(p, "state", newstate);
setG(p, "last", getCurrentUnixTime());
// send mail when service is down
@@ -676,6 +685,10 @@ void probe(char *cfgfile) {
}
} // if probes
+ if (saveEvent) {
+ write(agentf[m->id], &record, sizeof(record));
+ }
+
// send mail
if (lenG(mailMsg)) {
pError0(writeFileG(mailMsg, "mail.txt"));