Ad Widget

Collapse

Подсчет количества строк в "логах". Как?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bulbator
    Junior Member
    • Feb 2010
    • 11

    #1

    Подсчет количества строк в "логах". Как?

    Задача:

    Ослеживать кол-во СПАМ-а на почтовом сервере.

    В почтовый лог пишется результат анализа почты на СПАМ. В принципе можно эту информацию получить фильтруя лог по определенным последовательностям символов, но элемент данных log[файл<,regexp><,кодировка><,макс кол-во строк>,<режим>] выдает отфильтрованные по regexp строки. А как получить просто кол-во отфильтрованных строк (типа режим count)?

    Напр. мне нужно сделать 3 счетчика:

    spam=log[файл<,regexp1><,кодировка><,макс кол-во строк>,<режим>]
    maybe_spam=log[файл<,regexp2><,кодировка><,макс кол-во строк>,<режим>]
    not_spam=log[файл<,regexp3><,кодировка><,макс кол-во строк>,<режим>]

    Можно конечно наколхозить скрипт внешней проверки, но как-то оно ИМХО не рационально, когда все, за исключением подсчета, умеет делать агент...

    Или такую задачу можно реализовать как-то по другому? Как?

    Заранее сенькс всем откликнувшимся!
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Я решаю эту задачу через Zabbix Agent
    В /etc/zabbix/zabbix_agentd.conf
    UserParameter=antispam.stat,/etc/zabbix/antispam_stat.pl
    UserParameter=receive_dnsbl,egrep "receive_dnsbl:" /tmp/sendmail_avp_spam.txt|awk '{print $2}'
    UserParameter=receive_dsl_dialup,egrep "receive_dsl_dialup:" /tmp/sendmail_avp_spam.txt|awk '{print $2}'
    UserParameter=receive_rate_connection,egrep "receive_rate_connection:" /tmp/sendmail_avp_spam.txt| awk '{print $2}'
    UserParameter=receive_rate_limit,egrep "receive_rate_limit:" /tmp/sendmail_avp_spam.txt| awk '{print $2}'
    И т.д.
    Также можно писать более красивые выборки данных через параметры UserParameter=stat[*], пример http://www.zabbix.com/forum/showthread.php?t=15691

    Скрипт /etc/zabbix/antispam_stat.pl пишет статистику в файл /tmp/sendmail_avp_spam.txt
    Ключ: Значение

    А дальше я получаю данные из файла /tmp/sendmail_avp_spam.txt вызовами receive_dnsbl и т.д.
    Рекомендую делать именно так, а не использовать функции log, т.к. можно настроить более гибко обработку данных, и ресурсов системы тратится намного меньше, т.к. лог файл читается и обрабатывается только один раз и начиная с места, где закончилась предыдущая обработка (для этого достаточно просто запоминать точку последней обработки и писать её в файл, и читать c начала файла если точка последней обработки больше размера файла, т.е. лог файл отротейтился).
    Last edited by dima_dm; 03-03-2010, 14:50.

    Comment

    • bulbator
      Junior Member
      • Feb 2010
      • 11

      #3
      Originally posted by dima_dm
      Рекомендую делать именно так, а не использовать функции log, т.к. можно настроить более гибко обработку данных, и ресурсов системы тратится намного меньше, т.к. лог файл читается и обрабатывается только один раз и начиная с места, где закончилась предыдущая обработка (для этого достаточно просто запоминать точку последней обработки и писать её в файл, и читать c начала файла если точка последней обработки больше размера файла, т.е. лог файл отротейтился).
      Дык....если раздробить задачу, получается:
      1. Читать лог-файл
      2. фильтровать строки
      3. запоминать место остановки
      4. считать строки

      Пункты с 1 по 3 уже реализованы в агенте, зачем изобретать велосипед? Осталось только посчитать строки....Просто я думал что это реализовано, но хитро спрятано....

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Да, только я считаю 25 и более переменных, а если это делать через функцию log, это 25 операций чтения и обработки логов. И сравните это с 1-й операцией чтения и обработки логов. А логов у меня по 500 Mb в сутки на каждой системе.

        Comment

        • bulbator
          Junior Member
          • Feb 2010
          • 11

          #5
          в принципе логично.....нада мозгу поразминать...

          Comment

          Working...