Сергей Маликов
07.11.2019
2195

Настройка логирования с помощью Rsyslog и Loganalyzer

В статье рассматривается настройка централизованного сбора логов и графического отображения статистики по ним в веб-интерфейсе с помощью пакетов Rsyslog и Loganalyzer на CentOS 7. Для настройки использовались две машины: Сервер – ip 192.168.32.115, клиент – ip 192.168.32.116, hostname – client1. Настройка сервера: Перед установкой Rsyslog установить пакеты libestr и libee. Установка репозитория mysql Установка необходимых […]

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

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

Сервер – ip 192.168.32.115, клиент – ip 192.168.32.116, hostname – client1.

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

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

cd /usr/src
wget http://libestr.adiscon.com/files/download/libestr-0.1.11.tar.gz
tar xzvf libestr*
cd libestr*
./configure --libdir=/usr/lib --includedir=/usr/include
make
make install
yum install libee
Установка репозитория mysql
wget http://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm

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

wget http://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm

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

yum install php-mysql php mysql mysql-server httpd

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

chkconfig mysqld on ; chkconfig httpd on
service mysqld start ; service httpd start

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

yum install -y rsyslog-mysql rsyslog

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

chkconfig rsyslog on 
service rsyslog start

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

grep 'temporary password' /var/log/mysqld.log
Вход с временным паролем для root в консоль mysql
Вход с временным паролем для root в консоль mysql

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

ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
Смена пароля пользователя mysql
Смена пароля пользователя mysql

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

#создание отдельного пользователя для rsyslog - rsyslog
CREATE USER 'rsyslog_user'@'localhost' IDENTIFIED BY 'Pa$$_w0rd';
Создание пользователя rsyslog
Создание пользователя rsyslog
#создание базы данных и схемы таблиц
CREATE DATABASE rsyslog_db;
USE rsyslog_db;
Создание базы данных rsyslog
Создание базы данных rsyslog
# создаем таблицы в бд rsyslog_db
CREATE TABLE SystemEvents
(
ID int unsigned not null auto_increment primary key,
CustomerID bigint,
ReceivedAt datetime NULL,
DeviceReportedTime datetime NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
Importance int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
EventBinaryData text NULL,
MaxAvailable int NULL,
CurrUsage int NULL,
MinUsage int NULL,
MaxUsage int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
GenericFileName VarChar(60),
SystemID int NULL
);
CREATE TABLE SystemEventsProperties
(
ID int unsigned not null auto_increment primary key,
SystemEventID int NULL ,
ParamName varchar(255) NULL ,
ParamValue text NULL
);
Создание таблиц
Создание таблиц
# предоставить пользователю rsyslog права доступа к базе данных
GRANT ALL PRIVILEGES ON rsyslog_db.* TO rsyslog_user IDENTIFIED BY " Pa$$_w0rd";
flush privileges;
Предоставление пользователю rsyslog права доступа к базе данных
Предоставление пользователю rsyslog права доступа к базе данных
#выход из mysql
exit

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

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

vi /etc/rsyslog.conf
#Модули imjournal, imusock раскомментировать
#Rsyslog может работать по UDP (более быстро, но ненадежно) и по TCP (медленнее, надежнее) 
#или по обоим протоколам вместе.
#Для работы Rsyslog по UDP раскомментировать в конфигурационном файле строки
$ModLoad imudp
$UDPServerRun 514
#Для TCP
$ModLoad imtcp
$InputTCPServerRun 514
#После них, перед блоком Global Directives – создание шаблона для получения сообщений от 
#удаленных хостов.
#Запись сообщений журнала в отдельные файлы, в /var/log/ где файлы будут именоваться на
#основе имени хоста и имени приложения удаленной машины.
$template RemoteLogs,"/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
#Для того чтобы отфильтровать принимаемые сообщения от удаленных хостов нужно указать в 
#конфигурационном файле требующиеся источники и уровень.
#[источник].[уровень]? RemoteLogs
#Например, для отправки всех информационных сообщений, от всех процессов кроме почты:
#*.info, mail.none? RemoteLogs
#указываем, что применяем шаблон ко всем полученным логам
*.* ?RemoteLogs
#правило для перенаправления, указывает rsyslog прекратить дальнейшую обработку сообщений,
#а не записывать их локально. Для того, чтобы удаленные сообщения не были записаны дважды.
#Использование & ~ устарело в rsyslogd v7, вместо этого использовать & stop
& stop
#### GLOBAL DIRECTIVES ####
#Конфигурирование пересылки сообщений syslog в БД.
#Загружаем драйвер mysql
$ModLoad ommysql
#Настраиваем пересылку логов. Общий вид источник.категория_лога место_записи(хост, имя базы 
#данных, rsyslog-пользователь в mysql, последний параметр – пароль пользователя rsyslog в 
#mysql). Для пересылки всех сообщений указать ‘*.*’
*.* :ommysql:127.0.0.1,Syslog,rsyslog,пароль_пользователя_rsyslog_в_mysql
#Категории логов
#№	Уровень	Значение
#0	emerg	Система не работает (PANIC)
#1	alert	Серьезная проблема, требующая внимания
#2	crit	Критическая ошибка
#3	err	Ошибка (ERROR)
#4	warning	Предупреждение (WARN)
#5	notice	Важное информационное сообщение
#6	info	Информационное сообщение
#7	debug	Отладочная информация
#Источник лога.
#№	Название 	Значение
#0	kern	Сообщения, отправляемые ядром
#1	user	Пользовательские программы
#2	mail	Почта
#3	daemon	Сервисы (демоны)
#4	auth	Безопасность/вход в систему/аутентификация
#5	syslog	Сообщения от syslog
#6	lpr	Логи печати
#7	news	Новостные группы (usenet)
#8	uucp	Unix-to-Unix CoPy (копирование файлов между компьютерами)
#9	cron	Планировщик заданий
#10	authpriv	Безопасность/вход в систему/аутентификация - защищенный режим
#11	ftp	Логи при передачи данных по FTP
#12	ntp	Лог службы синхронизации времени (существует не везде)
#13	security, log audit	Журнал аудита (существует не везде)
#14	console, log alert	Сообщения, отправляемые в консоль (существует не везде)
#15	solaris-cron, clock daemon	Cron в solaris (существует не везде)
#16-23	local0 - local7	Для локального использования. Уровень серьезности определяется числом
#от 0 до 7.

