Ad Widget

Collapse

Генерация Ok Событий

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Dr759123
    Member
    • Oct 2021
    • 30

    #1

    Генерация Ok Событий

    Добрый день. Имею работающий триггер реагирующий на неправильный ввод пароля при авторизации через консоль, все работает замечательно, единственный минус проблему нужно закрывать вручную. Подскажите как закрывать проблему автоматически. Пробовал делать выражение восставноления для тригера
    find(/debianZabbix/log[/var/log/auth.log,"FAILED LOGIN"],1m,"like","FAILED LOGIN")=0
    Но оно не отрабатывает. Подскажите где ошибаюсь ?

    Элемент Данных.
    Click image for larger version

Name:	элемент данных.jpg
Views:	126
Size:	279.5 KB
ID:	433971Триггер, реагирующий на неправильный ввод пароля при подключении через console.
    Click image for larger version

Name:	тригер.jpg
Views:	125
Size:	280.9 KB
ID:	433972

    Attached Files
  • Answer selected by Kos at 09-11-2021, 12:54.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Ваша проблема в том, что триггер пересчитывается только каждый раз по приходу нового значения. У вас условие триггера - искать там строку, содержащую фразу "FAILED LOGIN".
    Однако, сам элемент данных (см. второй параметр ключа) изначально содержит фильтр, согласно которому на сервер отсылаются только строки, содержащие эту фразу.
    Таким образом, на сервер агентом всегда отсылаются только строки, на которые надо срабатывать, поэтому (согласно условию триггера) он, сработав один раз, всегда в этом положении и остаётся.

    В принципе, можно так и оставить, если вариант "закрывать проблему каждый раз вручную" устраивает.
    В противном случае нужно определиться, что будет тем критерием, по которому нужно проблему закрывать автоматически, от этого зависит решение.
    Например:
    • закрывать проблему, когда в лог пришли какие-то ещё сообщения, которые не содержат указанной фразы. Тогда надо просто убрать второй параметр из ключа элемента данных, чтобы на сервер пересылались все строки лога. Как вариант - подкорректировать этот параметр, чтобы на сервер пересылались не все, а только некоторые строки лога; но при этом важно, чтобы под такой фильтр подпадали не только строки с фразой "FAILED LOGIN", но и хотя бы какие-то ещё (по которым проблема и будет закрываться).
    • закрывать проблему по таймеру. Один из самых простых вариантов: в этом случае ключ элемента данных менять не надо, а условие триггера переписать с помощью триггерной функции nodata() таким образом, чтобы он срабатывал только для данных, которые пришли не более N минут назад. Тогда через N минут проблема закроется сама, т.к. при использовании временнЫх функций (nodata(), в частности) условие триггера пересчитывается не только по приходу каждого нового значения, но и просто по таймеру каждые 30 секунд. И рано или поздно условие nodata() перестанет выполняться, в результате чего проблема будет закрыта.

    Comment

    • Alex_UUU
      Senior Member
      • Dec 2018
      • 541

      #2
      А данные то новые поступают? Где нет "файлед логин"? Хотя в триггере указан временной интервал.
      Но получается, что данных нет, а триггер пытается их найти. Что-т мне подсчказывает, что он в данном случае берет последнее пришедшее значение.
      Лучше поставь nodata(1m)

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #3
        Ваша проблема в том, что триггер пересчитывается только каждый раз по приходу нового значения. У вас условие триггера - искать там строку, содержащую фразу "FAILED LOGIN".
        Однако, сам элемент данных (см. второй параметр ключа) изначально содержит фильтр, согласно которому на сервер отсылаются только строки, содержащие эту фразу.
        Таким образом, на сервер агентом всегда отсылаются только строки, на которые надо срабатывать, поэтому (согласно условию триггера) он, сработав один раз, всегда в этом положении и остаётся.

        В принципе, можно так и оставить, если вариант "закрывать проблему каждый раз вручную" устраивает.
        В противном случае нужно определиться, что будет тем критерием, по которому нужно проблему закрывать автоматически, от этого зависит решение.
        Например:
        • закрывать проблему, когда в лог пришли какие-то ещё сообщения, которые не содержат указанной фразы. Тогда надо просто убрать второй параметр из ключа элемента данных, чтобы на сервер пересылались все строки лога. Как вариант - подкорректировать этот параметр, чтобы на сервер пересылались не все, а только некоторые строки лога; но при этом важно, чтобы под такой фильтр подпадали не только строки с фразой "FAILED LOGIN", но и хотя бы какие-то ещё (по которым проблема и будет закрываться).
        • закрывать проблему по таймеру. Один из самых простых вариантов: в этом случае ключ элемента данных менять не надо, а условие триггера переписать с помощью триггерной функции nodata() таким образом, чтобы он срабатывал только для данных, которые пришли не более N минут назад. Тогда через N минут проблема закроется сама, т.к. при использовании временнЫх функций (nodata(), в частности) условие триггера пересчитывается не только по приходу каждого нового значения, но и просто по таймеру каждые 30 секунд. И рано или поздно условие nodata() перестанет выполняться, в результате чего проблема будет закрыта.

        Comment

        • Dr759123
          Member
          • Oct 2021
          • 30

          #4
          Всем большое спасибо, остановился на функции nodata вместо find, это реально то что нужно!

          Comment

          Working...