По мотивам YouTube - Централизованный сбор логов MikroTik c помощью ELK

Настраиваем сервер

Я буду использовать свой форк ELK основанного на docker-compose. Конечно, ничего не мешает использовать свои варианты.

Для начала, мы добавим новый файл конфигурации для Logstash, который будет слушать порт 5140 именно для логов Mikrotik. Почему так? Потому как логи Mikrotik несколько отличаются от стандартных записей Syslog, и что бы мы могли отличать их по меткам в Kibana. Файл конфигурации будет доступен здесь. Для начала - проясним пару моментов в файле конфигурации:

match => {
    "message" => [
        "%{WORD:syslogtype} dns: query from %{IP:clientip}: #%{NUMBER:requestid} %{URIHOST:nsname}. %{WORD:nstype}",
        ...
    ]
}

В этом месте, мы как раз таки определяем, какие записи из всех, что нам посылает Mikrotik мы будем разбирать и в каком формате. Как видно чуть ранее, мы используем плагин фильтра под названием Grok, он помогает из мешанины текста выцеплять необходимые нам данные и уже разборчиво, в формате JSON отправлять их в Elasticsearch.

Настройка Mikrotik

  • Открываем на панели пункт меню System - Logging;
  • В появившемся окне на вкладке Action правим действие “remote” или добавляем свое;
  • В этом же окне на вкладке Rules добавляем свое правило, какие логи мы хотим отправлять в Elasticsearch.

На этом все.

Дополнительные ссылки

  1. Mikrotik - Wiki
  2. Elastic - GROK
  3. Grok Debug Test App
  4. [Logz.io - GROK]((https://logz.io/blog/logstash-grok)