Мониторинг логов в онлайн режиме с помощью Log.io в RHEL/CentOS 7/6

Log.io это небольшое, но эффективное приложение, основанное на Node.js и Socket.io, позволяющее контролировать журналы (логин) Linux в режиме онлайн через веб-интерфейс. В прошлой инструкции я рассмотрел установку CentOS 7 на виртуальной машине, Вы можете ознакомиться с этой инструкции, если ОС у Вас ещё не установлена.

Данное руководство, позволит Вам установить и настроить сборщик логов с помощью Log.io на основании Ваших локальных лог файлов.

Шаг 1: Добавил EPEL репозиторий

CentOS Epel хранилища, предоставляют собой бинарные пакеты для Node.js и NPM модули. Все действия выполняются либо в терминале, либо по SSH. Выполняем следующую команду (все команды запускаются от привилегированного пользователя).

На RHEL/CentOS 7:

 На RHEL/CentOS 6:

Для 32 битной системы:

Для 64 битной системы:

Примерный вывод на экране:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-1

После добавления EPEL репозитория, необходимо обновить систему:

 Шаг 2: Установка Node.js и NPM пакетов

Node.js это яваскрипт установленный на стороне сервера, позволяет создавать сетевые приложения. NPM (Node Package Manager) пакетный менеджер для Node.js. Следующим шагом мы установим их:

Примерный вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-2

Шаг 3: Установка и настройка Log.io приложения

Log.io приложение должно быть установлено с помощью NPM. Так же все делаем от пользователя с правами администратора, дабы быть уверенным что на все действия при установке хватит прав. В идеале, производим установку от пользователя root. Итак, установка:

Вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-3

Как видим, все легко и просто! Это радует. Теперь перейдем в домашний каталог нашего пользователя (root в моем случае), проверим текущий путь командой:

Примерный вывод, говорящий нам о том что мы находимся в папке root:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-4

Если папка иная, переходим

И переходим в папку с .log.io

и просмотрим имеются ли в ней файлы:

Примерный вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-5

Значит все хорошо, и файлы настройки у нас имеются. Далее настроим Log.io для контроля наших файлов журналов в реальном времени.

Вступление для настройки:

Harvester — отслеживает изменения в указанных локальных файлах журналов (в наших логах) и отправляет их через socket.io по TCP протоколу, который в дальнейшем связывается с Log.io на локальный либо удаленный сервер. В файле harvester.conf настраивается ip адрес, который будет слушаться для раздачи этих данных (по умолчанию 0.0.0.0 — слушает все Ваши ip адреса, и может быть использован для удаленного соединения с сервером к примеру по внешнему ip адресу)

Серверная часть Log.io слушает все сетевые интерфейсы (если в log_server.conf не указан конкретный ip адрес и ждем сообщения от локального или удаленного Harvester’а) — для настройки используется файл log_server.conf, как Вы поняли.

Log.io веб-сервер так же слушает все сетевые интерфейсы, прослушивает все сетевые соединения на порт 28778 и выводит все сообщения, полученные от Log.io сервера. В общем, создан он для отображения полученных данных. Настраивается он в файле web_server.conf.

Для начала откроем harvester.conf для редактирования. По умолчанию в данном файле настроен только мониторинг Apache сервера, к примеру для нас нет особой необходимости мониторить веб сервер Apache, и мы просто будем мониторить наши системные log файлы, заодно установим мой любимый mc файл менеджер (для последующего редактирования файлов конфигурации с помощью встроенного в mc редактора файлов — mcedit):

После этого, редактируем наш файл harvester.conf :

Заменим nodeName — на имя нашего хоста, можете узнать так:

Примерный вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-10

То есть в моем случае nodeName — localhost.localdomain, его и укажем в файле конфигурации.

И поменяем в logStreams мониторинг с вебсервера Apache на более интересный на мой взгляд логи — audit, messages, secure, httpd — access_log, error_log и cron, для этого по аналогии пишем в файле следующее:

