Rsyslog и loganalyzer настройка на centos 7

Обновлено: 05.07.2024

Настройте сервер журналов, используя rsyslog + loganalyzer под CentOS7

С увеличением количества серверов и сетевого оборудования в компьютерном зале управление журналами и запросы стали головной болью для системных администраторов.

Общие проблемы, с которыми сталкиваются системные администраторы:

1. Невозможно войти на каждый сервер и устройство для проверки журналов во время текущего обслуживания;
2. Объем памяти на сетевом устройстве ограничен, невозможно хранить журналы со слишком длинными датами, а системные проблемы могут быть вызваны некоторыми операциями, которые произошли давно;
3. В некоторых недопустимых ситуациях пользователи обычно очищают локальные журналы и трассировки;
4. Системы мониторинга, такие как zabbix, не могут заменить управление журналом и не могут контролировать такие элементы, как вход в систему и выполнение запланированных задач.
По указанным выше причинам крайне необходимо создать сервер журналов Rsyslog для централизованного управления журналами в текущей сетевой среде.

Преимущества сервиса Rsyslog:

1. Сервер Rsyslog может поддерживаться большинством сетевых устройств.Большинство опций системных устройств сетевых устройств имеют опции конфигурации службы удаленного ведения журнала. Просто введите IP-адрес и порт (большинство устройств уже используют 514 по умолчанию), а затем подтвердите его;
2. Серверу Linux нужно только добавить простую строку в конфигурацию локальной службы Rsyslog для отправки журнала на сервер журналов, его очень просто развернуть и настроить;
3. Серверы Windows также могут поддерживаться с помощью программного обеспечения (такого как evtsys), развертывание и настройка несложные, но некоторые программы платные;
4. С помощью внешнего анализатора и другого программного обеспечения вы можете легко осуществлять графическое управление и вести журналы запросов.

Выключите брандмауэр:
systemctl stop firewalld
systemctl disable firewalld
Установите SELINUX на отключенный
setenforce 0

Проверьте, установлено ли программное обеспечение rsyslog

Установите модуль rsyslog для подключения к базе данных MySQL


Ведущий:
Отредактируйте файл конфигурации /etc/rsyslog.conf

Установите rsyslog для автоматического запуска и перезапустите службу


Испытательная машина:
Отредактируйте /etc/rsyslog.conf для вывода его журнала на хост

Перезапустите службу rsyslog


В это время вы можете сразу увидеть изменения журнала на хосте, как показано на рисунке:

В настоящее время всю информацию журнала на тестовом компьютере можно увидеть на хосте.

Запустите MySQL и установите его для автоматического запуска

На данный момент вы можете войти в систему как администратор

Затем вам нужно ввести пароль (система автоматически сгенерирует временный пароль во время установки) можно найти через grep password /var/log/mysqld.log, как показано в черной области

Пароль необходимо изменить после входа в систему. Метод заключается в следующем:

Совет: пароль должен соответствовать следующим правилам: как минимум одна заглавная буква, одна строчная буква, одно число, один специальный символ, а длина пароля должна превышать 8

Запустите службу и присоединитесь к загрузке для автоматического запуска:


Тогда вы можете увидеть информацию, связанную с PHP в браузере

Импортировать файл базы данных rsyslog-mysql

Затем войдите в базу данных, чтобы увидеть, что будет еще один

Используйте базу данных и просмотрите таблицу

Загрузить проект анализа журнала

Переключитесь в каталог loganalyzer-3.6.5 и выполните

Перейдите в каталог /loganalyzer-3.6.5/contrib/ и выполните

Перейдите в каталог / var / www / html / webloganalyzer и выполните

Логирование с помощью Rsyslog и Loganalyzer

В статье рассматривается настройка централизованного сбора логов и графического отображения статистики по ним в веб-интерфейсе с помощью пакетов Rsyslog и Loganalyzer на CentOS 7.

Для настройки использовались две машины:

Настройка сервера:

Перед установкой Rsyslog установить пакеты libestr и libee.

Установка репозитория mysql

Установка необходимых пакетов.

Добавление в автозагрузку и запуск служб:

Теперь можно установить пакеты rsyslog:

