Александр Меняйло

Александр Меняйло

Разработчик. Учёный

©2024

Сделал собственный мониторинг для домашнего сервера "Telemon"

Что нужно делать, если вам понадобилось сделать мониторинг домашнего сервера? Использовать какое-то готовое решение? Нет! Нужно изобрести свой велосипед, так ведь интереснее. Но ещё при этом, на мой взгляд, проще и гибче. Свой код - он под полным контролем. Вот поэтому я решил не использовать ничего готового, а сделать свой мониторинг на 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


На сайте используются cookie для аналитики