Home » Mikrotik » Mikrotik логирование на удаленный сервер rsyslog

Mikrotik логирование на удаленный сервер rsyslog

Возникло желание собирать логи с роутера Mikrotik. Была нужна информация о подключенных по pptp абонентах и логи firewall для настройки. По-умолчанию, Mikrotik пишет все логи в лог журнал, который можно просмотреть через winbox. Стандартно, там хранятся последние 100 строк лога.

Теоретический курс "Сетевые технологии для системных администраторов" позволит системным администраторам упорядочить и восполнить пробелы в знаниях. Цена очень доступная, есть ознакомительные уроки. Все подробности по ссылке. Можно пройти тест на знание сетей, бесплатно и без регистрации.

Данная статья является частью единого цикла статьей про Mikrotik.

Mikrotik logging

Настраиваем удаленный сервер rsyslog

У меня в хозяйстве имелся сервер Debian. Решил хранить логи с микротиков именно на нем. В составе Debian уже имеется сервис сбора логов с удаленных источников rsyslog. Необходимо только включить в нем необходимый функционал. Правим файл /etc/rsyslog.conf:

Раскомментируем строки

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

чтобы получать логи по UDP, либо

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

чтобы получать логи по TCP

И в секцию RULES добавим несколько строк для удобного хранения файлов логов от разных удаленных источников:

# Зададим шаблон создания имен файлов (на основании IP адреса клиента)
$template FILENAME,"/var/log/!remote/%fromhost-ip%/syslog.log"
# Укажем сохранять сообщения от любого источника (*) с любым приоритетом (*) в файл, заданный шаблоном
# Например, клиенты (10.0.0.2,10.0.0.3...) будут раскладываться в соответствующие каталоги /var/log/10.0.0.2/syslog.log
 *.* ?FILENAME

Перезапускаем rsyslog для применения настроек:

/etc/init.d/rsyslog restart

Теперь наш сервер готов принимать логи с удаленных источников. Хранить он их будет в папке /var/log/!remote Для каждого источника будет создана папка с именем IP адреса этого источника.

Настраиваем пересылку логов в Mikrotik

Теперь настраиваем в роутере хранение логов на удаленном сервере. Для этого заходим в раздел System -> Logging, выбираем закладку Actions, два раза щелкаем по строчке remote. Открывается окно настроек. В нем вводим адрес удаленного сервера сбора логов. Порт на свое усмотрение либо оставляем по-умолчанию, либо меняем на свой. Больше ничего добавлять не надо.

настройка логов в mikrotik

Дальше в разделе Rules создаем необходимое правило хранения:

Правила для логов в mikrotik

Все готово. Теперь все наши логи будут храниться на удаленном сервере. Необходимо не забыть настроить ротацию логов, дабы в один прекрасный день они не заняли все свободное место.

запись логов с mikrotik в rsyslog

Если вы используете ELK Stack для централизованного сбора логов, то у меня есть статья по отправке логов mikrotik в elk stack.

Напоминаю, что данная статья является частью единого цикла статьей про Mikrotik.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Рекомендую полезные материалы по схожей тематике:

Онлайн курcы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курcы по программе, основанной на информации из официального курcа MikroTik Certified Network Associate. Помимо официальной программы, в курcах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте Курcы по ИТ. Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курcов:
  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

