Сервер логов на rsyslog+loganalyzer+mysql
Автор: m4rkell.
Как-то буквально на днях, у нас
завалилось, что то в еве) или не в еве не суть. Суть в том, что когда
захотели снять логи с хостов esx обнаружили, что хранят эти негодяи
логии только за последнии сутки, остальные просто бьют…после чего
принято было решение поднять свой syslog сервер. Хотелось что бы, логи
со всех серверов хранились в одном месте, удобно представлялись
парсились в бразуере, а так же при появлении ошибок или других нехороших
вещей отправляли на мыло месадж. После недолгого гугления изобретать
велосипед не стали. И так будем пользоваться следующими вещами:
Rsyslog+loganalyzer+mysql
Поехали. Ставим для начала сам rsyslog он будет принемать логии на 514 порту, и складывать их в базу данных mysql
cd /usr/ports/sysutils/rsyslog4 make install clean
| Заменяем стандартный syslogd
Рихтуем /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%\r\n %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
| потом ставим сам мускул если еще не стоит.
Cd /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 в
сурсы….:) Ну вот и все красота вам обеспечена.
Так как это писалось все под ESX\ESXi
То на esx делается следующее под рутом в консоли:
Отредактируйте файл командой:
Внизу добавляем строку:
сохраняем
далее добавляем правило в файрвол
esxcfg-firewall -o 514,udp,out,syslog
| сохраняем и применяем правила
рестарт серивса логов
А в ESXi настройка делается в конфиге хоста, в дополнительных настройках Syslog>remote тупо пишите айпишник и все.
Для юнихов в конфиги 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кб миниту...
Расчитывайте свои объемы...
Демка того, что Вы получите в итоге.
Удачи!
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=29948.
размещено: 2011-01-21,
последнее обновление: 2011-01-21,
автор: m4rkell
|
|
Источник: http://www.lissyara.su/articles/freebsd/programms/rsyslog+loganalyzer+mysql/ |
Комментарии пользователей [12 шт.]