Главная > CentOS > Установка rsyslog+Loganalyzer на CentOS 6.5

Установка rsyslog+Loganalyzer на CentOS 6.5

В один прекрасный день мне все таки же понадобился Log сервер, а то падает cisco и не понятно что было.

Установку CentOS, отключение firewall и selinux я пропущу, кому интересно есть в статьях ниже.

Для начала установим необходимые репозитории

rpm -Uvh http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

Добавим файл

vi /etc/yum.repos.d/rsyslog.repo
[rsyslog_v8]
name=Adiscon CentOS-$releasever - local packages for $basearch
baseurl=http://rpms.adiscon.com/v8-devel/epel-$releasever/$basearch
enabled=1
gpgcheck=0
gpgkey=http://rpms.adiscon.com/RPM-GPG-KEY-Adiscon
protect=1


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

yum install Percona-Server-client-56.x86_64 Percona-Server-devel-56.x86_64 Percona-Server-server-56.x86_64
yum install rsyslog rsyslog-mysql httpd php php-mysql php-gd

Прописываем наше добро в автозагрузку

chkconfig mysql on
chkconfig rsyslog on
chkconfig httpd on

Сконфигурируем mysql

/usr/bin/mysql_secure_installation

Импортируем базу rsyslog в mysql
Подправим файл

vi /usr/share/doc/rsyslog-mysql-8.1.6/createDB.sql
CREATE DATABASE rsyslogdb; 
USE rsyslogdb; 
CREATE TABLE SystemEvents 
[...]
 
mysql -u root -p < /usr/share/doc/rsyslog-mysql-8.1.6/createDB.sql

Проверим что база создалась.

# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.6.15-56 Percona Server (GPL), Release rel63.0, Revision 519
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| SyslogDB           |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

Создадим пользователя и предоставим права на базу.

mysql> GRANT ALL ON SyslogDB.* TO logDBuser@localhost IDENTIFIED BY 'centos';
mysql> flush privileges;
mysql> exit

Сконфигурируем rsyslog
Отредактиреум конфигурационный файл.

# vi /etc/rsyslog.conf
## Раскоментируем ##
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
## Добавим ##
module(load="ommysql")
*.* :ommysql:127.0.0.1,SyslogDB,logDBuser,centos

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

Проверим пишутся ли логи в базу
Создадим сообщение в лог

logger 'hello world!'

Заходим в mysql

# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.6.15-56 Percona Server (GPL), Release rel63.0, Revision 519
 
mysql> use SyslogDB;
mysql> select * from SystemEvents limit 2 \G
 
*************************** 4. row ***************************
                ID: 4
        CustomerID: NULL
        ReceivedAt: 2014-02-24 11:18:59
DeviceReportedTime: 2014-02-24 11:18:59
          Facility: 1
          Priority: 5
          FromHost: S502IS-LOGS
           Message:  hello world!
        NTSeverity: NULL
        Importance: NULL
       EventSource: NULL
         EventUser: NULL
     EventCategory: NULL
           EventID: NULL
   EventBinaryData: NULL
      MaxAvailable: NULL
         CurrUsage: NULL
          MinUsage: NULL
          MaxUsage: NULL
        InfoUnitID: 1
         SysLogTag: root:
      EventLogType: NULL
   GenericFileName: NULL
          SystemID: NULL

Похоже, что логи пишутся, как и ожидалось.

Переходим к настройке Loganalyzer.

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

# mkdir /tmp/loganalyzer
# cd /tmp/loganalyzer
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz
# tar zxvf loganalyzer-3.6.5.tar.gz
# mkdir /var/www/loganalyzer
# mv loganalyzer-3.6.5/src/* /var/www/loganalyzer
# mv loganalyzer-3.6.5/contrib/* /var/www/loganalyzer
 
# chmod +x /var/www/loganalyzer/configure.sh /var/www/loganalyzer/secure.sh
# cd /var/www/loganalyzer
# ./configure.sh && ./secure.sh
# chown -R apache:apache /var/www/loganalyzer

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

vi /etc/httpd/conf.d/loganalyzer.conf
 
<VirtualHost *:80>
        ServerAdmin webmaster@localhost 
        ServerName loganalyzer-test.mydomain.ru   #<<---insert your domainname here
 
        DocumentRoot /var/www/loganalyzer  #<<---insert root directory of unpacked Loganalyzer
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/log/httpd/error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog /var/log/httpd/access.log combined
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
 