Если Вы не планируете удаленное соединение с сборщиком лог файлов, Вы можете поменять значение host с ‘0.0.0.0’ на ‘127.0.0.1’, чтобы, слушался только локальный адрес. Это более безопасно. Итак, если наши планы совпадают, то конфиг harvester.conf будет у нас таким:

Далее, настраиваем log_server.conf, если мы исправили вышеуказанный файл harvester.conf на 127.0.0.1, то соответственно нужно прописать и в данном файле соединение к 127.0.0.1:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-6

Тут все просто.

Далее, настраиваем web_server.conf, так же, можем указать host — ip адрес, который будет слушать веб-сервер, можем указать к примеру внутренний ip адрес в локальной сети, или просто 127.0.0.1, чтобы доступ был только с локальной машины. Я менять не буду, так как у меня используется только внутренний ip адрес в локальной сети, но, если у Вас ситуация иная — смените от греха подальше :) после этого — меняем логин и пароль для HTTP аутентификации (не забываем при этом раскомментировать эту часть настройки):

Кроме этого, в качестве дополнительной меры безопасности Вы можете использовать SSL соединение по средствам HTTPS, чуть ниже можно добавить данные сертификаты. Итак, в итоге мой файл получиться вот таким:

Меняем логин и пароль вот в этом месте:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-7

 

Шаг 4: Добавляем правила к нашему файрфолу и запускаем приложение Log.io

Чтобы открыть доступ к порту 28778, на котором у нас находится веб-сервер Log.io, добавим правило к файрволу, с помощью команды:

Примерный вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-8

Шаг 5: Запускаем Log.io приложение и входим в веб-интерфейс

Для того, чтобы запустить Log.io мониторинг, запускаем от администратора следующие команды. Сначала запустим наш Log.io сервер:

а далее запустим сборщик логов (harvester):

Примерный вывод:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-9

 

После старта сервисов, открываем браузер и вводим ip адрес нашего сервера и порт указанный в файле web_server.conf, если Вы открываете с локальной машины — то можно воспользоваться

если к примеру у сервера адрес 192.168.0.105, то:

И далее увидим запрос логина и пароля (который мы ранее вводили в настройке web_server.conf):

centos-rhel-monitoring-servernih-logov-failov-zhurnala-11

И с помощью кнопки «New Screen» мы можем создать новые окна для логов. И далее настроить отображение логов к примеру в первом и втором окне.. в первом и третьем. То есть у нас получиться что в первом окне у нас все логи, а к примеру во втором только логи с файла audit:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-12

 

Так же, можно отфильтровать лог файл по определенному значению, к примеру — нам интересно кто входил в ssh под адресом 192.168.0.103, для этого — подводим к нужному нам экрану и в Filter вписываем адрес «192.168.0.103»:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-13

Кстати, надеюсь Вы заметили что все сообщения появляются в режиме реального времени, как и обещал разработчик.

Шаг 6: Создаем скрипт запуска Log.io

Для того, чтобы запускать, останавливать и узнавать статус приложения Log.io, нам необходимо написать скрипт и разместить его в папке /usr/local/bin и дадим на него права запуска.

Далее вставляем наш скрипт:

После чего, даем права запуска на файл:

Теперь, чтобы остановить сервис мы можем ввести в консоле:

Чтобы вновь запустить сервис:

Не удивляемся если при старте выпадет ошибка «Unable to connect server…» просто нажимаем Enter и все будет хорошо.

Узнать статус (запущен ли процесс):

Пример вывода:

centos-rhel-monitoring-servernih-logov-failov-zhurnala-14

На этом все. На мой взгляд Log.io — хорошее и эффективное средство для мониторинга как локальных журналов сервера, так и удаленных серверов. Дабы быстро реагировать на какие либо проблемы в системе, дабы аптайм был наиболее устойчив.

comments powered by HyperComments