>Вот этот этам меня и интересует в настоящее время ;)
Детально писать в конфе что и зачем в рулезах, как писать скрипт и т.п. слишком долго, скажу в кратце о....
....граблях srl (те, что я знаю) :
1. в ряде случаев некорректно отрабатывает компиляция конструкций
IF
ELSE IF
ELSE
Если не хотите геморроя, то пользуйте только IF-ELSE
2. Конструкции типа IF a==1 && b==2 лучше заменять на аналогичные
IF a==1
IF b==2
или же если совсем в немоготу и логическое И все же нужно, то перед
каждой командой COUNT, IGNORE и NOMATCH вставляйте строку
optimise 1;
У srl очень криво написан процесс построения условий содержащих && и процедура оптимизации (тоже весьма кривая) запускающаяся при втором проходе иногда некорректно удаляет лишние переходы. Чтобы это преодолеть
автор на ура отключает оптимизацию (srl-emit.c строка 653
emit_opt_level(0); /* Mark break between expressions to be optimised */ )
и далее забывает ее включить. В итоге рулесы оказываются неоптимизировнными и при загрузке правил немак злобно
ругается на строки, которые никогда не будут выполняться. Хотя
работать правила все же будут и теоретически на это мона забить, но
это ИМХО не совсем правильно :)
.... и основных принципах написания самих рулесов:
1. каждый пакетик флова индивидуально обрабатывается правилами. Обработка
завершается по команде COUNT IGNORE NOMATCH. Все что стоит после них
ВЫПОЛНЯТЬСЯ НЕ БУДЕТ и srl и немак будут ругаться на наличие
неиспользуемого кода.
2. COUNT вносит флов в память коллектора отведенную под счетчики (и
потом его от туда вычитывает ридер), IGNORE отбрасывает флов и он
нигде не посчитается, NOMATСH меняет местами все соурс и дест,
значения входящего/исходящего траффа и т.п., также ОБНУЛЯЕТ все
служебные переменные и запускает обработку "перевернутого" флова с
самого начала. Была ли выполнена команда NOMATСH можно определить
по переменной MatchingStoD, она равна 0 если было NOMATСH иначе 1
3. По умолчанию ряд параметров (соурс/дест адрес,порт,интерфей и т.п.)
не пишутся и если не сказать SAVE то в логе получите нули. Чем
большим параметрам скажете SAVE, тем больше будет лог, больше памяти
потребуется коллектору под рулесы и сложнее будет скрипт все это
разгребающий. Сохраняйте только то, что Вам действительно нужно.
Например если Вас интересует трафф например на 110 порт, то нет
смысла сохранять порт с которого пришел траффик т.к. почтовый клиент
его юзает динамически, будет выделена целая куча каунтеров для
хранения, куча записей в логе, а смысл хранить эту информацию
практически равен нулю. Или если вас интересует какой из ваших хостов
сколько нажег траффа но не интересна раскладка куда, то не сохраняйте
адреса если они не принадлежат вашим хостам. В итоге файл флова будет
содержать нужную вам инфу и весить при этом на порядок меньше.
4. Весь разбор трафика делайте правилами коллектора, выставляя
соответствующие признаки в служебных переменных и сохраняя нужные из
них (достаточно просто включить в описание формата). А скриптом уже
суммируйте нужные дельты исходя из значения сохраненной(ых) служебных
переменных
Удачи !