Ad Widget

Collapse

Состояние проблемы "Закрытие".

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #1

    Состояние проблемы "Закрытие".

    Коллеги, приветствую.
    Вот такая ситуация:
    Смотрю, какие проблемы (события) висят долго и через апи закрываю их.
    Code:
    my $iv_closu=zbx('event.acknowledge',
        {
        "eventids"<><-->=> $each->{eventid},
        "action"<--><-->=> 4+2+1,
        "message"<-><-->=> decode('utf8',"Закрыто автоматически, т.к. в течении $limitdate дней на него никто не реагировал")
        }
    Тестировал, все ок, все прекрасно. Если проблема все еще существует, то триггер срабатывает вновь и т.д.

    Но тут заметил, что некоторые триггеры не сработали, хотя проблема есть. Стал разбираться и заметил, что проблема в статусе "Закрытие". Т.е. клиническая смерть :-)
    ЛОгично, что триггеры на нее не срабатывают, хотя проблема есть.
    Ну и вопрос: Что делать? Как их закрыть?
    Даже выбрать такие события как-то не получается.
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #2
    Все еще хуже :-(
    Есть проблемы, которые не попадают в выборку "method":"problem.get". Если их закрыть вручную, то они также попадают в статус "Закрытие", описанный выше.

    Comment

    • Victor Vislobokov
      Senior Member
      • Aug 2018
      • 298

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

      Comment

      • Alex_UUU
        Senior Member
        • Dec 2018
        • 541

        #4
        Виктор, тоже об этом подумал, но если ткнуть, то все есть и триггер, который настраивается, и данные и все-все-все... А в доках даже нет упоминания про "Закрытие" (Closing). Не могу выловить SQL запрос страницы. чтобы понять, откуда берется. выборка.
        Вот, например
        Code:
        Срок действия ssl сертификата истекает через < 62 дня    735 дней, 02:00:39    1м 27д 1ч
        В самом триггере
        Code:
        {ЭлементДанных].last()}<5356800
        Т.е. сейчас триггер должен быть в состоянии Закрыт. А он в состоянии проблема.
        Еще разница в том, что "хороший" выводит данные на странице "Проблема", плохой - нет.

        Code:
        Это все Ок
        http://127,0,0,1/tr_events.php?triggerid=78996&eventid=157389061
        http://127,0,0,1/zabbix.php?action=problem.view&filter_triggerids%5B%5D=78996&filter_set=1
        
        Это ПРоблема, но не Ок
        http://127,0,0,1/tr_events.php?triggerid=78966&eventid=157375121 - Данные об алармах есть
        http://127,0,0,1/zabbix.php?action=problem.view&filter_triggerids%5B%5D=78966&filter_set=1 - Вот тут - пусто!!!
        Я бы вручную это удалил, т.к. они мешают дальнейшей работе. Но не могу понять, как выловить (визуально могу, конечно, но это - задница)

        Comment

        • Alex_UUU
          Senior Member
          • Dec 2018
          • 541

          #5
          В общем ковырнул и получил такой запрос
          Code:
          select from_unixtime(e.clock),e.* from events e where e.eventid not in (select es.eventid from event_suppress es) and e.eventid not in (select er.eventid from event_recovery er)
          В него вошли все!!! забытые евенты, которые я отловил вручную.
          Провел эксперимент,
          Code:
          insert into event_recovery(eventid,r_eventid) values(157281636,157281636);
          вставив один из проблемных евентов - он перешел в статус "Закрыто" со временем 0, что естественно.
          Значит из первой выборки надо выкинуть закрывающие и повторные евенты и все будет хорошо.

          Баг такой: открывающее событие в какой-то момент уходит из event_suppress, но не приходит в event_recovery и висит в подвешенном состоянии.
          При приходе нового события по этому триггеру, Заббикс смотрит в events и видит, что даное событие есть, но оно не закрыто. Поэтому никаких новых алармов не дает. Авария - есть, а уведомления - нет.

          Comment

          • Alex_UUU
            Senior Member
            • Dec 2018
            • 541

            #6
            Итоговый запрос на лечение:

            insert into event_recovery(eventid,r_eventid) select e.eventid,e.eventid from events e where e.eventid not in (select es.eventid from event_suppress es) and e.eventid not in (select er.eventid from event_recovery er) and name<>'' and from_unixtime(e.clock)<now() - interval 35 day;

            Comment

            Working...