Я ищу способ легко определять одноразовые уведомления о некоторых событиях, которые происходят в системе Linux. События могут включать в себя: file /tmp/my.lock is unlinked
или process 666 finished
или, может быть, что-то посложнее, например process 'backup.sh' closed file 'backup.tgz' AND process 'backup.sh' exited with return code 0
.
Уведомления также должны быть гибкими. Подобно, notify 192.168.0.100 via org.freedesktop.Notifications.Notify
или notify me@gmail.com via email
.
Фактически, это что-то вроде Nagios, но предназначенное для неповторяющихся событий с минимальными, почти нулевыми затратами на создание задачи. Мечтатель ли я? Стоит ли писать самому? Или мне просто следует использовать сценарии оболочки?
Просто чтобы добавить больше информации в я должен написать это сам вопрос, вы можете создать либо FIFO, либо плоский файл для использования в качестве настраиваемого журнала и добавить команды в свои настраиваемые сценарии, которые записывают важные выходные данные в этот файл журнала. Или, в качестве альтернативы, вы можете создать простой сценарий, который периодически проверяет состояние важных файлов и процессов и отправляет свои выходные данные в этот журнал.
Чтобы создать FIFO на сервере:
mkfifo /var/log/mylog
Чтобы прочитать логи с сервера:
ssh user@host "tail -f /var/log/mylog"
Включите эти функции в свои пользовательские сценарии, чтобы легко записывать в журнал:
function warning { echo -e "\e[33;1m :: \e[0m$@" > /var/log/mylog; };
function error { echo -e "\e[31;1m :: \e[0m$@" > /var/log/mylog; };
function information { echo -e "\e[32;1m :: \e[0m$@" > /var/log/mylog; };
Затем запишите записи в журнал, выполнив следующие команды:
information "Some text"
warning "Some more text"
error "Some important text"
Аналогичным образом вы можете добавить функцию оболочки, которая использует sendmail
(или подобное), чтобы отправить вам письмо.
Nagios может точно уведомить о событиях только один раз.
Мы используем его для открытия билетов.
Просто установите notification_interval = 0 (как для службы, так и для хоста), и вы получите электронное письмо / смс только один раз.
Я бы подумал, что комбинация inotifywatch
, ps
, logger
и syslog
в некоторых пользовательских сценариях может помочь.