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

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

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

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

В статье рассматривается настройка централизованного сбора логов и графического отображения статистики по ним в веб-интерфейсе с помощью пакетов 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 — возврат к выводу без фильтров с текущим сообщением в топе (в зависимости от того на какой строке было выбрано).

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

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

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

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

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

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

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

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

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.