MikroTik Скрипты: Уведомление о перегреве устройства

Уведомление при повышении температуры устройства выше порогового значения. Отправляет уведомление на электронную почту или сообщение в Telegram.

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

Пример email о перегреве устройства MikroTik. Получить температуру устройства и загрузка CPU
Пример email о перегреве устройства MikroTik

Используются функции:

MikroTik скрипт подходит для устройств оснащенных датчиком температуры. Проверено на Mikrotik RB3011UiAS-RM, RouterOS 6.46.4 (stable).

Безопасное значение температуры CPU, будет разным для каждой модели устройств MikroTik, выставляйте значение температуры срабатывания скрипта (MaxCPUTemp), в зависимости от модели вашего устройства (смотрите спецификацию).

Статья на других языках:
?? — MikroTik Scripts: Device overheating notification
?? — MikroTik Scripts: Notificación de sobrecalentamiento del dispositivo
?? — Scripts MikroTik: Notification de surchauffe de l’appareil
?? — MikroTik-Scripts: Benachrichtigung über Überhitzung des Geräts
?? — MikroTik-scripts: Melding over oververhitting van het apparaat

Создать скрипт

Параметр MaxCPUTemp — пороговое значение температуры устройства, при котором будет отправлено уведомление.

Для работы скрипта проверка температуры устройства необходимы разрешения: read, write, test, policy.

[System] -> [Scripts] -> [+] -> [Name: DeviceOverheatingScript] -> [Policy: read, write, test, policy]

Код скрипта:

# Name: DeviceOverheatingNotification v1
# Description: Notification when the device temperature rises above the threshold. Sends notification to email or Telegram message.
# Author: Yun Sergey, MHelp.pro 2020
# License: GPL-3.0 License
# Description, purpose and questions: https://mhelp.pro/mikrotik-scripts-device-overheating-notification/
# More scripts Mikrotik: https://mhelp.pro/tag/mikrotik-scripts/
# Verified: RouterBOARD 3011UiAS, RouterOS 6.47.8 (stable)

:local MaxCPUTemp 65;
:local CurrentTemp [/system health get temperature];
:local CurrentCPULoad [/system resource get cpu-load];
:local DeviceName [/system identity get name ];
:local Time [/system clock get time];
:local Date [/system clock get date];

#:log info "Script DeviceOverheatingNotification - start.";

:if ($CurrentTemp > $MaxCPUTemp) do={

    #:log info "Script DeviceOverheatingNotification - Temperature threshold exceeded! Send Telegram message.";

    # START Send Telegram Message
    :local MessageText "\F0\9F\94\B4 <b>CRITICAL: $DeviceName Device Overheating!</b> %0D%0A Device Temperature: $CurrentTemp %C2%B0 C  %0D%0A CPU Load: $CurrentCPULoad %";
    :local SendTelegramMessage [:parse [/system script  get MyTGBotSendMessage source]];
    $SendTelegramMessage MessageText=$MessageText;
    # END Send Telegram Message

    #:log info "Script DeviceOverheatingNotification - Temperature threshold exceeded! Send Email.";

    # START Send Email
    :local SendTo "notify@mhelp.pro";
    :local Subject "\F0\9F\94\B4 CRITICAL: $DeviceName [$Date $Time]";
    :local MessageText "Device Temperature: $CurrentTemp °C, CPU Load: $CurrentCPULoad %";
    :local FileName "";
    :local SendEmail [:parse [/system script get SendEmailFunction source]];
    $SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
    # END Send Email
}

#:log info "Script DeviceOverheatingNotification - end.";
MikroTik скрипт уведомление о перегреве устройства

Добавить скрипт в Планировщик

Для запуска скрипта проверка температуры устройства MikroTik необходимы разрешения: read, write, test, policy.

[System] -> [Schedule] -> [+] -> [Name:CheckDeviceOverheating] —>  [Interval: 00:01:00] -> [Policy: read, write, policy, test]

Или введите в терминале:

/system scheduler add name=CheckDeviceOverheating policy=read,write,policy,test on-event="/system script run DeviceOverheatingScript" interval=1m comment="Checking device overheating"

Теперь вы сможете увеличить контроль над вашим устройством, отслеживая важный параметр — температура устройства!


? Как создать скрипт проверка перегрева устройства MikroTik и отправка уведомления на электронную почту или сообщение Telegram, обсуждалось в этой статье. Я надеюсь, что теперь вы сможете получить уведомление о перегреве устройства MikroTik и загрузке CPU вовремя. Однако, если вы столкнетесь с каким-то проблемами при настройке скрипта, не стесняйтесь написать в комментариях. Я постараюсь помочь.

4 комментария к “MikroTik Скрипты: Уведомление о перегреве устройства”

  1. Насколько я понял в RouterOS 7 изменили System/Health, т.к. локальная переменная не могла получить значение.
    Решение данного вопроса:
    :local CurrentTemp [/system/health/get value-name=value &id];
    Было проверено на RouterOS 7.9.2

    Ответить
  2. Скрипт отправки сообщения в телеграм, работает на модели hEX, но не завёлся на модели CCR1009-7G-1C-1S+
    Подскажите куда копать?

    Ответить
    • Здравствуйте. Обновил код скрипта, добавил логи. Раскомментируйте строки #:log info (уберите символ # в начале строки).
      Диагностика:
      Отключите запуск скрипта из планировщика, запускайте скрипт вручную.
      1. Запустите скрипт, где MaxCPUTemp = 65;
      2. Скрипт должен выдать в журнал устройства сообщения: Script DeviceOverheatingNotification — start. и Script DeviceOverheatingNotification — end.;

      Это значит скрипт отработал корректно.

      3. Измените значение MaxCPUTemp = 1;
      4. Скрипт должен выдать в журнал устройства сообщения:
      — «Script DeviceOverheatingNotification — start» — скрипт запущен корректно;
      — «Script DeviceOverheatingNotification — Temperature threshold exceeded! Send Telegram message.» — обнаружен перегрев более 1 градуса, начата отправка сообщения в Телеграм;
      — «Script DeviceOverheatingNotification — Temperature threshold exceeded! Send Email.» — сообщение в Телеграм отправлено без ошибок, начинаю отправку email;
      — «Script DeviceOverheatingNotification — end.» — сообщение email отправлено корректно, скрипт завершил работу.

      Напишите, на каком сообщении у вас прерывается работа скрипта?

      Ответить

Оставьте комментарий