Ad Widget

Collapse

Корректный мониторинг логов и создание триггера

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Danilozavr
    Junior Member
    • Mar 2018
    • 5

    #1

    Корректный мониторинг логов и создание триггера

    Добрый день!

    Пожалуйста, подскажите. Изучил доку и форумы, но видимо чего-то не хватает мне.

    Имеется элемент данных вида:
    log[/opt/tx/log4zabbix/EventLog.log.0,ATM 66 не исполняет,UTF-8,10]

    Я хотел, чтобы при появлении в файле лога записи срабатывало уведомление по нужным пользователям, но триггер не висел в статусе "Проблема"
    Триггер настроен так:
    {host:log[/opt/tx/log4zabbix/EventLog.log.0,ATM 66 не исполняет,UTF-8,10].str(не исполняет)}=1
    Генерация ок события - выражение
    Режим генерации проблема - одиночная

    Но при такой настройке триггер после первого срабатывания не возвращается в состояние ОК.
    Подскажите, что я делаю не так?




    Т.е. выражаясь простым языком я хочу при появлении в журнале лога определенной ошибки - уведомить нужных пользователей, но триггер при этом не висел в ошибке (на Карте сети он отображатеся постоянно, хотя это для меня разовая ошибка)
    Last edited by Danilozavr; 19-03-2018, 15:04.
  • si.iurev
    Junior Member
    • Mar 2018
    • 11

    #2
    Отпишусь сюда же, так как тема вопроса похожая

    Нужно что бы заббикс смотрел лог, и при появлении нового знака вопроса срабатывал тригер

    в элемент данных добавил
    log["C:\ConsUserData\CONS_ERR.txt","\?","UTF-8","100"]

    Тригер
    {host:log["C:\ConsUserData\CONS_ERR.txt","\?","UTF-8","100"].str(\?)}=1

    Проблема не только что он не срабатывает, он срабатывает но как то рандомно, как ему придет в голову, может пол часа висеть сработавший триггер, хотя условия уже не выполняются


    Для того что бы он не срабатывал по старому знаку вопроса пытался добавить элемент "skip"

    в итоге в ЭД выражение выглядело вот так
    log["C:\ConsUserData\CONS_ERR.txt","\?","UTF-8","skip","100"] но тогда он совсем перестает работать и отображает ошибку

    В чем может быть ошибка ?

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Ваш триггер проверяет наличие строки "не исполняет" в последней записи айтема, но поскольку, согласно настройке айтема, в него только такие записи из лога и попадают, триггер после появления первой записи будет гореть вечно. Попробуйте вместо .str(не исполняет)=1 использовать, например, .nodata(1m)=0. Триггер погаснет через минуту.

      Comment

      • si.iurev
        Junior Member
        • Mar 2018
        • 11

        #4
        не совем так
        в лог пишутся разные данные

        пример лога

        11.07.17 11:30:19 [4016.00.36.236772] (dl) pid:00000efc, tid:00000c44
        ошибка: 244
        вам не предоставлены права на доступ к систем

        26.02.18 04:06:59 [4017.00.21.298015] (dl) pid:00000c68, tid:00000d3c
        прервано пользователем

        27.02.18 04:10:14 [4017.00.21.298015] (dl) pid:00000f08, tid:00000b0c
        начало мультиоперации


        27.02.18 04:10:16 [4017.00.21.298015] (dl) pid:00000f08, tid:00000b0c
        на диске c: свободно 9999 мб.
        для выполнения данной операции
        необходимо не менее 12265 мб.
        продолжить?

        27.02.18 04:10:16 [4017.00.21.298015] (dl) pid:00000f08, tid:00000b0c
        прервано пользователем

        28.02.18 04:13:55 [4017.00.21.298015] (dl) pid:00000e08, tid:00000dc8
        начало мультиоперации


        из этого нужно выцепить вот это сообщение

        27.02.18 04:10:16 [4017.00.21.298015] (dl) pid:00000f08, tid:00000b0c
        на диске c: свободно 9999 мб.
        для выполнения данной операции
        необходимо не менее 12265 мб.
        продолжить?

        русские символы у меня скуль не воспринимает

        единственный не динамический знак и не русский символ и не имеющийся в других строках лога, это - знак вопроса

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          То, что в логе разные записи, это понятно, но вы ведь регуляркой в айтеме уже отфильтровали все те, которые без "?", поэтому в айтеме - только они, и проверять в триггере наличие "?" нет смысла, надо просто ловить появление новых записей.

          Comment

          • si.iurev
            Junior Member
            • Mar 2018
            • 11

            #6
            Какие могут быть подводные камни ?

            Изменил триггер на {localhost:log["C:\ConsUserData\CONS_ERR.txt","\?","UTF-8","100"].nodata(1m)}=0
            Теперь по идее при появлении в логе строки в которой есть знак вопроса он должен срабатывать
            Но он не срабатывает

            Если выставить
            ...nodata(1m)}=1
            То триггер сработает но зависает в этой позиции, а отсюда вывод что данные из файла он считывает

            Почему не срабатывает nodata(1m)}=0, вот в чем вопрос

            Comment

            • si.iurev
              Junior Member
              • Mar 2018
              • 11

              #7
              В итоге выяснилось что проблема в знаке вопроса который заббикс своеобразно интерпритирует даже экранированным
              При подставлении алфавитных символов отрабатывает как надо

              Comment

              • Danilozavr
                Junior Member
                • Mar 2018
                • 5

                #8
                Originally posted by Semiadmin
                Ваш триггер проверяет наличие строки "не исполняет" в последней записи айтема, но поскольку, согласно настройке айтема, в него только такие записи из лога и попадают, триггер после появления первой записи будет гореть вечно. Попробуйте вместо .str(не исполняет)=1 использовать, например, .nodata(1m)=0. Триггер погаснет через минуту.
                Добрый день!
                Спасибо за ответ.
                Видимо, я не совсем правильно понимаю работу мониторинга логов.
                Т.е. правильным решением будет использование
                {hostname:log[/opt/tx/log4zabbix/EventLog.log.0,ATM 66 не исполняет,UTF-8,10].nodata(1m)}=0 ?
                В переводе на обычный - триггер сработает, если в логе за последнюю минуту появится строка ATM 66 не исполняет?

                Comment

                • Semiadmin
                  Senior Member
                  • Oct 2014
                  • 1625

                  #9
                  Originally posted by Danilozavr
                  Видимо, я не совсем правильно понимаю работу мониторинга логов.
                  Просто надо понять разницу между самим логом и айтемом Zabbix, в который вы пишете лог. Т.к. у вас в айтеме указана регулярка, в ваш айтем попадают не все записи из лога, а только нужные вам. А уже для айтема вы делаете триггер.

                  Comment

                  • Danilozavr
                    Junior Member
                    • Mar 2018
                    • 5

                    #10
                    Originally posted by Semiadmin

                    Просто надо понять разницу между самим логом и айтемом Zabbix, в который вы пишете лог. Т.к. у вас в айтеме указана регулярка, в ваш айтем попадают не все записи из лога, а только нужные вам. А уже для айтема вы делаете триггер.
                    То есть, если я делаю что то вроде
                    {hostname:log[/opt/tx/log4zabbix/EventLog.log.0,ATM 66 не исполняет,UTF-8,10].str(не исполняет)}=1
                    То всегда триггер срабатывает и не уходит из состояния ПРОБЛЕМА, так как в строке всегда есть "не исполняет"

                    А если я сделаю что то вроде
                    {hostname:log[/opt/tx/log4zabbix/EventLog.log.0*,UTF-8,10].str(не исполняет)}=1
                    То в таком случае триггер будет срабатывать , если в новых строках будет фраза "не исполняет" и будет возвращатсья в ОК если в новой строке не будет фразы "не исполняет"
                    До меня правильно дошло?

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      Правильно. Только иногда следующую запись приходится ждать долго, так что может иметь смысл еще и дополнительное условие and .nodata(1m)=0. Тогда триггер закроется или записью без фразы "не исполняет", или через минуту.

                      Comment

                      Working...