Ad Widget

Collapse

Не тривиальная задача отслеживания акти&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Patjomkin
    Member
    • Nov 2012
    • 50

    #1

    Не тривиальная задача отслеживания акти&

    Доброе время всем

    Требуется помощь в реализации задачи отслеживания активности пользователей самого zabbix:
    Есть сотрудник, который каждые 3 часа должен приходить в zabbix и смотреть состояние в dashboard. Если он не пришёл,то каждые 3 часа нужно генерировать алерт, который с 15 минутным интервалом будет эскалироваться выше.

    Как или какими средставми можно реализовать данную проверку. Хотябы намекните. Буду признателен любой подстказке.
    Last edited by Patjomkin; 29-07-2013, 23:50.
  • ableev
    Senior Member
    Zabbix Certified Specialist
    • Oct 2012
    • 276

    #2
    Задайте себе вопрос: какую задачу вы хотите решить? Таким образом вы замониторите момент открытия странички, а не успешность просмотра дашборда (событий и тд).

    В голову приходит такая идея:
    select unix_timestamp(now())-max(s.lastaccess)
    from users u,sessions s,user_history uh
    where
    u.userid = s.userid
    and u.userid = uh.userid
    and uh.url5='dashboard.php'
    and alias = 'username'
    ;
    Если больше 900, или null - тригерр зажечь.

    Comment

    • Patjomkin
      Member
      • Nov 2012
      • 50

      #3
      ableev
      Спасибо большое за ответ.
      Действительно, не до конца обдумал. Ведь если пользователь не закроет страницу и выставит сохранить пароль в браузере он и через сутки будет активен и страница будет под ним обновляться.

      Может тогда подскажите, как можно реализовать механизм контроля за просмотром событий zabbix?
      Единственное что придумано, это сделать по триггеру на каждые 3 часа (или другой промежуток времени), и чтобы диспетчер, когда заходит на dashboard вводил Acknowledge, и экскалация дальше не происходила. Но это в теории, на практике не совсем понятно, как это реализовать. Так как ack не сбрасывает состояние из problem в ok. Как динамически реализовать сами триггера, либо их расписать на сутки руками (т.е. с 0:00 до 3:00, с 3:00 до 6:00 и т.д.). Но как их сбрасывать по истечении суток, чтобы они запускались опять в положенное время, а не висели с аck дальше.
      Last edited by Patjomkin; 30-07-2013, 01:08.

      Comment

      • Patjomkin
        Member
        • Nov 2012
        • 50

        #4
        Т.е. в итоге остаётся проверять активность пользователя, обязывая его выполнять какие-либо действия через gui zabbix.

        Может кому-нибудь понадобиться:

        Вариант 1

        Написал скрипт user_ack_time.sh

        #!/bin/bash
        echo `date +%s`- `mysql --user=root zabbix --execute="use zabbix; select MAX(clock) from acknowledges a, users u where a.userid = u.userid and alias = 'name.surname';" | tail -1` | bc -l

        Он возвращает время в секундах с последнего ack пользователя (name.surname).
        Далее сделал item с внешней проверкой "User ack time" и триггер "The user didn't confirm ack long ago" {Zabbix Server:user_ack_time.sh.last(0)}>10800.
        Т.е. в итоге получается, что когда проходит 3 часа с момента последнего ack (не важно на этот триггер или другой, всё равно пользователь подтвердил ack, значит был на месте и открывал dashboard) срабатывает триггер. Пользователь заходит, подтверждает ack, триггер переходит в состояние "OK". Так каждые 3 часа. Конечно можно добавить дополнительные условия в триггер (например время (с 8 до 20)). Тогда получиться, что первый раз триггер сработает в 8 утра (так как с прошлых 20 вечера прошло больше 3 часов), потом (если других алертов не было, и пользователь не ставил ack) в 11, 14 и т.д.


        Вариант 2

        Ограничивать триггер временными интервалами (разбить весь рабочий день на интервалы). Т.е. пользователь подтвердит ack, экскалация алерта "что пользователь не следит за Zabbix" дальше не пойдёт, но в то же время триггер будет висеть в "problem" до окончания определённого интервала времени (8:00-10:55; 11:00-12:55; 13:00-14:55: 15:00-18:00).

        Comment

        • Smersh
          Member
          • Jul 2013
          • 49

          #5
          Может просто создать оповещение с условием "Значение триггера = "ПРОБЛЕМА"" и там же период времени + условие операции "Событие подтверждено = "Не подтверждено"". Оповещение соответственно с задержкой. В сообщении можно написать что-то типа: Проблема не подтверждена и не исправлена с {event.time}
          Last edited by Smersh; 03-08-2013, 01:06.

          Comment

          Working...