From: Juliana Fajardini Date: Wed, 20 Apr 2022 16:49:31 +0000 (-0300) Subject: detect/stats: log out total of suppressed alerts X-Git-Tag: suricata-7.0.0-beta1~653 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=877b32c1e42c6edde3fa5f6ab73293e0a4ad27c3;p=thirdparty%2Fsuricata.git detect/stats: log out total of suppressed alerts Related to Task #4943 Task #5179 --- diff --git a/src/decode.h b/src/decode.h index 725a99cc56..3d1323fec7 100644 --- a/src/decode.h +++ b/src/decode.h @@ -305,6 +305,7 @@ extern uint16_t packet_alert_max; typedef struct PacketAlerts_ { uint16_t cnt; uint16_t discarded; + uint16_t suppressed; PacketAlert *alerts; /* single pa used when we're dropping, * so we can log it out in the drop log. */ @@ -841,6 +842,7 @@ void CaptureStatsSetup(ThreadVars *tv, CaptureStats *s); (p)->pktlen = 0; \ (p)->alerts.cnt = 0; \ (p)->alerts.discarded = 0; \ + (p)->alerts.suppressed = 0; \ (p)->alerts.drop.action = 0; \ (p)->pcap_cnt = 0; \ (p)->tunnel_rtv_cnt = 0; \ diff --git a/src/detect-engine-alert.c b/src/detect-engine-alert.c index 45495b667d..2f74ed4fcf 100644 --- a/src/detect-engine-alert.c +++ b/src/detect-engine-alert.c @@ -371,7 +371,7 @@ void PacketAlertFinalize(DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx /* Thresholding removes this alert */ if (res == 0 || res == 2 || (s->flags & SIG_FLAG_NOALERT)) { /* we will not copy this to the AlertQueue */ - p->alerts.discarded++; + p->alerts.suppressed++; } else if (p->alerts.cnt < packet_alert_max) { p->alerts.alerts[p->alerts.cnt] = det_ctx->alert_queue[i]; SCLogDebug("Appending sid %" PRIu32 " alert to Packet::alerts at pos %u", s->id, i); diff --git a/src/detect-engine.c b/src/detect-engine.c index d6018b1747..07181181d9 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -3174,6 +3174,7 @@ TmEcode DetectEngineThreadCtxInit(ThreadVars *tv, void *initdata, void **data) /** alert counter setup */ det_ctx->counter_alerts = StatsRegisterCounter("detect.alert", tv); det_ctx->counter_alerts_overflow = StatsRegisterCounter("detect.alert_queue_overflow", tv); + det_ctx->counter_alerts_suppressed = StatsRegisterCounter("detect.alerts_suppressed", tv); #ifdef PROFILING det_ctx->counter_mpm_list = StatsRegisterAvgCounter("detect.mpm_list", tv); det_ctx->counter_nonmpm_list = StatsRegisterAvgCounter("detect.nonmpm_list", tv); diff --git a/src/detect.c b/src/detect.c index 4946b75e67..17502da16c 100644 --- a/src/detect.c +++ b/src/detect.c @@ -829,6 +829,7 @@ static DetectRunScratchpad DetectRunSetup( #ifdef UNITTESTS p->alerts.cnt = 0; p->alerts.discarded = 0; + p->alerts.suppressed = 0; #endif det_ctx->filestore_cnt = 0; det_ctx->base64_decoded_len = 0; @@ -940,6 +941,9 @@ static inline void DetectRunPostRules( if (p->alerts.discarded > 0) { StatsAddUI64(tv, det_ctx->counter_alerts_overflow, (uint64_t)p->alerts.discarded); } + if (p->alerts.suppressed > 0) { + StatsAddUI64(tv, det_ctx->counter_alerts_suppressed, (uint64_t)p->alerts.suppressed); + } PACKET_PROFILING_DETECT_END(p, PROF_DETECT_ALERT); } diff --git a/src/detect.h b/src/detect.h index 42e2fbdccb..3f85e03dbf 100644 --- a/src/detect.h +++ b/src/detect.h @@ -1094,8 +1094,10 @@ typedef struct DetectEngineThreadCtx_ { /** id for alert counter */ uint16_t counter_alerts; - /** id for discarded alerts counter**/ + /** id for discarded alerts counter */ uint16_t counter_alerts_overflow; + /** id for suppressed alerts counter */ + uint16_t counter_alerts_suppressed; #ifdef PROFILING uint16_t counter_mpm_list; uint16_t counter_nonmpm_list;