Привет! Если ты хочешь отслеживать конкретные события в логах твоих Mikrotik, такие как: избыточные широковещательные пакеты, зацикливания, падение соединения, ошибки FCS и даже неудачные попытки входа на сервер, этот метод поможет тебе так же, как он помог мне контролировать более 40 серверов Mikrotik в течение года в идеальных условиях. Ты можешь фильтровать параметры своих логов, и этот метод будет отправлять все события в твою группу в Telegram в виде уведомлений. Вот простой скрипт с авторасписанием, работающий каждую минуту (ты можешь редактировать его по своему усмотрению). Вот шаги: 1. добавь новый скрипт с именем "LogFilter" 2. Скопируй и вставь код ниже 3. Настрой раздел установки, указав своего Telegram-бота и ID чата 4. Запусти скрипт в первый раз самостоятельно, позволив ему работать каждую минуту. # ФИЛЬТР ЖУРНАЛА ДЛЯ TELEGRAM ОТ AHMED MOUSELLY # НАЧАЛО НАСТРОЙКИ Редактируй здесь :local myserver ([/system identity get name]) :local scheduleName "LogFilter" :local bot "your bot id" :local ChatID "-your chat id" :local startBuf [:toarray [/log find message~" failure" || message~"loop" || message~"down" || message~"fcs" || message~"excessive"]] # КОНЕЦ НАСТРОЙКИ # предупреждение, если расписание не существует :if ([:len [/system scheduler find name="$scheduleName"]] = 0) do={ /log warning "[LogFilter] Внимание: Расписание не существует. Создание расписания ...." /system scheduler add name=$scheduleName interval=60s start-date=Jul/05/2019 start-time=startup on-event=LogFilter /log warning "[LogFilter] Внимание: Расписание создано." } # получить последнее время :local lastTime [/system scheduler get [find name="$scheduleName"] comment] # для проверки времени каждой записи лога :local currentTime # сообщение лога :local message # финальный вывод :local output :local keepOutput false # если lastTime пуст, установить keepOutput в true :if ([:len $lastTime] = 0) do={ :set keepOutput true } :local counter 0 # пройтись по всем записям лога :foreach i in=$startBuf do={ # пройтись по всем элементам массива removeThese :local keepLog true :foreach j in=$removeThese do={ # если эта запись лога содержит что-то из них, она будет игнорироваться :if ([/log get $i message] ~ "$j") do={ :set keepLog false } } :if ($keepLog = true) do={ :set message [/log get $i message] # ДАТА ЛОГА # в зависимости от даты/времени лога формат может быть разным. 3 известных формата # формат jan/01/2002 00:00:00, который появляется в неизвестной дате/времени. Используется по умолчанию :set currentTime [ /log get $i time ] # формат 00:00:00, который появляется в логах текущего дня :if ([:len $currentTime] = 8 ) do={ :set currentTime ([:pick [/system clock get date] 0 11]." ".$currentTime) } else={ # формат jan/01 00:00:00, который появляется в логах предыдущего дня :if ([:len $currentTime] = 15 ) do={ :set currentTime ([:pick $currentTime 0 6]."/".[:pick [/system clock get date] 7 11]." ".[:pick $currentTime 7 15]) } } # если keepOutput истинно, добавь эту запись лога в вывод :if ($keepOutput = true) do={ :set output ($output.$currentTime." %0A%0A ".$message."\r\n") } :if ($currentTime = $lastTime) do={ :set keepOutput true :set output "" } } :if ($counter = ([:len $startBuf]-1)) do={ :if ($keepOutput = false) do={ :if ([:len $message] > 0) do={ :set output ($output.$currentTimer." ".$message."\r\n") } } } :set counter ($counter + 1) } if ([:len $output] > 0) do={ /system scheduler set [find name="$scheduleName"] comment=$currentTime /tool fetch url="https://api.telegram.org/bot$bot/sendmessage?chat_id=$ChatID&text=$myserver%0A%0A$output" keep-result=no; } Примечание 1: Этот код не повторит одно и то же событие дважды, он берет последнюю дату события и сохраняет её, чтобы не повторяться до тех пор, пока оно снова не появится в логе. Примечание 2: Процитированный и измененный код. С уважением.
Мониторинг логов Mikrotik через Telegram
Мониторинг логов Mikrotik через Telegram, RouterOS
|
08.09.2019 10:42:00
|
|
|
|
|
|
30.06.2021 15:09:00
У вас есть скрипт, который может отправлять логи в Telegram, подобно этому? Чтобы выбрать, какие критерии отправлять (например: критические, сбой, предупреждение)…
|
|
|
|
|
|
11.07.2020 17:54:00
Я заметил ошибку в скрипте, уведомления из лога не обрабатываются сразу, а с задержкой, или вообще не обрабатываются. Я постараюсь это исправить.
|
|
|
|
|
|
28.07.2020 13:12:00
У меня есть другие скрипты для загруженных текстовых файлов, которые оставляют "downloaded" в журнале. Как мне игнорировать "downloaded", но оставить "down" в скрипте мониторинга?
|
|
|
|
|
|
07.08.2020 09:45:00
Спасибо за ваши усилия!
|
|
|
|
|
|
23.11.2020 10:38:00
Я попробовал на HEX, всё работает, спасибо! Но я поставил те же настройки на CCR 1036, и ничего не вышло. Есть ли решение?
|
|
|
|
|
|
24.11.2020 21:43:00
Хороший скрипт. Я использую его на нескольких устройствах, работает как часы. Отправлено с моего iPhone через Tapatalk.
|
|
|
|
|
|
25.11.2020 05:50:00
Да, они написали мне об этой ошибке, сейчас я проверяю скрипт на разных устройствах.
|
|
|
|
|
|
25.11.2020 05:52:00
График выполнения скрипта напрямую зависит от времени, когда журнал отправляется в чат телеграма. Вы можете попробовать изменить время выполнения скрипта.
|
|
|
|
|
|
28.05.2021 06:22:00
Найдите какое-нибудь решение для этого.?
|
|
|
|
|
|
30.06.2021 14:26:00
Не работает на rb4011
|
|
|
|
|
|
14.07.2021 14:06:00
не работает на CCR1036, есть ли новые обновления для этого скрипта? Пожалуйста?
|
|
|
|
|
|
15.07.2021 18:02:00
То же самое на ccr-1009
|
|
|
|
|
Читают тему