18 комментариев

  1. Николай

    В догонку скрипт, с помощью которого можно организовать удалённое логирование событий при падении аплинка. Когда скрипт замечает что аплинк упал, он начинает писать логи событий в файл, а когда аплинк поднимется отправляет их в лог, в том числе и удаленно, если удалённое логирование настроено. Для работы скрипта в имени интерфейса, который является аплинком должно быть слово uplink. Например так: ether3 uplink

    :local tmp [:toarray ""]
    :local numInt 
    :local truFal [:toarray ""]
    :local l 0
    :local tf
    :local file
    :local lastPos 0
    :local k true
    :local line
    :local count 1
    
    #:delay 30s;
    
    /log info ("uplinkMonitor working!")
    
    for i from=0 to=50 do={ :set ($truFal->$i) 1;}
    
    while (true) do={
    
        :set tmp [/interface ethernet find where name~".*uplink"]
    
        :if ( [:len $tmp]>1) do={ /log info ("More then one uplink!"); :delay 10s; /log info ("Trying!"); :set count 0 } else={
            :if ( [:len $tmp]$i) 1;} }
                  
                :set l [:len ($tmp->0)]
                :set $numInt [:pick ($tmp->0) 1 $l];
                      
                :set tf [/interface get ($numInt-1) running];
                 			
                :if (  $truFal->(($numInt*1)-1)=1  ) do={ 
                   :set ($truFal->(($numInt*1)-1)) $tf;
                }
                 			 
                :if (  $truFal->(($numInt*1)-1)=true  && $tf=false ) do={
                    :set ($truFal->(($numInt*1)-1) ) false;
                       
                    /system logging action  add name="uplinkCrashDisk" target="disk" disk-file-name="uplinkCrash"
                    /system logging add topics="critical" action="uplinkCrashDisk"	
                    /system logging add topics="error" action="uplinkCrashDisk"	
                    /system logging add topics="warning" action="uplinkCrashDisk"	
                    /system logging add topics="info" action="uplinkCrashDisk"	
                    /log info ("ether" . ($numInt)  . " uplink link down (BY SCRIPT)");                  
                       
                }
                   
                :if (  $truFal->(($numInt*1)-1)=false  && $tf=true ) do={ 
                    :set ($truFal->(($numInt*1)-1)) true;
                    /log info ("ether" . ($numInt)  . " uplink link up (BY SCRIPT)")
    	/system logging remove [/system logging find where  action="uplinkCrashDisk"]
    	/system logging action remove [/system logging action find where name="uplinkCrashDisk"]
                                        				
                    :delay 1s
                          
                    :set file [/file get [/file find where name="uplinkCrash.0.txt"] contents ]
                    /log error ("start-------------SCRIPT-------------------start")
                            
                    :set k true; set lastPos 0;
                    :while (k) do={
                        :set line [:pick $file $lastPos [:find $file "\n" $lastPos]];
                        /log info $line
                        :set $lastPos  ([:find $file "\n" $lastPos ]+1)
                        :if ( $lastPos>=[:len $file] ) do={ :set k false }
                    }
                                      
                    /log error ("end---------------SCRIPT---------------end" )
                       
                    /file remove [/file find where name="uplinkCrash.0.txt"]
                        
                 }
                :delay 300ms;
            }        
        }
    }
    • А какой в этом смысл, если эти же аплинки можно мониторить по snmp? У меня есть статья.

      • Николай

        Мониторить по snmp можно, но опрашивать девайс, допустим каждую секунду - не комильфо. А если интерфейс флапает. Этот скрипт проверяет состояние интерфейса раз в 300 миллисекунд. Изначально цель была именно мониторить кратковременные падения-подъёмы интерфейсов.
        Хороший способ мониторить флапы интерфейса - это трапы на вышестоящем девайсе.
        Скрипт, кстати, вставился криво. Там как минимум две строки кривые. Если интересно, могу, допустим на почту, прислать нормальный текст скрипта.

        • Если есть задача в таких частых проверках, то наверно имеет право на жизнь. Но как себя само устройство чувствует с такими частыми проверками, особенно если интерфейсов много?

          Движок сайта не позволяет нормально вставлять код. Я поправил руками.

      • Дмитрий

        Здравствуйте, можете дать ссылку на эту статью?

  2. Алексадр

    Добрый день.
    настроил пересылку логов на киви syslog server. теперь вопрос как просматривать в удобоваримом формате. возможно реализовать подсчет трафика, а также кто куда ходил и сколько скачал с помощью логов микротика ?

    • Эти вопросы должны решаться не хранилищем логов. Нужен какой-то софт, который все это будет обрабатывать, складывать в базу данных и формировать отчеты. Мне такие инструменты, тем более бесплатные, не известны.

  3. Николай

    Добрый день.
    Спасибо за статью. Вопрос:
    Как быть с падением аплинка на микротике. Пока аплинк лежит, логи на удалённый сервер естественно не приходят. Но нет ли возможности получить все пропущенные события, когда аплинк поднимется?

    • Не знаю, не прорабатывал этот момент. Возможно как-то через скрипт это можно реализовать. Логи же он все равно локально пишет. Но задача на первый взгляд не простая.

  4. Владимир

    Добрый день.
    Настроил сбор логов в сети 192.168.65.0/24 все прекрасно работает. Так же имеется микротик в сети другого офиса 192.168.70.0/24, впн туннел настроен, пинги идут. Но логи не отправляются на сервер rsyslog 192.168.65.93. Не подскажете в чем может быть причина?

    • В чем угодно :) Так разве скажешь. Настройки firewall в первую очередь проверяйте. Дальше в rsyslog смотрите, нет ли там ограничение на прием по ip адресам.

      • Владимир

        В фаерволе разрешающие входящие правила для порта и ip были добавлены, получилось только после того, как добавил правильно в NAT (chain dstnat, dst.port 514, action=netmap 192.168.65.93 to ports 514). Я думал, что и без него микротик должен отправлять пакеты.

  5. Виктор

    Можно ли копить статистику на самом роутере и выкачивать её на внешний ресур только по необходимости, раз в неделю например? Или просматривать логи прямо на роутере?

  6. Добрый день!
    Подскажите поднял на CentOS Syslog в настройках указал только две строки:
    $template FILENAME,"/var/log/!remote/%fromhost-ip%/syslog.log"
    *.* ?FILENAME
    В Mikrotik указал какие логи слать на удаленный сервер и тишина ничего не падает...514 порт на CentOs открыт не подскажите куда копать?

Добавить комментарий

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar