Уведомьте, когда сообщение не произошло

Первый показ jls узнать необходимый идентификатор тюрьмы, затем jexec ${jailID} /bin/tcsh ({заключенный в тюрьму} $ является идентификатором Вашей тюрьмы),

2
задан 29 May 2013 в 22:53
3 ответа

Я думаю, что вопрос действительно в том, как структурировать запрос WMI, чтобы он возвращал истину, когда не возвращаются результаты. (Я бы добавил «WQL» или «WMI» или оба сразу в качестве тегов к вопросу.)

Один из лучших способов получить некоторый опыт работы с запросами WMI - загрузить WMI Code Creator от Microsoft. Конечно, вам нужно запустить это в окне Windows, но вы сможете сосредоточиться на запросе, который нужно передать в плагин Nagios, используя графический интерфейс.

http://www.microsoft.com/en -us / download / confirm.aspx? id = 8572

Язык запросов, используемый для WMI, - это язык запросов WMI (WQL), аналогично SQL, вы можете запросить, существует ли конкретный код события в течение последних 48 часов. Вот несколько полезных ссылок о синтаксисе, приемлемом для WQL.

Ключевые слова WQL: ссылка

Операторы WQL: Класс события: [зависит от того, что вы ищете]
TargetClass: Win32_NTLogEvent ссылка

Вы будете использовать наиболее распространенное пространство имен root \ CIMV2, и вам понадобится класс Win32_NTLogEvent для получения информации, которую вы ищете. Остальное - это просто структура запроса.

Поскольку мы не знаем, какое конкретное событие вы ищете, есть несколько свойств, которые вы можете использовать для изменения запроса.

Logfile = Какой журнал событий ты хочешь заглянуть? «Приложение» или «Система» и т. Д.
Пользователь = Кто создал событие? "NT AUTHORITY \ SYSTEM" или, может быть, вы ищете кого-то конкретно.

Вы можете сузить запрос с помощью предложения WHERE, как и в SQL, используя свойство TimeGenerated. TimeGenerated находится в формате IntervalFormat (или формате UTC) ссылка .

Вот краткое руководство по работе с датой и временем с использованием WMI. ссылка

ГДЕ DateDiff ("чч", TimeGenerated, GetDate ()) <48

Итак, чтобы собрать все это вместе, оно должно выглядеть примерно так.

SELECT * FROM Win32_NTLogEvent WHERE EventCode=4001 
  AND DateDiff(hh,TimeGenerated,GetDate()) < 48

4001 - это просто выдуманное число, найдите идентификатор события, о котором вы хотите запросить. ;)

Вы можете добавить дополнительные операторы AND, чтобы включить свойства, чтобы сузить результаты по мере необходимости. Это в дополнение к ответу Фила должно привести вас туда, куда вам нужно.

2
ответ дан 3 December 2019 в 11:47

У меня нет большого опыта работы с WMI, поэтому я не уверен, как поступают запросы для получения данных из журнала событий, но предполагая, что вы можете написать эту часть (а вы укажите, что вы можете), вы можете использовать Check WMI Plus, чтобы установить более низкий порог для количества совпадающих сообщений журнала, примерно так:

[section check]
query=SELECT * FROM <your query here ...>
test=_ItemCount
display=_DisplayMsg||~|~| - ||
display=_ItemCount|#
perf=_ItemCount||Log Entries

После этого вы можете запустить check_wmi_plus.pl с -c 1: для возврата КРИТИЧЕСКОГО состояния, если найдено меньше , чем одной записи журнала. (Дополнительная информация о пороговых значениях в Check WMI Plus находится по адресу « Вы можете показать мне пример предупреждения / критических критериев? ».)

0
ответ дан 3 December 2019 в 11:47

Это несложно. Вы можете просто объединить обычную проверку журнала со стандартным плагином отрицания , чтобы добиться этого.

0
ответ дан 3 December 2019 в 11:47

Теги

Похожие вопросы