Добавляем в автозагрузку rsyslog и запускаем сервис.

После установки mysql для того, чтобы найти временный пароль для входа с правами администратора выполнить команду:

Т.к. временный пароль хранится в простом текстовом файле /var/log/mysqld.log, для изменения пароля пользователя root в консоли mysql ввести:

Смена пароля пользователя mysql

Смена пароля пользователя mysql

Также, в консоли mysql:

Создание пользователя rsyslog

Создание пользователя rsyslog

Создание базы данных rsyslog

Создание базы данных rsyslog

Создание таблиц

Создание таблиц

Предоставление пользователю rsyslog права доступа к базе данных

Предоставление пользователю rsyslog права доступа к базе данных

Настройка конфигурационного файла /etc/rsyslog.conf.

Открываем файл для редактирования:

Чтобы проверить конфигурационный файл rsyslog, запустите: sudo rsyslogd -N1 В случае возникновения проблем, rsyslog будет о них писать в /var/log/messages, либо о них будет указано в выводе команды service rsyslog status.

Проверка конфигурационного файла rsyslog

Проверка конфигурационного файла rsyslog

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

Установка LogAnalyzer

Скачивание, распаковка loganalyzer

Скачивание, распаковка loganalyzer

Создаем директорию, копируем файлы LogAnalyzer.

Последняя команда создаст пустой файл config.php и предоставит право записи в него. Далее необходимо запустить

для проверки создания файла config.php. Настройка через браузер внесет изменения в этот файл.

Создание пользователя и базы данных в mysql:

Создание базы данных LogAnalyzer

Создание базы данных LogAnalyzer

Дальнейшие настройки производятся в веб. В браузере необходимо перейти по адресу ip_адрес_сервера/log.

Нажать далее (Next)

Проверка прав на запись для файла config.php

Настройка базовой конфигурации

Проверка создания таблиц

Создание учетной записи для входа в LogAnalyzer

Переходим по ссылке для авторизации и вводим данные ранее созданной учетной записи для входа в LogAnalyzer

Авторизация LogAnalyzer

Авторизация LogAnalyzer На сервере и клиенте в файерволе также необходимо будет разрешить прохождение udp и tcp трафика по 514 порту, отключить selinux, установить часовой пояс:

И проверить установленное время и часовой пояс:

Синхронизация времени

Синхронизация времени

Настройка клиента

На клиенте также устанавливаем Rsyslog

Для отправки всех логов.

Открываем конфигурационный файл

Добавляем в конфигурационный файл

Далее, для того, чтобы логи со временем не занимали на сервере большой объем свободного места, необходимо будет также настроить и ротацию логов.

Просмотр статистики в веб-интерфейсе LogAnalyzer

Просмотр статистики в веб-интерфейсе LogAnalyzer

Filter ‘client1’ only – Фильтровать вывод только по значению ‘client1’

Show all except ‘client1’ – Вывести все, исключая ‘client1’

Список доступных вариантов фильтрации по хосту

Список доступных вариантов фильтрации по хосту

Возврат к выводу без фильтров

Возврат к выводу без фильтров

date

17.09.2019

directory

Linux

comments

Один комментарий

LogAnalyzer – это web приложение, которое предназначено для просмотра логов системных событий, полученных от syslog, при помощи веб-браузера. Rsyslog – это приложение, представляющее собой расширение стандартного демона syslog, одной из особенностью которого является возможность сохранять события в БД MySQL. При помощи этих двух замечательных программ, возможно создать централизованный сервер, куда будут перенаправляться все события от различных устройств в сети, который бы реализовывал функции по удобному архивированию и поиску событий по всем событиям на всех сетевых устройствах в периметре сети. В данной статье я опишу процедуру установки на Linux CentOS службы rsyslog (сбор и агрегирование событий syslog) и LogAnalyzer (предоставляет дружественный интерфейс для просмотра и поиска по собранным логам).

Сначал необходимо установить ряд дополнительных пакетов RPM. Т.к. службы LogAnalyzer, Rsyslog и MySQL будут работать на одном сервере, нужно установить следующие пакеты с помощью yum:

Теперь нужно удостоверится, что MySQL и Apache настроены на автоматический запуск, после чего запустим их:

По умолчанию, пользователь root БД MySQL, имеет пустой пароль, поэтому следует обезопасить конфигурацию, задав новый пароль:

Далее импортируем схему базы данных rsyslog в MySQL. В зависимости от версии rsyslog, измените путь к файлу “createDB.sql”.

Хорошим тоном считается ограничение доступа приложений к базе данных, поэтому мы создадим специального пользователя для доступа к БД rsyslog. Для ещё большего затягивания настроек безопасности, можно создать отдельные учетные записи для rsyslog и LogAnalyzer. Необходимо предоставить доступ пользователя rsyslog к базе MySQL только с локального интерфейса localhost. Также мы должны выполнить MySQL команду “flush privileges” для немедленного применения всех прав.

Сейчас нужно выключить существующую службу syslog и включить rsyslog:

Или скачать LogAnalyzer прямо с Linux сервера (должен быть установлен wget):

Распакуем файлы LogAnalyzer:

Теперь нужно скопировать файлы LogAnalyzer в каталог веб-сервера Apache (стандартный конфиг).

Перейдите в созданный каталог LogAnalyzer, запустите скрипт configure.sh. В результате создастся пустой файл конигурации config.php, который наполнится в следующих шагах.

В середине окна выберите ссылку “Click here to Install”.

Настройте параметры отображения журналов и опять нажмите Next.

Теперь нужно указать адрес сервера с базой данных, имя пользователя и пароль для доступа к ней (если вы не забыли БД называется rsyslog). Нажав кнопку Next, вы увидите результат проверки правильности введенных данных и корректность подключения.

В том случае, если вы настроили все правильно, перед вами появится главная страница LogAnalyzer, на которой по мере получения будут отображаться логи. Можете попробовать сгенерировать различные системные события и посмотреть что будет происходить на страничке LogAnalyzer. Т.к. я настроил логирование событий типа “authpriv”, это означает, что в лог будут попадать такие события, как вход/выход пользователя, или же вызов команды переключения пользователя (su).

Настройка Rsyslog для удаленного сбора логов

Не забудьте перезапустить службу rsyslog на центральном сервере ведения логов:

Следующий этап – настройка удаленных клиентов для отправки событий на центральный сервер rsyslog. Если на клиенте запущен rsyslog, в файл “/etc/rsyslog.conf” необходимо добавить, например, следующую строку:

Перезапустите сервер rsyslog на клиенте и попробуйте зайти/выйти на данную систему. Если вы ничего не упустили, на веб странице LogAnalyzer появится соответствующее событие!

Также рекомендую познакомится со статьей об организации центрального сервера логов на базе Windows Server 2008


Совсем недавно у меня возникла необходимость создать центральный лог-сервер с веб-интерфейсом и в этой статье я хотел бы поделиться опытом, возможно кому-то он будет полезен. Я опишу установку и настройку веб-просмотрщика логов LogAnalyzer, Rsyslog-клиента, который будет отсылать все логи на удаленный Rsyslog-сервер, и последний, в свою очередь, будет писать их в базу MySQL.

В качестве ОС я выбрал Ubuntu 12.04.

Адреса тестовых вебнод:
192.168.1.51 (loganalyzer-mysql.ip) — Rsyslog-сервер, на этом хосте также будет проинсталлирован LogAnalyzer
192.168.1.50 (loganalyzer-mongo.ip) — Rsyslog-клиент, который будет отсылать логи на сервер loganalyzer-mysql.ip

Настраиваем серверную часть, для чего добавим репозиторий от разработчика Rsyslog:



Конечно, можно воспользоваться версией Rsyslog, что доступна в стандартных репозиториях, однако у меня имелась проблема с открытием 514 TCP-порта от имени пользователя syslog.

Обновляем пакеты и устанавливаем Rsyslog с дополнительными пакетами, которые в дальнейшем будут необходимы:


Как я уже сказал выше, будем настраивать запись логов в локальную MySQL базу. Также нужно будет ответить на некоторые вопросы в процессе установки. Пакет rsyslog-mysql во время конфигурации запросит создание пользователя и базы для хранения будущих логов:


