Что нужно делать, если вам понадобилось сделать мониторинг домашнего сервера? Использовать какое-то готовое решение? Нет! Нужно изобрести свой велосипед, так ведь интереснее. Но ещё при этом, на мой взгляд, проще и гибче. Свой код - он под полным контролем. Вот поэтому я решил не использовать ничего готового, а сделать свой мониторинг на Node.js. Но вы также можете его попробовать у себя. Ведь там нет ничего лишнего. Если какое-то важное событие произошло на сервере, то придёт сообщение в телеграм. А там уже можно зайти по ssh и посмотреть подробней. Ссылка на GitHub.
На сегодняшний день основным способом отправки сообщения является отправка его в телеграм при помощи телеграм бота. Т.е. вы создаёте своего телеграм бота, указываете в файле senders/telegram/credentials.json его токен и chat id вашего телеграма. Программа будет слать сообщения в этот бот через Telegram API.
При этом программа не ограничена отправкой сообщений только в телеграм. В каталоге senders содержатся модули для отправки сообщений разными способами. На данный момент реализована отправка в телеграм и просто на TCP сервер.
Какие именно события отслеживаются определяется пользователем в файле main.mjs. Для отслеживания событий применяются механизм слежения за заданным каталогом или файлом или периодическое выполнения заданной команды, с целью обнаружить важные изменения в её выводе. Указанные модули наблюдения за системой находятся в папке watchers. Программа не ограничена только такими механизмами слежения. Но на сегодняшний день реализованы только они.
Код в main.mjs написан для мониторинга Raspberry Pi. На других железках придётся его править. Да и вообще, что бы воспользоваться программой, нужно прочитать и понять код хотя бы в файле main.mjs. Но если разобраться, то там всё на самом деле просто.
На сегодняшний день в файле main.mjs заданы:
- Оповещение о новой системной почте.
- Оповещения о новых сессиях пользователей.
- Оповещение об изменении статуса райд массива.
- Оповещение о превышении температуры процессора заданного порога.
- Оповещение об изменении статуса жёстких дисков (превышение температура и проверка важных SMART параметров).
- Оповещение о повышенной нагрузке на ЦП.
- Оповещение о превышении трафика (последовательно отправляются оповещения о превышении 2ГиБ, 4ГиБ, 6ГиБ, 8ГиБ и более 10ГиБ)
Другие отслеживания пользователь может задать по аналогии. В папке doc представлена автоматически сгенерированная документация на используемые модули слежения command_watcher, file_watcher, а также на модули отправки сообщений в телеграм и TCP-сервер.
Запуск
Для тестового запуска используйте команду:
node ./main.mjs
Для автоматического запуска подразумевается работа программы в качестве сервиса systemd. Пример юнита представлен в проекте в файле telemon.service