</VirtualHost>

Проверяем конфигурационные файлы и перезагружаем Апач:

# apachectl configtest
# service httpd restart

Открываем ссылки loganalyzer-test.mydomain.ru/install.php. Отвечаем на поставленные вопросы:

Приложу основные скриншоты.
Screen1
Screen2

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

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

# vim /etc/rsyslog.d/mongo.conf
$ModLoad imfile
$InputFileName /var/log/mongodb/mongodb.log
$InputFileTag mongodb:
$InputFileStateFile stat-mongo-error
$InputFileSeverity error
$InputFileFacility daemon
$InputRunFileMonitor
error.* @@192.168.1.50

Все что в директории /etc/rsyslog.d/ и с окончанием conf включается в основной конфиг /etc/rsyslog.conf. В данном случае будут отсылаться логи из текстового файла /var/log/mongodb/mongodb.log и помечаться как ошибки. Все что в файле /var/log/mongodb/mongodb.log будет отослано в общий syslog и иметь такой вид:
Feb 17 17:27:05 loganalyzer — mongo mongodb : Sun Feb 16 7:26:13 [ clientcursormon ] mem (MB ) res : 15 virt : 624 mapped : 0

Вот и все!!!

Да, если есть желание отправлять логи с Windows систем то можно использовать замечательный проект Eventlog to Syslog Service for Windows
Установка элементарна — скачиваем дистрибутив, в нём .dll и .exe, копируем их в %WINDIR%\System32\
Запускаем .exe с нужными параметрами.

Параметры evtsys.exe:
-i Установить сервис
-u Удалить сервис
-d Дебаг. Запуститься как консольная программа
-h host Имя хоста куда отправлять логи
-b host Имя второго хоста кому дублировать логи
-f facility Facility логов
-l level Минимальный уровень отсылаемых сообщений
0=Всё, 1=Критические, 2=Ошибки, 3=Предупреждение, 4=Информация
-n Отправлять только эвенты включенные в конфиге
-p port Номер порта syslog
-q bool Опросить DHCP чтобы получить имя хоста syslog и порт
(0/1 = включить/выключить)
-s minutes Интервал между сообщениями. 0 = Отключить

Необходимым является всего один параметр: -h хост. Чтобы установить evtsys как сервис надо указать и параметр -i. А так же нас интересует параметр -f, чтобы сменить facility по умолчанию (system daemons) на local1.
Evtsys использует цифровое обозначение facility, вот список:

0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)

Выберите тот который вам нужен и вперед, целиком команда будет выглядеть так:
%WINDIR%\System32\evtsys.exe -i -h [адрес вашего линукса с syslog] -f (от 0 — 23)

Если вы хотите исключить какое-то событие из отправки в syslog, например огромную кучу мусора появляющуюся по поводу каждого подключения к компьтеру по сети в разделе Security, можете создать файл (или открыть, если уже запустили сервис) %WINDIR%\System32\evtsys.cfg и забить в него события которые вас не интересуют в формате EventSource:EventID. Например строка “Security-Auditing:*” полностью отключит отправку раздела Security на Windows >Vista, строка “Security-Auditing:4624” отключит отправку только события с кодом 4624 (интерактивный доступ из сети к компьютеру, браузинг его кем-то из сети). Грустная ирония такова что при разработке нового Event Log’а для нового поколения серверных ОС Микрософт полностью сменила названия разделов и коды, а так же переписала и стандартные сообщения и вообще все события, так что на поколении Windows 2003 и поколении Windows 2008 названия разделов и номера событий будут кардинально различаться. Впрочем зачастую у них будет одинаковый смысл. Какое событие что значит и какие у них названия и номера удобно узнавать с сайта http://www.eventid.net/.

После чего можно открывать список сервисов Windows и запускать сервис под названием “Eventlog to Syslog” и логи начнут появляться на сервере с syslogd примерно в таком виде:

Jun 20 09:13:30 srv SRV Security-Auditing: 4634: An account was logged off. Subject: Security ID: S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-2304319227-3176 Account Name: XXXXXX$ Account Domain: XXX Logon ID: 0x325f90ec Logon Type: 3 This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.

Categories: CentOS Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.