#После настроек бд в GLOBAL DIRECTIVES  также указываем протокол и подсеть(и), из которой(ых) 
#можно принимать логи:
$AllowedSender TCP, 192.168.32.0/24
Чтобы проверить конфигурационный файл rsyslog, запустите: sudo rsyslogd -N1 В случае возникновения проблем, rsyslog будет о них писать в /var/log/messages, либо о них будет указано в выводе команды service rsyslog status.
Проверка конфигурационного файла rsyslog
Проверка конфигурационного файла rsyslog

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

service rsyslog restart

Установка LogAnalyzer

cd /usr/src
wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.8.tar.gz
tar xzvf loganalyzer-4.1.8.tar.gz
Скачивание, распаковка loganalyzer
Скачивание, распаковка loganalyzer
cd loganalyzer-4.1.8/src

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

mkdir /var/www/html/log
cp -R * /var/www/html/log
cd ../contrib
cp * /var/www/html/log
cd /var/www/html/log
chmod +x configure.sh secure.sh
./configure.sh

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

ls -l

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

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

mysql -u root -p
create database loganalyzer_db;
CREATE USER 'loganalyzer_user'@'localhost' IDENTIFIED BY 'Pa$$_w0rd';
GRANT ALL PRIVILEGES ON loganalyzerdb.* TO loganalyzer_user IDENTIFIED BY "Pa$$_w0rd";
flush privileges;
exit
Создание базы данных LogAnalyzer
Создание базы данных LogAnalyzer

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

Сообщение об отсутствии конфигурационного файла при установке.
Сообщение об отсутствии конфигурационного файла при установке.

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

Installing LogAnalyzer - Step 1
Installing LogAnalyzer – Step 1

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

Installing LogAnalyzer - Step 2
Installing LogAnalyzer – Step 2

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

Installing LogAnalyzer - Step 3
Installing LogAnalyzer – Step 3

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

Installing LogAnalyzer - Step 4
Installing LogAnalyzer – Step 4

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

Installing LogAnalyzer - Step 5
Installing LogAnalyzer – Step 5

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

Installing LogAnalyzer - Step 6
Installing LogAnalyzer – Step 6

Создание источника системных сообщений

Installing LogAnalyzer - Step 7
Installing LogAnalyzer – Step 7

Завершение установки

Installing LogAnalyzer - Step 8
Installing LogAnalyzer – Step 8

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

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

или

rm -rf /etc/localtime ; ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизировать время.

yum –y install chrony ; chkconfig chronyd on ; service chronyd start

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

service chronyd status ; chronyc tracking ; date; ls -l /etc/localtime
Синхронизация времени
Синхронизация времени

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

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

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

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

nano /etc/rsyslog.d/all.conf

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

*.* @@192.168.32.115:514
#Также изменяем отправку на удаленный сервер логов asterisk. На сервере логи будут храниться в 
#отдельном файле /var/log/rsyslog/client1/asterisk.log(вначале на сервере пишутся в 
#/var/log/rsyslog/client1/.log ). В параметре Severity указывается уровень важности 
#логов (см. табл. выше), File – местоположение логов на клиенте(/var/log/asterisk/full),
#Facility-объект(см. табл. выше)
module(load="imfile" PollingInterval="5")
input(type="imfile"
      File="/var/log/asterisk/full"
      Tag="asterisk"
      Severity="debug"
      Facility="local7")
local7.* @@192.168.32.115:514
Символ @ перед IP-адресом значит, что сообщения нужно передавать по UDP. Чтобы использовать вместо этого TCP, введите @@.

Перезапускаем rsyslog

service rsyslog restart

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

После авторизации на сервере в веб панели LogAnalyzer отображаются недавние сообщения Rsyslog.

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

При переходе в пункт меню Statistics – данные отображаются в виде графиков.

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

В LogAnalyzer можно отфильтровать вывод применив фильтры по колонкам Facility (Обьект), Severity (Серьезность), Host (Хост), Syslogtag (Системный журнал), Messagetype (Тип сообщения) нажав на какое-либо значение-тэг. После нажатия появится контекстное меню Available searches(список фильтров для поиска). Например, для хоста client1:

Add ‘client1’ to filterset  – Добавить ‘client1’ в поле фильтров поиска (доступно, если хотя бы один фильтр поиска был установлен ранее)

Exclude ‘client1’ from filterset – Исключить ‘client1’ в поле фильтров поиска (доступно, если хотя бы один фильтр поиска был установлен ранее)

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

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

Предположим, необходимо просмотреть только системные сообщения для хоста client1 – выбираем третий пункт Filter ‘client1’ only.

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

После этого в выводе появятся сообщения, относящиеся только к хосту client1.

Применен фильтр – отображение сообщений только хоста client1
Применен фильтр – отображение сообщений только хоста client1

Для возврата и сброса фильтров можно нажать на одну из иконок раскрывающегося списка (после столбца Messagetype) Back to unfiltered view with this message at top – возврат к выводу без фильтров с текущим сообщением в топе (в зависимости от того на какой строке было выбрано).

Возврат к выводу без фильтров
Возврат к выводу без фильтров
 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices