NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: enp on July 05, 2013, 01:15:32 PM

Title: Поиск закрытых алармов и причин закрытия в БД
Post by: enp on July 05, 2013, 01:15:32 PM
Здравствуйте!

Получить список алармов из БД (PostgreSQL) можно так:


select
    name,
    message,
    timestamp 'epoch' + creation_time * interval '1 second' as begin,
    timestamp 'epoch' + last_change_time * interval '1 second' as last_change   
from alarms inner join object_properties
    on source_object_id = object_id
order by creation_time desc


Однако я не могу найти поле с отметкой о том, когда аларм был закрыт, а также кем и по какой причине.
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: enp on July 05, 2013, 01:31:47 PM
Да, искать по БД приходится не от хорошей жизни - в Alarm Log с фильтром по Source удается найти записи до апреля, остальных нет. Хотя в БД с тем же object_id есть записи вплоть до сегодняшнего дня. Что может так влиять на неотображение данных?
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: Victor Kirhenshtein on July 06, 2013, 10:02:29 PM
Странно. На всякий случай - в лог выдаются первые 400 найденных записей, следующие подгружаются при нажатии "get more data" - действительно больше ничего не выдается?
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: enp on July 08, 2013, 07:01:13 AM
Спасибо, я просто не увидел кнопочку "get more data" :)

Однако вопрос с выборкой алармов средствами SQL по-прежнему актуален, потому что текущее представление включает слишком много колонок. Актуальность, наверное, потеряется только с решением этой проблемы -  https://www.radensolutions.com/chiliproject/issues/224
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: Victor Kirhenshtein on July 08, 2013, 11:56:40 AM
Вот такой SQL даст пользователей, которые делали acknowledge, resolve, и terminate:


select
    op.name,
    message,
    creation_time as begin,
    last_change_time as last_change,
    u1.name as user_ack_by,   
    u2.name as user_resolved_by,   
    u3.name as user_term_by   
from alarms
inner join object_properties op
    on source_object_id = object_id
left outer join users u1
    on u1.id=ALARMS.ack_by
left outer join users u2
    on u1.id=ALARMS.resolved_by
left outer join users u3
    on u1.id=ALARMS.term_by
order by creation_time desc


Отдельных timestamp'ов на это нет, при каждом изменении обновляется last_change_time.
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: enp on July 08, 2013, 12:06:46 PM
Т.е. закрытые алармы - это те, у которых term_by <> 0, и в этом случае дата/время закрытия - last_change_time?
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: Victor Kirhenshtein on July 08, 2013, 03:46:16 PM
Не совсем так. Надо проверять на alarm_state = 3, term_by может быть равен 0 если аларм был закрыт пользователем admin или системой. last_change_time будет в этом случае содержать время закрытия, да.
Title: Re: Поиск закрытых алармов и причин закрытия в БД
Post by: enp on July 08, 2013, 03:53:25 PM
понятно, спасибо!