Skip to main content
Настройка fluentd

Настройка fluentd

Принцип работы fluentd очень простой. Он принимает данные от различных источников, проверяет есть ли соответствие по определенному критерию. После проверки отправляет полученное сообщение на хранение или обработку.

Конфигурационный файл находится по адресу /etc/td-agent/td-agent.conf и состоит из 6ти так называемых секций. Основные мы сейчас рассмотрим.

  • source — секция описывает источник данных. В этом разделе мы описываем то, откуда к нам поступают данные, их источник.
  • match — эта секция описывает, что нам делать с данными, куда их направить. Будь это передача другому приложению или запись в файл.
  • filter — не часто приходится использовать эту секцию, позволяет нам изменять полученные данные.
  • system — содержит настройки приложения.
  • label — позволяет объединить секции match и filter. Упрощает внутренний роутинг, грубо говоря, будем в конфигурации использовать меньше тегов.
  • include — позволяет подключать конфигурационные файлы. Полезно при большом количестве источников.

Основное назначение разделов конфигурации разобрали, теперь приступим к настройке. Будем с одной машины отправлять логи при помощи rsyslog по tcp протоколу.

Создание файла конфигурации

Для упрощения редактирования я создал новый файл в директории /etc/td-agenthost.conf. В основном файле конфигурации td-agent.conf, который расположен в этой же директории, добавил строчку в конце @include host.conf. Теперь конфигурационный файл готов к правкам, откроем наш созданный host.conf.

source

Как и писал выше, в этом разделе мы будем описывать источник данных для хранения. Мы будем принимать логи по сети от другого сервера и складывать их у себя в определенной папке. Для этого добавим в конфиг следующее:

<source>
    type syslog
    port 42185
    tag rsyslog
</source>

Этот конфиг говорит нам, что мы будем использовать входящий плагин syslog, слушать он будет порт 42185, на этот порт мы будем отправлять логи из других машин и помечать тегом rsyslog, этот тег мы будем использовать в секции match.

match

Сообщения мы уже можем принимать, теперь нужно их обработать. Конфигурация обработчика:

<match rsyslog.**>
        type copy
        <store>
                type file
                path /var/log/fluent/adminnotes
                append true
                time_slice_format %Y%m%d
                time_slice_wait 10m
                time_format %Y%m%dT%H%M%S%z
                compress gzip
                utc
        </store>
</match>

Здесь я буду использовать плагин copy, так как в будущем собираюсь не только сохранять логи в файл, но и отправлять в другие источники, поэтому type указываем copy. Далее внутри match объявляем секцию store в которой используем плагин file. Этот плагин записывает поступающие сообщения в файл, в данной конфигурации есть опция time_slice_format %Y%m%d, она говорит, что нужно сохранять один файл на в сутки. Другими словами, на одни сутки у нас будет один файл с логом.
Все, теперь мы готовы принимать логи. Перезапустим fluentd(/etc/init.d/td-agent restart) и приступим к настройке rsyslog на машине-отправителе.

 

Rsyslog

Rsyslog — популярный, быстрый, гибкий сервис для управления логами. Нам он нужен в частности, чтобы отдавать логи на машину с установленным fluentd.

Установка rsyslog

Установка очень тривиальна и проста, запуск одной команды сделает всё за вас:

apt-get install rsyslog

 

Настройка отправки логов

Открываем файл конфигурации nano /etc/rsyslog.conf и вносим правки(под sudo разумеется):

*.* @10.0.2.15:42185

Я добавил эту строку вначале файла, естественно адрес и порт указываем того хоста, который будет принимать логи. Теперь все логи которые описаны в конфигурационных файлах будут успешно доставлены на машину с fluentd демоном. Перезапускаем service rsyslog restart и через некоторое время по указанному пути, который мы указали в конфиге fluentd, обнаружим файлы с логами от удаленного сервера.

Вот таким простым способом мы можем сделать самую элементарную схему отправки и хранения логов на специальном сервере.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *