Ad Widget

Collapse

eventlog[logname] - выборочный импорт и триггер

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • uconnect
    Junior Member
    • Apr 2010
    • 10

    #1

    eventlog[logname] - выборочный импорт и триггер

    Добрый день!
    Настроил импорт лога = eventlog[Security,,,,529]
    Получаю:
    ------------------------------------------------------------------------
    ay.26 10:14:54] 2010.May.26 09:40:41 Security Ошибочный аудит 529 Сбой входа в систему:

    Причина: неизвестное имя пользователя или неверный пароль

    Пользователь: ГГГГГГГГГГГГГГГ

    Домен: НННННННННННН

    Тип входа: 10

    Процесс входа: User32

    Пакет проверки: Negotiate

    Рабочая станция: ХХХХХХХХХХ
    --------------------------------------------------
    Вопросы:
    1. - как настроить импорт нескольких событий? eventlog[Security,,,,529;530] (как пример - не катит)
    2. - Как настроить импорт не конкретного события, а "Security Ошибочный аудит "?
    3. - Как настроить триггер, чтобы при появлении любой новой записи в данном журнале он срабатывал?

    Заранее спасибо
  • uconnect
    Junior Member
    • Apr 2010
    • 10

    #2
    Originally posted by uconnect
    \
    2. - Как настроить импорт не конкретного события, а "Security Ошибочный аудит "?
    Заранее спасибо
    Вычислил, что у "Ошибочного аудита" severity = 7
    Настроил триггер = {Template_Eventviewer:eventlog[Application].logseverity(7)}=7
    .............
    Не срабатывает. Где грабли?
    Заранее спасибо

    Comment

    • des
      Junior Member
      • May 2009
      • 26

      #3
      Originally posted by uconnect
      Вычислил, что у "Ошибочного аудита" severity = 7
      Настроил триггер = {Template_Eventviewer:eventlog[Application].logseverity(7)}=7
      .............
      Не срабатывает. Где грабли?
      Заранее спасибо
      Где - то на сайте находил информацию:
      1 - information
      2 - warning
      4 - high
      8 - security

      А чтобы значение тригера пересчитывалось, нужно добавить nodata(30).
      например:
      {Tmpl Windows Eventlog:eventlog[application].logseverity(4)}=4&{Tmpl Windows Eventlog:eventlog[application].nodata(30)}=0

      Comment

      • uconnect
        Junior Member
        • Apr 2010
        • 10

        #4
        Originally posted by des
        Где - то на сайте находил информацию:
        1 - information
        2 - warning
        4 - high
        8 - security
        severity=7 в событиях "Ошибочного аудита" при просмотре таблицы "history_log" в БД "Zabbix_DB".
        А за nodata - спасибо...
        Только триггер у меня ни разу не срабатывает

        Comment

        • avtor01
          Junior Member
          • May 2010
          • 5

          #5
          Originally posted by uconnect
          Вопросы:
          1. - как настроить импорт нескольких событий? eventlog[Security,,,,529;530] (как пример - не катит)
          При создании элемента данных в подсказке написано:
          Monitoring of Windows event logs. pattern, severity, eventid - regular expressions
          Из чего делаю вывод, что для этих полей можно использовать регулярные выражения.

          Например, я создал item для сбора событий с важностью "ошибка" и "предупреждение":
          Code:
          eventlog[application,,Error|Warning,,,20]

          Comment

          • zalex_ua
            Senior Member
            Zabbix Certified Trainer
            Zabbix Certified SpecialistZabbix Certified Professional
            • Oct 2009
            • 1286

            #6
            Originally posted by des
            Где - то на сайте находил информацию:
            1 - information
            2 - warning
            4 - high
            8 - security
            Дополнение и уточнение:

            1 - information
            2 - warning
            4 - error
            7 - AUDIT_FAILURE
            8 - AUDIT_SUCCESS



            Originally posted by des
            А чтобы значение тригера пересчитывалось, нужно добавить nodata(30).
            например:
            {Tmpl Windows Eventlog:eventlog[application].logseverity(4)}=4&{Tmpl Windows Eventlog:eventlog[application].nodata(30)}=0
            Использовать nodata(30) - помогает но в некоторых случаях может и навредить

            logseverity(4) - тоже не совсем правильно, это значит если четвертое с конца событие будет уровня ошибки то тогда стаботает тригер, нужно logseverity(0) - тогда это будет анализироваться последнее пришедшее событие
            добавлено: Как оказалось позже - последнее сказанное выше не соответствует действительности !!!
            На странице документации Элементы данных в примерах добавлено несколько реальных примеров
            Last edited by zalex_ua; 30-06-2010, 23:27.

            Comment

            • Anth0ny
              Member
              • Nov 2009
              • 85

              #7
              Originally posted by zalex_ua
              logseverity(4) - тоже не совсем правильно, это значит если четвертое с конца событие будет уровня ошибки то тогда стаботает тригер, нужно logseverity(0) - тогда это будет анализироваться последнее пришедшее событие
              Только что проверил данную формулу на практике и позволю себе не согласиться...

              если изменить (4) на (0), то не улучшается, а принципиально меняется эффект от обработки таким триггером. получается, что при генерации подряд нескольких сообщений (например с id 1,2,3,4) в винлоге обрабатывается (через Actions) только первое 1 (получается PROBLEM) и последнее 4 (получается ОК). т.е. обрабатываются первое и последнее в порядке их поступления в заббикс и генерации эвентов.

              1 - problem -> 2 - problem -> 3 - problem -> 4 - problem -> 1 - ok -> 2 - ok -> 3 - ok -> 4 - ok

              {01server:eventlog[Application,,Error|Warning,,,200].logseverity(0)}=4&{01server:eventlog[Application,,Error|Warning,,,200].nodata(30)}=0
              Last edited by Anth0ny; 23-06-2010, 15:51.

              Comment

              • zalex_ua
                Senior Member
                Zabbix Certified Trainer
                Zabbix Certified SpecialistZabbix Certified Professional
                • Oct 2009
                • 1286

                #8
                Originally posted by Anth0ny
                позволю себе не согласиться...
                не буду спорить - пока сам разбираюсь,
                Но документация http://www.zabbix.com/documentation/...onfig/triggers говорит что Returns log severity of the last log entry. Parameter is ignored.
                Представитель девелоперов Richlv прояснить ситуацию не может - не работает с виндовсом вообще.
                Наверное в предыдущем посте я ошибался...

                Мой ключ eventlog[Test]
                Мот триггер {it2:eventlog[Test].logseverity(0)}=4

                У меня лично любое число (0),(4),(99) или просто () дает всегда одинаковый результат - тригер срабатывает. Если приходит событие с уровнем 1 INFORMATION - тригер переходит в состояние ОК.

                Как возникают записи у тебя в журнале событий? Я вот например генерирую произвольно с командной строки (в журнал Test) что мне нужно и когда нужно - это дает возможность делать точные эксперименты.

                Вот дебаглевел4 сервера при обработке события ЕРРОР с разными тригерами.

                Триггер {it2:eventlog[Test].logseverity(4)}=4

                Code:
                 59649:20100630:004225.693 In DCmass_update_triggers()
                 59649:20100630:004225.693 Query [txnlev:1] [select distinct t.triggerid,t.type,t.value,t.error,t.expression,f.itemid from triggers t,functions f,items i where i.status not in (3) and i.itemid=f.itemid and t.status=0 and f.triggerid=t.triggerid and f.itemid in (24164) order by t.triggerid]
                 59649:20100630:004225.694 In evaluate_expression() expression:'{13090}=4'
                 59649:20100630:004225.694 In substitute_simple_macros (data:'{13090}=4')
                 59649:20100630:004225.694 End substitute_simple_macros (result:'{13090}=4')
                 59649:20100630:004225.694 In substitute_functions({13090}=4)
                 59649:20100630:004225.694 Query [txnlev:1] [select distinct i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.type,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.hostid,i.value_type,i.delta,i.prevorgvalue,i.lastclock,i.units,i.multiplier,i.formula,i.status,i.valuemapid,h.dns,i.trends,i.lastlogsize,i.data_type,i.mtime,f.function,f.parameter from hosts h,items i,functions f where i.hostid=h.hostid and i.itemid=f.itemid and f.functionid=13090]
                 59649:20100630:004225.695 In substitute_simple_macros (data:'eventlog[Test]')
                 59649:20100630:004225.695 In evaluate_function('it2:eventlog[Test].logseverity(4)')
                 59649:20100630:004225.695 In evaluate_LOGSEVERITY()
                 59649:20100630:004225.695 Query [txnlev:1] [select severity from history_log where itemid=24164 order by id desc limit 1]
                 59649:20100630:004225.696 End of evaluate_LOGSEVERITY():SUCCEED
                 59649:20100630:004225.696 End of evaluate_function('it2:eventlog[Test].logseverity(4)',value:'4'):SUCCEED
                 59649:20100630:004225.696 End substitute_functions() [4=4]
                 59649:20100630:004225.696 In evaluate() expression:'4=4'
                 59649:20100630:004225.696 In evaluate_simple(4=4)
                 59649:20100630:004225.696 In evaluate_simple(4)
                 59649:20100630:004225.696 In evaluate_simple(4)
                 59649:20100630:004225.697 End of evaluate() value:1.000000
                 59649:20100630:004225.697 evaluate_expression() result:1
                 59649:20100630:004225.697 End of evaluate_expression():SUCCEED
                 59649:20100630:004225.697 In update_trigger_value() triggerid:13607 old:2 new:1 now:1277847740
                 59649:20100630:004225.697 In trigger_dependent(triggerid:13607)
                 59649:20100630:004225.697 In trigger_dependent_rec(triggerid:13607,level:0)
                Триггер {it2:eventlog[Test].logseverity(0)}=4

                Code:
                 55942:20100630:003541.449 In DCmass_update_triggers()
                 55942:20100630:003541.449 Query [txnlev:1] [select distinct t.triggerid,t.type,t.value,t.error,t.expression,f.itemid from triggers t,functions f,items i where i.status not in (3) and i.itemid=f.itemid and t.status=0 and f.triggerid=t.triggerid and f.itemid in (24164) order by t.triggerid]
                 55942:20100630:003541.450 In evaluate_expression() expression:'{13088}=4'
                 55942:20100630:003541.450 In substitute_simple_macros (data:'{13088}=4')
                 55942:20100630:003541.450 End substitute_simple_macros (result:'{13088}=4')
                 55942:20100630:003541.450 In substitute_functions({13088}=4)
                 55942:20100630:003541.450 Query [txnlev:1] [select distinct i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.type,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.hostid,i.value_type,i.delta,i.prevorgvalue,i.lastclock,i.units,i.multiplier,i.formula,i.status,i.valuemapid,h.dns,i.trends,i.lastlogsize,i.data_type,i.mtime,f.function,f.parameter from hosts h,items i,functions f where i.hostid=h.hostid and i.itemid=f.itemid and f.functionid=13088]
                 55942:20100630:003541.451 In substitute_simple_macros (data:'eventlog[Test]')
                 55942:20100630:003541.451 In evaluate_function('it2:eventlog[Test].logseverity(0)')
                 55942:20100630:003541.451 In evaluate_LOGSEVERITY()
                 55942:20100630:003541.451 Query [txnlev:1] [select severity from history_log where itemid=24164 order by id desc limit 1]
                 55942:20100630:003541.451 End of evaluate_LOGSEVERITY():SUCCEED
                 55942:20100630:003541.451 End of evaluate_function('it2:eventlog[Test].logseverity(0)',value:'4'):SUCCEED
                 55942:20100630:003541.451 End substitute_functions() [4=4]
                 55942:20100630:003541.451 In evaluate() expression:'4=4'
                 55942:20100630:003541.451 In evaluate_simple(4=4)
                 55942:20100630:003541.451 In evaluate_simple(4)
                 55942:20100630:003541.452 In evaluate_simple(4)
                 55942:20100630:003541.452 End of evaluate() value:1.000000
                 55942:20100630:003541.452 evaluate_expression() result:1
                 55942:20100630:003541.452 End of evaluate_expression():SUCCEED
                 55942:20100630:003541.452 In update_trigger_value() triggerid:13607 old:2 new:1 now:1277847337
                 55942:20100630:003541.452 In trigger_dependent(triggerid:13607)
                 55942:20100630:003541.452 In trigger_dependent_rec(triggerid:13607,level:0)
                Как видим разницы нету. А вот как ведет себя сервер при получении сразу пачки событий - это уже другой вопрос.

                Если рассмотреть функцию Function: evaluate_LOGSEVERITY в файле "src\libs\zbxserver\evalfunc.c" то еще более удостоверяешся - запрашивается severity по последнему событию существующему в таблице history_log по этому элементу данных.

                Code:
                /******************************************************************************
                 *                                                                            *
                 * Function: evaluate_LOGSEVERITY                                             *
                 *                                                                            *
                 * Purpose: evaluate function 'logseverity' for the item                      *
                 *                                                                            *
                 * Parameters: item - item (performance metric)                               *
                 *             parameter - ignored                                            *
                 *                                                                            *
                 * Return value: SUCCEED - evaluated successfully, result is stored in 'value'*
                 *               FAIL - failed to evaluate function                           *
                 *                                                                            *
                 * Author: Alexei Vladishev                                                   *
                 *                                                                            *
                 * Comments:                                                                  *
                 *                                                                            *
                 ******************************************************************************/
                static int	evaluate_LOGSEVERITY(char *value, DB_ITEM *item, const char *function, const char *parameters, time_t now)
                {
                	const char	*__function_name = "evaluate_LOGSEVERITY";
                	DB_RESULT	result;
                	DB_ROW		row;
                	char		sql[128];
                	int		res = FAIL;
                
                	zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name);
                
                	if (item->value_type != ITEM_VALUE_TYPE_LOG)
                		goto clean;
                
                	zbx_snprintf(sql, sizeof(sql),
                			"select severity"
                			" from history_log"
                			" where itemid=" ZBX_FS_UI64
                			" order by id desc",
                			item->itemid);
                
                	result = DBselectN(sql, 1);
                
                	if (NULL == (row = DBfetch(result)) || DBis_null(row[0]) == SUCCEED)
                		zabbix_log(LOG_LEVEL_DEBUG, "Result for LOGSEVERITY is empty" );
                	else
                	{
                		strcpy(value, row[0]);
                		res = SUCCEED;
                	}
                	DBfree_result(result);
                clean:
                	zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(res));
                
                	return res;
                }
                это же прекрасно видно в реальном SQL-запросе представленого выше дебаг-лога.
                Это уже интересней и пора искать правильное решение.

                Anth0ny, я к тебе стучусь в личку, почту - а в ответ тишина. Будем кооперироваться для тюнинга обработки журналов Виндовс или нет?

                Comment

                • Anth0ny
                  Member
                  • Nov 2009
                  • 85

                  #9
                  Будем, непременно! =)
                  Но я думаю что почтовое решение данной проблемы- не самое лучшее.

                  Мы же не только для себя это делаем, а значит нужно подключать общественность, вдруг в процессе конструктивного спора проявится TRUE?

                  Поэтому предлагаю продолжить дискуссию здесь, вот только тему нужно переименовать во чтото более говорящее, например "Возможности и практическое применение eventlog[]".

                  Что касаемо записей то я их тоже генерирую из комстроки в разные логи и с разным severity (вот пример для log\severity\source\eventid = System\Error\Bugaga\999):

                  eventcreate /L System /T Error /SO "Bugaga" /ID 999 /D "(%RANDOM%) [E] The quick brown fox jumps over the lazy dog."

                  Comment

                  • zalex_ua
                    Senior Member
                    Zabbix Certified Trainer
                    Zabbix Certified SpecialistZabbix Certified Professional
                    • Oct 2009
                    • 1286

                    #10
                    использование переменных в тексте события %date% %time% также может быть полезным - штамп времени с точность до сотых долей секунды.
                    Я делаю вот так
                    eventcreate /L Test /T ERROR /SO TestSRC /ID 040 /D "Text for test 040. Timestamp %date% - %time%"
                    Кстати если есть необходимость генерировать событие с EventID больше 1000 - есть сторонняя утилита также для командной строки. Если нужно - стучитесь в личку.

                    Comment

                    Working...