Предварительно следует указать пароль для пользователя root базы данных. С его помощью будет залита структура базы rsyslog:


Указания пароля для отдельного пользователя rsyslog базы данных:


Если MySQL-сервера не существовало на хосте — то установщик проинсталирует его и также предложит создать пароль для пользователя root.

Конечный конфиг интеграции Rsyslog и MySQL выглядит следующим образом:


*.* — запись всех логов в базу
ommysql — модуль, с помощью которого rsyslog будет писать в MySQL
Syslog — имя базы
rsyslog — пользователь, которому предоставлен доступ писать в базу Syslog
p@ssw0rD — пароль пользователя rsyslog

Перегружаем rsyslog и проверяем базу:


Похоже, что логи пишутся, как и ожидалось.
Теперь настроим прием логов от удаленного хоста. Для этого отредактируем конфигурационный файл на Rsyslog-сервере, т.е. проверим не закомментированы ли строки:


Перегружаем службу rsyslog. Таким образом 514-е порты UDP и TCP будут открыты для приема логов.

Переходим к настройке Loganalyzer. Он будет установлен на ноду с IP 192.168.1.51, то есть на ноду с Rsyslog-сервером. В качестве веб-сервера используем Apache, поэтому установим его и пакеты необходимые для работы LogAnalyzer-а:


Скачиваем последний Loganalyzer, распаковываем его, ставим необходимые права на конфигурационные скрипты:


На момент публикации этой статьи последняя версия просмотрщика логов Loganalyzer — 3.6.5.
Создаем виртуальный хост, в котором следует не забыть, как минимум, изменить параметры ServerName и DocumentRoot:

Активируем виртуальный хост, проверяем конфигурационные файлы и перезагружаем Апач:


Открываем ссылки loganalyzer-mysql.ip/install.php (в моем случае loganalyzer-mysql.ip через /etc/hosts привязан к IP-адресу 192.168.1.51 ). Отвечаем на поставленные вопросы:


Проверка прав доступа к директориям:


Конфигурация пользователя для базы и некоторых дополнительных опций. Вписываем сюда значения из конфигурационного файла /etc/rsyslog.d/mysql.conf о котором я писал выше. Для этого может использоваться только база данных MySQL.


Проверка доступов к базе по предоставленному логину/паролю и заливка структуры таблиц, с которыми будет работать LogAnalyzer.


Создание администратора к web-интрерфейсу LogAnalyzer.


Добавляем источник логов для отображения. LogAnalyzer умеет показывать записи из текстового файла, базы данных MongoDB или MySQL. Описываем опции доступа к базе (все пишем в точности так как показано на скриншоте ниже, регистр также важен):



Все готово! Логинимся, используя логин/пароль.


Интерфейс LogAnalyzer-а выглядит следующим образом:


Он также умеет рисовать немного графиков:


Пользователям браузера Chrome сразу посоветую убрать галочку «Use Popup to display the full message details», иначе будут заметны значительные графические баги:


Сейчас LogAnalyzer отражает логи только с одной хоста, то есть именно те​, что собирает rsyslog. Поэтому настраиваем отсылки логов с удаленного сервера, для чего редактируем конфиг rsyslog на хосте 192.168.1.50 и добавляем опцию:


*.* — описание всех логов по важности и программах, которые их пишет.
@@ — отсылать логи по TCP
@ — отсылать логи по UDP
192.168.1.51 — сервер, на который будут направлены логи.

Иногда возникает желание отсылать логи сервисов, которые не умеют писать в syslog. Потому может быть полезная подобная конфигурация:


Все что в директории /etc/rsyslog.d/ и с окончанием conf включается в основной конфиг /etc/rsyslog.conf. В данном случае будут отсылаться логи из текстового файла /var/log/mongodb/mongodb.log и помечаться как ошибки. Все что в файле /var/log/mongodb/mongodb.log будет отослано в общий syslog и иметь такой вид:


И вот результирующий вид LogAnalyzer-а:


В качестве базы хранения логов можно использовать и другие варианты. Идеальным выбором может служить нереляционная база данных MongoDB, ведь работу с ней поддерживает как LogAnalyzer, так и Rsyslog.

Читайте также: