Ad Widget

Collapse

Проверка на изменение /etc/passwd

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • m2k9
    Junior Member
    • Apr 2016
    • 10

    #1

    Проверка на изменение /etc/passwd

    Всем привет.
    Есть триггер проверяющий на изменение файл /etc/passwd
    {HOST:vfs.file.cksum[/etc/passwd].diff(0)}>0
    Элемент данных HOST:vfs.file.cksum[/etc/passwd] проверяется каждую минуту
    Соответственно он падает в аларм при добавлении нового пользователя и через минуту возвращает статус ОК.
    Если добавлять несколько пользователей за раз, то получается что триггер срабатывает по несколько раз и приходит много лишних смс.
    Единственное что помогает это изменение времени на элементе данных, но это не совсем правильно, так как если это будет не правомерное изменение, то мы об этом можем узнать слишком поздно.
    Так же пробовал:
    {HOST:vfs.file.cksum[/etc/passwd].diff(1h)}>0 вроде как через час
    {HOST:vfs.file.cksum[/etc/passwd].diff(#60)}>0 вроде как через 60 проверок
    Zabbix 2.0.7
    Подскажите как можно сделать так чтобы триггер при срабатывании висел в аларме час?
    Спасибо.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Originally posted by m2k9
    Всем привет.
    Если добавлять несколько пользователей за раз, то получается что триггер срабатывает по несколько раз и приходит много лишних смс.
    Единственное что помогает это изменение времени на элементе данных, но это не совсем правильно, так как если это будет не правомерное изменение, то мы об этом можем узнать слишком поздно.
    Спасибо.
    Какую логику срабатывания триггера, привязанную к временнОй шкале вы себе представляете? Чтобы без прыжков в будущее и прошлое.

    Comment

    • m2k9
      Junior Member
      • Apr 2016
      • 10

      #3
      Originally posted by sadman
      Какую логику срабатывания триггера, привязанную к временнОй шкале вы себе представляете? Чтобы без прыжков в будущее и прошлое.
      Элемент данных опрашивается раз в минуту ->
      При опросе выясняется что файл изменился ->
      Срабатывает триггер ->
      Через минуту снова опрашивается элемент данных ->
      С последнего опроса файл не изменился ->
      По идее триггер должен стать в состояние ОК, но нужно чтобы он висел еще хотябы час.
      Спасибо.

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Так, как в триггере невозможно выяснить его собственный возраст, то я бы вычислял diff() в Calculated item, а триггером бы проверял max(1h)=1 этого элемента данных. Таким образом триггер должен гореть до тех пор, пока в указанный период не было изменений файла. Вычислять можно чаще, чем раз в минуту. Это уменьшит временной лаг. Хранить же данные стоит минимально возможно время, так как они нужны только триггеру.

        Comment

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

          #5
          Originally posted by m2k9
          Так же пробовал:
          {HOST:vfs.file.cksum[/etc/passwd].diff(1h)}>0 вроде как через час
          {HOST:vfs.file.cksum[/etc/passwd].diff(#60)}>0 вроде как через 60 проверок
          Судя по документации, функция diff() всегда сравнивает только последнее и предпоследнее значения, игнорируя параметры.

          Чтобы сравнить текущее значение со значением час назад, можно, например, написать так:
          Code:
          {HOST:vfs.file.cksum[/etc/passwd].last(1h)}#{HOST:vfs.file.cksum[/etc/passwd].last()}
          Скорее всего, это решит проблему.

          Как вариант, можно воспользоваться функцией delta(), но тогда будут сравниваться все значения за последний час:
          Code:
          {HOST:vfs.file.cksum[/etc/passwd].delta(1h)>0}
          Такой триггер сбросится в состояние "OK" только когда все значения за последний час будут идентичными.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Originally posted by kos
            Судя по Чтобы сравнить текущее значение со значением час назад, можно, например, написать так:
            Code:
            {host:vfs.file.cksum[/etc/passwd].last(1h)}#{host:vfs.file.cksum[/etc/passwd].last()}
            Скорее всего, это решит проблему.
            Триггер не будет гарантированно висеть час, как мне кажется. На следующем лупе скинется.

            А вот с дельтой очень неплохой вариант - более оптимален, чем мой.

            Comment

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

              #7
              Originally posted by sadman
              Триггер не будет гарантированно висеть час, как мне кажется. На следующем лупе скинется.
              Почему? Текущее значение сравнивается с тем, которое было час назад. Скинется только в случае, когда они совпадут. "На следующем лупе" (т.е. через минуту) новое значение будет сравниваться с тем, которое было 59 минут назад. Ещё через минуту - с тем, которое было 58 минут назад, и так далее. Если файл меняем сейчас, то эти пары значений снова совпадут только через час.

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

              Comment

              • sadman
                Senior Member
                • Dec 2010
                • 1611

                #8
                Originally posted by kos
                Почему? Текущее значение сравнивается с тем, которое было час назад. Скинется только в случае, когда они совпадут. "На следующем лупе" (т.е. через минуту) новое значение будет сравниваться с тем, которое было 59 минут назад.
                А, ну да. Там же <>, а не то, что мне показалось. Но я всё равно подсознательно избегаю проверок, которые не учитывают все значения на промежутке.

                Comment

                • m2k9
                  Junior Member
                  • Apr 2016
                  • 10

                  #9
                  Промучился почти целый день. Дошел вот до чего:
                  создал вычисляемый элемент данных с ключём pass и формулой:
                  last(vfs.file.cksum[/etc/passwd])/avg("vfs.file.cksum[/etc/passwd]",1h)
                  при изменении файла pass меняет значение с 1 на любое другое
                  не равное 1. если с файлом ничего более не происходит, то за час постепенно
                  значение возвращается в 1 так как last и avg становятся равны.
                  далее пытаюсь создать триггер:
                  ({TRIGGER.VALUE}=0&{HOST:vfs.file.cksum[/etc/passwd].diff()}>0) | ({TRIGGER.VALUE}=1&{HOSTass.last(30)}=1)
                  по идее по первой строке триггер должен упасть в состояние проблема
                  а вернуться в состояние ОК когда последнее значение будет равно 1

                  Comment

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

                    #10
                    Зачем такие навороты? Мои варианты не пробовали? Если всё равно хотите перебирать все значения за час, то вот это же должно быть намного проще и понятнее:
                    Code:
                    {HOST:vfs.file.cksum[/etc/passwd].delta(1h)>0}

                    Comment

                    • m2k9
                      Junior Member
                      • Apr 2016
                      • 10

                      #11
                      Добавил триггер с вот таким условием:
                      ({TRIGGER.VALUE}=0&{Net-Flow-M9:vfs.file.cksum[/etc/passwd].diff()}>0) | ({TRIGGER.VALUE}=1&{Net-Flow-M9:vfs.file.cksum[/etc/passwd].delta(3600)}=1)
                      Срабатывает на аларм и уходит в ок в следующем лупе (
                      Если добавить условие :vfs.file.cksum[/etc/passwd].delta(3600)>0}=1)
                      То вываливается в ошибку:
                      "Некорректное выражение триггера. Проверьте часть выражения начиная с "&{HOST:vfs.file.cksum[/etc/passwd].delta(3600)>0}=1)"."

                      Comment

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

                        #12
                        Originally posted by m2k9
                        Добавил триггер с вот таким условием:
                        [...очередные усложнения с гистерезисом и какими-то неясными синтаксическими конструкциями...]
                        Я не понимаю, чего Вы хотите добиться.
                        Зачем такие навороты?
                        Code:
                        vfs.file.cksum[/etc/passwd].delta(3600[COLOR="blue"])>0}=1)[/COLOR]
                        Что это вообще?

                        Попробуйте один раз уж, наконец:
                        Code:
                        {Net-Flow-M9:vfs.file.cksum[/etc/passwd].delta(1h)>0}
                        и отпишитесь о результатах, пожалуйста.

                        Comment

                        • sadman
                          Senior Member
                          • Dec 2010
                          • 1611

                          #13
                          Originally posted by kos
                          Попробуйте один раз уж, наконец:
                          Code:
                          {net-flow-m9:vfs.file.cksum[/etc/passwd].delta(1h)>0}
                          и отпишитесь о результатах, пожалуйста.
                          Намекаю: нужно просто вставить это выражение в триггер. Без добавления всяких {trigger.value}=0 и пр.

                          Comment

                          • m2k9
                            Junior Member
                            • Apr 2016
                            • 10

                            #14
                            Всем спасибо за участие в решении проблемы, особенно Kos. Его предложение сработало.
                            Настроил триггер {HOST:vfs.file.cksum[/etc/passwd].delta(1h)}>0
                            В итоге триггер висит час и сообщение о том что проблема решена приходит через час. Спасибо.

                            Comment

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

                              #15
                              Рад, что помогло
                              Спасибо, что не поленились озвучить результат.

                              Comment

                              Working...