Сервер логов на rsyslog+loganalyzer+mysql
01-02-2011. Разместил: synergix Чтение логов конечно вещь занятная, а то и просто необходимая, но хотелось бы чтобы логи со всех серверов хранились в одном месте, удобно представлялись, парсились в бразуере, а так же при появлении ошибок или других нехороших вещей отправляли на мылосообщение. После недолгого гугления изобретать велосипед не стали. И так будем пользоваться следующими вещами:
Rsyslog+loganalyzer+mysql
Поехали. Ставим для начала сам rsyslog он будет принимать логи на 514 порту, и складывать их в базу данных mysql
cd /usr/ports/sysutils/rsyslog4
make install clean
Заменяем стандартный syslogd
/etc/rc.d/syslogd stop
Рихтуем /etc/rc.conf:
syslogd_enable="NO"
rsyslogd_enable="YES"
rsyslogd_pidfile="/var/run/syslog.pid"
rsyslogd_flags="-c4"
mysql_enable=”YES”
apache_enable=”YES”
Редактируем /usr/local/etc/rsyslog.conf и смотрим листинг моего файла.
#### Модули ####
$ModLoad imuxsock
$ModLoad imklog
#$ModLoad immark
$ModLoad ommysql
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$ModLoad ommail
#### Чего посылаем в БД ####
#Правим под свою БД
*.* :ommysql:127.0.0.1,Имя_БД,ПользовательБД,ПарольБД
# Чмодим файлы
$FileOwner root
$FileGroup wheel
######УВЕДОМЛЯЛКА#####
$ActionMailSMTPServer АДРЕС СЕРВЕРА
$ActionMailSMTPPort 25
$ActionMailFrom АДРЕС ОТПРАВИТЕЛЯ
$ActionMailTo КОМУ СЛАТЬ МЫЛО
$template mySubject1,"On host %hostname%, Error-level by serverity"
$template myBody1,"Facility.Serverity: %syslogfacility%.%syslogpriority%
#тут надо убрать перенос!!!!!!!!!!!1
at %timegenerated% on host:
%HOSTNAME%rn %msg%"
$ActionMailSubject mySubject1
#seconds interval for mailing
$ActionExecOnlyOnceEveryInterval 10
#expression based filter
if not ($msg contains 'TopLevelSystem'
or $msg contains 'getConnectorInfo'
or $msg contains 'failed - Data stale'
or $msg contains 'DatadiscoveryfailedforConnector' )
and ($syslogseverity-text =='err'
or $syslogseverity-text =='crit'
or $syslogseverity-text =='alert'
or $syslogseverity-text =='emerg' )
then :ommail:;myBody1
Далее ставим для поддержки mysql:
cd /usr/ports/sysutils/sysutils/rsyslog4-mysql
make install clean
потом ставим сам мускул если еще не стоит.
сd /usr/ports/databases/mysql50-server
make install clean
лезем в
cd /usr/ports/sysutils/loganalyzer
make install clean
потянет за собой апач, пыху и пр. приблуды.
Далее лезем в /usr/local/www/ находим папку анализатора и из папки src копируем все /usr/local/www/data
Ну или в конфиге апача правьте , как кому нравится.
Создаем пустой файл
touch config.php
chmod 666 config.php
После установки можно будет изменить права. На 644.
Далее создаем БД Syslog и даем на него полные права пользователю Syslog
Потом закидываем дамп для rsyslog’a лежит он тут:
/usr/local/share/examples/rsyslog/mysql_createDB.sql
Стартуем апач
/usr/local/etc/rc.d/apache start
Лезем на ip сервера.
Должна начатся установка loganalyzer. Тут все понятно думаю. Как и что.
Можно создать новую базу для пользователей лог анализа, можно хранить их в файле, это уже на ваш вкус. Создались, добавляем базу Syslog в сорцы….:) Ну вот и все красота вам обеспечена.
Для юниксов в конфиги rsyslog
*.info;mail.none;authpriv.none;cron.none @@АЙПИ_СЕРВЕРА:514
P.S. При отображении деталей, записей в веб морде, будет выдаваться ошибка (How to resolve the error „No syslog records found (code 8 )”?
) необходимо сделать следущее: выполнить запрос к БД через, что угодно, я делал через PhpMyAdmin
ALTER TABLE `systemevents` ADD `Checksum` int(11) NOT NULL
DEFAULT `0`; AFTER `SystemID`;
При подключении 20 хостов, с отсылкой всех логов *.* БД раздувалась на 100кб в минуту...
Рассчитывайте свои объемы...
Демка того, что Вы получите в итоге.
Удачи!
Вернуться назад