Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Syslog server

Сервер логов на rsyslog+loganalyzer+mysql

Автор: m4rkell.


Как-то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутки, остальные просто бьют…после чего принято было решение поднять свой syslog сервер. Хотелось что бы, логи со всех серверов хранились в одном месте, удобно представлялись парсились в бразуере, а так же при появлении ошибок или других нехороших вещей отправляли на мыло месадж. После недолгого гугления изобретать велосипед не стали. И так будем пользоваться следующими вещами:
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%\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 делается следующее под рутом в консоли:

Отредактируйте файл командой:  
nano /etc/syslog.conf

Внизу добавляем строку:
*.*    @ip адерс сервера

сохраняем

далее добавляем правило в файрвол
esxcfg-firewall -o 514,udp,out,syslog

сохраняем и применяем правила
esxcfg-firewall -l

рестарт серивса логов
service syslog restart

А в 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кб миниту...
Расчитывайте свои объемы...

Демка того, что Вы получите в итоге.

Удачи!



размещено: 2011-01-21,
последнее обновление: 2011-01-21,
автор: m4rkell


m0ps, 2011-01-22 в 10:47:50

скриншотик бы вебморды выложил для красоты.

Vlad, 2011-02-02 в 10:57:42

Использование rsyslog4, а не rsyslog5 чем-то обусловленно?

m4rkell, 2011-02-11 в 11:46:16

Собственно ничем, не захотел ставить 5 ветку и всё.

LPS, 2011-02-20 в 0:05:41

А VMware vCenter не судьба поставить?

N/A, 2011-03-05 в 19:52:14

Орфографию бы в Ворде не мешало проверить...

fghsfgh, 2011-03-09 в 9:42:40

Товарищи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

Why, 2011-03-14 в 12:36:20

Зачем такие грабли?

ХУЙ, 2011-04-24 в 21:07:25

Товарищи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

ХУЙ, 2011-04-24 в 21:07:47

Товарищи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!

Dmytro Burianov, 2011-06-24 в 17:53:52

cd /usr/ports/sysutils/sysutils/rsyslog4-mysql
поменяйте на
cd /usr/ports/sysutils/rsyslog4-mysql

niman, 2011-09-19 в 12:18:04

Как показала практика не всё так гладко. Площадка: 2xXeon 2.66Gz, RAM 4Gb, аппаратный RAID, на HD место хватает. Собираю логи с почтовых севреров. Причем facility только mail. как показывает статистика. Более 80% логов даёт только один почтовик.
Другие базы ловят сообщения с ftp и cisco.
В итоге, начиная с 3М записей в базе MySQL начинаются заметные тормоза ( в среднем уходит более 1,5 мин! на отображение результата поиска либо на листание).
Что касается с ftp и cisco, то если в msg появляются кириллические символы, то Loganalyzer не отображает строки в таблицах.
Решение первой проблемы: установка PostgreSQL. Эффект: более 13M записей - полёт нормальный.
Решение второй проблемы: пришлось порыться в сырцах и править php (прописывать кодировку CP1251), сделал патч. Строки с кириллицей отображаются нормально.

skeletor, 2011-10-14 в 17:05:49

Поделитесь патчем для исправления кодировки CP1251

setevoy, 2012-08-16 в 22:24:02

Ошибки, опечатки:

>будет принемать логии

ПринИмать и логИ

Abdus, 2012-10-04 в 16:33:42

Беда с русской кодировкой... niman, если зайдете - скиньте патч =)

KaMa-CyTpA, 2016-09-22 в 23:03:50

В очередной раз спасибо тебе, Лисяра!
Искал инфу в инете
Вроде настроил - не идут логи
Почитал у тебя и сделал по твоему ману - вуаля!
Респект дружище



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0414 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
Исходный размер: 32051; Сжатая: 7961