Ucollect --- filtr pro syslog-ng

V podstate mi to nevadi, ale tak nejak jsem si rikal, ze je zbytecne do logu zapisovat kazdou hodinu podobny blok informaci. Me staci jen ta posledni hlaska ze mempool-stats byl odeslan 2020-10-28 13:59:53 info ucollect[21459]: Mempool stats done a u ostatnich mi staci jen kdyz to zahlasi warning/error/debug …to videt chci.

syslog
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Global temporary pool: 156/4096 (3) 
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Buffer pool for uplink: 4/4096 (1)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Config pool: 4094/8192 (137)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Badconf: 48/4096 (1)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Bandwidth: 2744/4096 (6)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Count: 264/4096 (1)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Fake: 188880/212992 (151)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Fake log: 2986/4096 (107)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Flow: 92/4096 (4)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Flow pool: 12388/16384 (260)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Flow conf pool: 1320113/1388544 (70508)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Fwup: 132/4096 (6)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: FWUp set pool 1: 0/4096 (0)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: FWUp set pool 2: 38097/40960 (1973)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Refused: 104/4096 (3)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Refuse pool 1: 21801/24576 (927)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Refuse pool 2: 0/4096 (0)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Sniff: 44/4096 (3)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Sniffer pool: 0/4096 (0)
2020-10-28 13:59:53 info ucollect[21459]: Mempool stats: Spoof: 224/4096 (1)

Chtel jsem takoveto (obsahujici ": Mempool stats: ") zaznamy odfiltrovat.
filter f_ucollect_1{ not program("ucollect") and not level(info) ); }; v syslog-ng.conf
filter f_ucollect_2 { match(".*Mempool stats.*: .*" value(MESSAGE)); }; v ucolllect-fake.conf
Ale nejak se mi to uplne nedari, kvuli tomu f_iptables filtru rekl bych (a pripadnym vazbam, poradi filtru). Mozna mam i ten “match” spatne, netusim, zkousim.

Kdyz jsem takhle zkousel odfiltrovat “cron” hlasky, tak mi zafungovalo:
filter f_cron { not facility("cron"); }; v syslog-ng.conf , tak jsem si myslel ze podobne udelam not program ("ucollect") …ale bohuzel to nezabralo.

Me tak nejak dycky dostane ta logika default filtru, ktera je tak trosku jako drbani se pravou rukou za levym uchem. A nejsem tak zkusenejch abych pobral vsechny moznosti jak filtry kombinovat a v podstate pokazde sedim u manualu syslog-ng a hledam tu spravnou cestu. Zvlast kdyz k cili vede vicero moznosti.

Kdyby se nasla nejaka chytrejsi hlava, co by me nakopla spravnym smerem budu rad.

zkusil bych ten AND vymenit za OR… ta logika skladani podminek do jednoho filtru mi prijde takova tezko pobratelna a taky vzdycky tapu, co je spravne…

V mem configu jsem nasel treba tohle pravidlo:

filter f_not_fail2ban_found {
    not program("fail2ban.filter") or not level(info) or not match(".*Found .*" value(MESSAGE));
};
1 Like

Diky za popostrceni. Ten “OR” asi byl hlavni renonc. Ale nakonec jsem se inspiroval a pouzil ten tvuj filtr (lehce upraveny samozrejme).

filter f_ucollect { not program("ucollect") or not level(info) or not match(".*Mempool stats:.*" value(MESSAGE));};

Zkusil jsem to otestovat …
logger -p info -t ucollect -s "Mempool stats:" odfiltrovano , ok :slight_smile:
logger -p error -t ucollect -s "Mempool stats:" zalogovano , ok
logger -p debug -t ucollect -s "Mempool stats:" zalogovano , ok
Takze to snad facha. Uvidime az se provede regulerni kolecko. Ocekavam jen zaznam s “Mempool stats done” a zbytek ze neprojde. Uvidime. Kdyztak bych jeste odebral z filtru cast s ‘info’ ;
filter f_ucollect { not program("ucollect") or not match(".*Mempool stats:.*" value(MESSAGE));};

Já taky děkuji za nápovědu pro můj problém (příliš mnoho “notice” oznámení z programu “unbound”) jsem si vytvořil filtr
filter f_unbound { not (program(“unbound”) and level(notice));};

Jak vidíte tu obrácenou logiku jsem vyřešil jedním NOT a závorkami.
V boolean výrazech platí NOT(A and B)= NOT A or NOT B

1 Like