Pull to refresh

Простейший информер на Automator

Reading time4 min
Views26K
Automator

В первом своем посте на данном ресурсе хотел бы описать простейший пример создания информера, с помощью колоссально удобной утилиты Automator, идущей в комплекте с Mac Os X.

Буквально на днях, при радикальном снижении уличной температуры в Москве у меня внезапно появилась задача: визуально отслеживать температуру в серверном помещении (а точнее в стойке), с определенным интервалом, т.к. кондиционер, обслуживающий помещение, отказался работать при T < -15 ºC.


Для начала, сразу поясню, что сам по себе вопрос контроля температуры серверной комнаты, стойки, каждого сервера в ней, а также еще пары сотен иных параметров мною комплексно решен установкой системы мониторинга Zabbix. И надо сказать, она отлично с этим справляется, не только скрупулезно собирая все эти данные и храня логи всех изменений этих параметров, но также и выполняя информирование, в случае достижения контрольных или критических точек (триггеров). Однако, далеко не всегда, получение почтовых сообщений или СМС бывает удобно, особенно однотипных, как в моем случае, содержащим конкретную величину, незначительно меняющуюся со временем — в данном случае, температуру комнаты. И поэтому я решил визуализировать для себя эту информацию, благо процесс занимает 5 минут и с десяток кликов, а в итоге получаем удобно появляющиеся уведомления с нужным параметром, причем интервал их появления настраивается, а история — удобно хранится в списки сообщений центра уведомлений Mac Os X.

Источником информации я выбрал Ambient Sensor одного из серверов стойки. Это сервер Supermicro, оборудованный интерфейсом IPMI.
Для начала открываем интерфейс программы:

Выбираем создание нового процесса, а затем, в разделе «Действия» библиотеки выбираем подраздел утилиты — по сути мы будем пользоваться только ими.

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

Итак, основной запрос, как я уже указывал ранее, будет возвращать нам температуру одного из сенсоров сервера, находящегося в стойке. Команда, возвращающая ее в моем случае имеет следующий вид:

ipmitool -H xxx.xxx.xxx.xxx -U LOGIN -P PASSOWRD sensor get 'Sensor Name' |grep 'Sensor Reading' |grep -o '[0-9][0-9]'

где xxx.xxx.xxx.xxx это IP-адрес интерфейса IPMI
LOGIN и PASSWORD — это логин и пароль доступа к интерфейсу.
Sensor Name — это название сенсора, с которого предполагается считывать данные. В моем случае это был «System Temp».
Утилита grep в данном контексте используется для возврата удобночитаемого двузначного цифрового значения температуры сенсора.

Чтобы процесс выполнял в shell данную команду, перетаскиваем соответствующее действие из библиотеки в поле процесса:



Заметьте — в правом верхнем углу есть флажок, позволяющий либо помещать результат исполнения скрипта в stdin, либо возвращать как аргумент для дальнейших действий. Так как мы планируем использовать результат в дальнейшем — то выбираем возвращать «как аргумент».
А поскольку мы хотим использовать полученное значение в других операциях, есть смысл создать переменную, которой и будет присвоено полученное выше значение, для этого выбираем действие «Установить значение переменной»:


Кликнув на поле «новая переменная» можно задать ей удобночитаемое название, например «Температруа». Заметьте также, что между двумя действиями стоят стрелки, указывающие направление последовательности действий.



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

Также, для удобства, рекомендую добавить дополнительные переменные из библиотеки, я взял оттуда точное время. А вообще там есть очень много чего…
Вкладка библиотеки системных переменных находится справа от вкладки «Действия»:


Ну и далее остается заполнить само тело сообщения.

Кроме того, у нас есть задача зациклить этот процесс, с тем, чтобы запрос осуществлялся с неким интервалом. Для этого из библиотеки действия есть смысл перетащить действие «приостановить», в котором можно указать время приостановки процесса. Замечу (и это важно) что изначально пытался вместо 30 минут выставить 1800 секунд, однако процесс отрабатывал некорректно, собственно поэтому в действии можно выставить размерность задержки в секундах, минутах или часах. Насколько я понял мануал, счетчик ограничен 1000-ю единиц.

Ну и последнее, необходимое нам действие — это цикл, ибо нам необходимо зациклить процесс. Для этого ставим в конец процесса действие «Петля».
В этом действии есть несколько настраиваемых параметров, а именно: обязательный запрос пользователя для продолжения действия, который можно заменить полностью автоматическим циклом (собственно он нам и нужен). Второй параметр — это точка возвращения петли, нам нужно вернуться к самому началу процесса, поэтому выбираем «Использовать начальный вход». Ну и третий, довольно важный параметр — «остановить после». Этот параметр определяет, в какой момент заканчивается действие петли. Вариантов здесь два, либо после некоего интервала времени, либо после некоего количества циклов. К сожалению, сделать бесконечный цикл нельзя, установка этого параметра в «ноль» как для минут, так и для «раз» не приводит к этому (цикл выполнится лишь раз), поэтому проще выбрать то, что Вам по душе. Максимально значение счетчика также 1000 единиц. Для себя я лично выбрал 1000 раз, это 1000 циклов. Замечу, что если этого не достаточно, ставьте следующую петлю сразу после первой, это будет исполнять цикл в цикле, а это 1 млн. итераций, и т.д.

В итоге, финальная версия процесса выглядит вот так:



А выдаваемые сообщения, во первых, удобно визуализируются на рабочем столе — выскакивая с нужной частотой, при этом вы всегда можете посмотреть их историю, которая выглядит примерно вот так:


Теперь остается лишь запустить процесс. И он начнет выполняться автоматором, а чтобы он не мешал в Dock — правый клик на иконке Automator в Dock и далее «Скрыть».

Основная задача этого поста рассказать о том, что с помощью такого замечательного инструмента, как Automator можно автоматизировать не только весьма сложные задачи, требующие многократного повторения рутинных действий, но и выполнять периодические задачи, с довольно удобной визуализацией данных запросов.
Tags:
Hubs:
+26
Comments14

Articles

Change theme settings