From 624db7510f6ea5fb4056b2c82a9226f3bc957826 Mon Sep 17 00:00:00 2001 From: byrsapty Date: Thu, 23 Jul 2026 15:57:29 +0300 Subject: [PATCH] Refine DHCP filter to always keep error:/warn: lines Dropping every "[DHCPv4 " line unconditionally would also swallow a genuine DHCP-side problem (pool exhaustion, lease timeout) if accel-ppp ever logs one at error/warn level. Verified the refined condition against sample lines before writing it: plain info-level DHCP still drops, RADIUS lines are unaffected, and DHCP lines tagged error:/warn: now pass through. Co-Authored-By: Claude Sonnet 5 --- vector-accel-ppp-setup.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/vector-accel-ppp-setup.md b/vector-accel-ppp-setup.md index 47b1751..b799cd3 100644 --- a/vector-accel-ppp-setup.md +++ b/vector-accel-ppp-setup.md @@ -153,21 +153,25 @@ мережевий трафік, ні дисковий IO/CPU Graylog на індексацію того, що однаково ніхто не шукає. -Додайте `filter`-transform між `format_for_graylog` і `sinks`: +Додайте `filter`-transform між `format_for_graylog` і `sinks`. Умова +навмисно **не** дропає DHCP-рядки, якщо вони позначені як `error:` чи +`warn:` — щоб реальна проблема (наприклад, вичерпання DHCP-пулу чи +таймаут оренди) не загубилась разом зі звичайним шумом: ```yaml transforms: format_for_graylog: # ... як у кроці 2, без змін ... - # Прибирає DHCP-обмін (Discover/Request/Offer/Ack) - основний обсяг - # шуму, не потрібний для RADIUS/accounting-аналітики. Умова true = - # повідомлення проходить далі; тут - "якщо НЕ містить маркер DHCPv4". + # Прибирає рутинний DHCP-обмін (Discover/Request/Offer/Ack), АЛЕ + # залишає DHCP-рядки, позначені error:/warn: - щоб не втратити реальну + # проблему (вичерпання пулу, таймаут оренди тощо) разом зі звичайним + # шумом. Умова true = повідомлення проходить далі. drop_dhcp_noise: type: "filter" inputs: - "format_for_graylog" - condition: '!contains(string!(.message), "[DHCPv4 ")' + condition: '!contains(string!(.message), "[DHCPv4 ") || contains(string!(.message), "error:") || contains(string!(.message), "warn:")' sinks: graylog_out: