Ad Widget

Collapse

Триггер на мониторинг лог-файла

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • a_a_v
    Junior Member
    • Feb 2013
    • 5

    #1

    Триггер на мониторинг лог-файла

    Добрый день, хотелось бы услышать Ваше мнение по данному вопросу и получить помощь:
    Есть zabbix-сервер, который с помощью active-checks смотрит в лог на linux-сервере, генерируемый приложением.
    В этом логе он ищет строку, и если она ему попадается, выдает PROBLEM.
    Вот так выглядит Item:

    Host: MyHost
    Name: MyName
    Type: Zabbix agent (active)
    Key:log["/var/log/check.log","WARN","UTF-8","100"]
    Type of information: log
    Upd Interval 30 sec


    К этому Item я привязываю триггер: (если найдена строка WARN, то сработать)

    {Hostname:log["/var/log/check.log","WARN","UTF-8","100"].str(WARN)}=1

    Триггер нормально отрабатывает и присылает почту, но не возвращается в значение ОК, если в логе строки WARN нет. (По логике работы приложения после WARN оно останавливается, требует ручного перезапуска и очищает лог перед стартом, соответственно, заббикс считает алерт активным и повторно мыло не отсылает). Подскажите пожалуйста, как заставить Zabbix возвращать триггер в ОК, перерыл кучу информации на форуме, но ничего конкретного не нашел, а то, что нашел не помогло.

    Спасибо!
  • RPovorov
    Junior Member
    • Jan 2013
    • 20

    #2
    насколько я вижу (а я сам только-только начал работать с zabbix ) твой итем раз в 30 сек проверяет лог файл и забирает себе логи со строчкой warn. соответственно итем хранит только записи с этой строкой.
    Функция str(WARN) проверяет есть ли строка warn в последнем значении - а она всегда там есть, следовательно вечное состояние ПРОБЛЕМА.


    Насколько я понимаю тебе нужно проверять просто наличие нужных записей за последнее время функцией nodata(<сек>). если запись есть - триггер переходит в проблема и шлет мыло, если после этого за указанное время записей не появилось переходит в ОК.

    {Hostname:log["/var/log/check.log","WARN","UTF-8","100"].nodata(30)}#1 как то так. проверяет не появились ли значение за последние 30 сек, если появилось - проблема, если нет - все ок.
    Last edited by RPovorov; 15-02-2013, 12:14.

    Comment

    • a_a_v
      Junior Member
      • Feb 2013
      • 5

      #3
      Originally posted by RPovorov
      насколько я вижу (а я сам только-только начал работать с zabbix ) твой итем раз в 30 сек проверяет лог файл и забирает себе логи со строчкой warn. соответственно итем хранит только записи с этой строкой.
      Функция str(WARN) проверяет есть ли строка warn в последнем значении - а она всегда там есть, следовательно вечное состояние ПРОБЛЕМА.
      Нет, строка warn удаляется при перезапуске утилиты, лог-файл отправляется в dev\null и обнуляется.
      По поводу nodata:
      я добавил
      & {Myhost:log["/var/log/check.log","WARN","UTF-8","100","skip"].nodata(600)}=0
      что сбрасывает триггер в состояние OK через 10 минут, но это не решает проблемы.
      Хочется понять, как сделать триггер, чтобы он возвращался в ОК, если warn в логе нет, а не шаманить =)

      Comment

      • RPovorov
        Junior Member
        • Jan 2013
        • 20

        #4
        Нет, строка warn удаляется при перезапуске утилиты, лог-файл отправляется в dev\null и обнуляется.
        это в логе на сервере, а в значениях итема, эти данные остаются => функуця str(WARN) их вернет => состояние проблема ...

        & {Myhost:log["/var/log/check.log","WARN","UTF-8","100","skip"].nodata(600)
        первое условие(которое до &) вообще не нужно, триггер обрабатывает не лог файл на сервере, а значения в итеме. А если в итеме появилось новое значение, значит на сервере появилось событие со строкой "warn", разве не логично?

        Хочется понять, как сделать триггер, чтобы он возвращался в ОК, если warn в логе нет, а не шаманить =)
        мне тоже хочется... я бы тогда не шаманил с eventlogs виндовыми

        Comment

        • a_a_v
          Junior Member
          • Feb 2013
          • 5

          #5
          Будем надеяться, что кто-нибудь просвятит нас по этому вопросу.

          Comment

          • raimond
            Junior Member
            • Mar 2017
            • 8

            #6
            Originally posted by a_a_v
            Будем надеяться, что кто-нибудь просвятит нас по этому вопросу.
            Тоже долго искал, в результате решено было следующим способом:

            {Host:log[/var/log/!remote/192.168.23.1/syslog.log,"critical|error",,1,,].regexp(error)}<>0 and {Host:log[/var/log/!remote/192.168.23.1/syslog.log,"critical|error",,1,,].nodata(20)}<>1


            Т.е. появилось событие в Item и за последние 20 секунд были получены новые данные. При следующей проверке триггер перейдет в состояние OK, т.к. за последние 20 секунд новых данных получено не было.

            Comment

            • a_a_v
              Junior Member
              • Feb 2013
              • 5

              #7
              Originally posted by raimond
              Тоже долго искал, в результате решено было следующим способом:

              {host:log[/var/log/!remote/192.168.23.1/syslog.log,"critical|error",,1,,].regexp(error)}<>0 and {host:log[/var/log/!remote/192.168.23.1/syslog.log,"critical|error",,1,,].nodata(20)}<>1


              Т.е. появилось событие в item и за последние 20 секунд были получены новые данные. При следующей проверке триггер перейдет в состояние ok, т.к. за последние 20 секунд новых данных получено не было.
              Не ожидал спустя 4 года найти данную тему первым запросом в гугле.
              Спасибо

              Comment

              Working...