summaryrefslogtreecommitdiffstats
path: root/health/health_log.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:19:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:20:02 +0000
commit58daab21cd043e1dc37024a7f99b396788372918 (patch)
tree96771e43bb69f7c1c2b0b4f7374cb74d7866d0cb /health/health_log.c
parentReleasing debian version 1.43.2-1. (diff)
downloadnetdata-58daab21cd043e1dc37024a7f99b396788372918.tar.xz
netdata-58daab21cd043e1dc37024a7f99b396788372918.zip
Merging upstream version 1.44.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'health/health_log.c')
-rw-r--r--health/health_log.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/health/health_log.c b/health/health_log.c
index 35f297007..fd124ce80 100644
--- a/health/health_log.c
+++ b/health/health_log.c
@@ -8,6 +8,79 @@ inline void health_alarm_log_save(RRDHOST *host, ALARM_ENTRY *ae) {
sql_health_alarm_log_save(host, ae);
}
+
+void health_log_alert_transition_with_trace(RRDHOST *host, ALARM_ENTRY *ae, int line, const char *file, const char *function) {
+ ND_LOG_STACK lgs[] = {
+ ND_LOG_FIELD_UUID(NDF_MESSAGE_ID, &health_alert_transition_msgid),
+ ND_LOG_FIELD_STR(NDF_NIDL_NODE, host->hostname),
+ ND_LOG_FIELD_STR(NDF_NIDL_INSTANCE, ae->chart_name),
+ ND_LOG_FIELD_STR(NDF_NIDL_CONTEXT, ae->chart_context),
+ ND_LOG_FIELD_U64(NDF_ALERT_ID, ae->alarm_id),
+ ND_LOG_FIELD_U64(NDF_ALERT_UNIQUE_ID, ae->unique_id),
+ ND_LOG_FIELD_U64(NDF_ALERT_EVENT_ID, ae->alarm_event_id),
+ ND_LOG_FIELD_UUID(NDF_ALERT_CONFIG_HASH, &ae->config_hash_id),
+ ND_LOG_FIELD_UUID(NDF_ALERT_TRANSITION_ID, &ae->transition_id),
+ ND_LOG_FIELD_STR(NDF_ALERT_NAME, ae->name),
+ ND_LOG_FIELD_STR(NDF_ALERT_CLASS, ae->classification),
+ ND_LOG_FIELD_STR(NDF_ALERT_COMPONENT, ae->component),
+ ND_LOG_FIELD_STR(NDF_ALERT_TYPE, ae->type),
+ ND_LOG_FIELD_STR(NDF_ALERT_EXEC, ae->exec),
+ ND_LOG_FIELD_STR(NDF_ALERT_RECIPIENT, ae->recipient),
+ ND_LOG_FIELD_STR(NDF_ALERT_SOURCE, ae->exec),
+ ND_LOG_FIELD_STR(NDF_ALERT_UNITS, ae->units),
+ ND_LOG_FIELD_STR(NDF_ALERT_SUMMARY, ae->summary),
+ ND_LOG_FIELD_STR(NDF_ALERT_INFO, ae->info),
+ ND_LOG_FIELD_DBL(NDF_ALERT_VALUE, ae->new_value),
+ ND_LOG_FIELD_DBL(NDF_ALERT_VALUE_OLD, ae->old_value),
+ ND_LOG_FIELD_TXT(NDF_ALERT_STATUS, rrdcalc_status2string(ae->new_status)),
+ ND_LOG_FIELD_TXT(NDF_ALERT_STATUS_OLD, rrdcalc_status2string(ae->old_status)),
+ ND_LOG_FIELD_I64(NDF_ALERT_DURATION, ae->duration),
+ ND_LOG_FIELD_I64(NDF_RESPONSE_CODE, ae->exec_code),
+ ND_LOG_FIELD_U64(NDF_ALERT_NOTIFICATION_REALTIME_USEC, ae->delay_up_to_timestamp * USEC_PER_SEC),
+ ND_LOG_FIELD_END(),
+ };
+ ND_LOG_STACK_PUSH(lgs);
+
+ errno = 0;
+
+ ND_LOG_FIELD_PRIORITY priority = NDLP_INFO;
+
+ switch(ae->new_status) {
+ case RRDCALC_STATUS_UNDEFINED:
+ if(ae->old_status >= RRDCALC_STATUS_CLEAR)
+ priority = NDLP_NOTICE;
+ else
+ priority = NDLP_DEBUG;
+ break;
+
+ default:
+ case RRDCALC_STATUS_UNINITIALIZED:
+ case RRDCALC_STATUS_REMOVED:
+ priority = NDLP_DEBUG;
+ break;
+
+ case RRDCALC_STATUS_CLEAR:
+ priority = NDLP_INFO;
+ break;
+
+ case RRDCALC_STATUS_WARNING:
+ if(ae->old_status < RRDCALC_STATUS_WARNING)
+ priority = NDLP_WARNING;
+ break;
+
+ case RRDCALC_STATUS_CRITICAL:
+ if(ae->old_status < RRDCALC_STATUS_CRITICAL)
+ priority = NDLP_CRIT;
+ break;
+ }
+
+ netdata_logger(NDLS_HEALTH, priority, file, function, line,
+ "ALERT '%s' of instance '%s' on node '%s', transitioned from %s to %s",
+ string2str(ae->name), string2str(ae->chart), string2str(host->hostname),
+ rrdcalc_status2string(ae->old_status), rrdcalc_status2string(ae->new_status)
+ );
+}
+
// ----------------------------------------------------------------------------
// health alarm log management
@@ -38,6 +111,10 @@ inline ALARM_ENTRY* health_create_alarm_entry(
int delay,
HEALTH_ENTRY_FLAGS flags
) {
+
+ if (duration < 0)
+ duration = 0;
+
netdata_log_debug(D_HEALTH, "Health adding alarm log entry with id: %u", host->health_log.next_log_id);
ALARM_ENTRY *ae = callocz(1, sizeof(ALARM_ENTRY));