forum.bitel.ru http://forum.bitel.ru/ |
|
Логирование в удаленный syslog http://forum.bitel.ru/viewtopic.php?f=22&t=8840 |
Страница 1 из 1 |
Автор: | Иван [ 16 янв 2014, 23:52 ] |
Заголовок сообщения: | Логирование в удаленный syslog |
Попробовал в log4j_server.properties Код: log4j.rootLogger=ALL, null log4j.appender.null=org.apache.log4j.varia.NullAppender log4j.logger.server=INFO, A3- log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender log4j.appender.SYSLOG.threshold=WARN log4j.appender.SYSLOG.syslogHost=192.168.1.4 log4j.appender.SYSLOG.facility=LOCAL3 log4j.appender.A3.layout=org.apache.log4j.PatternLayout log4j.appender.A3.layout.ConversionPattern=%-7p%-20d{dd.MM.yyyy HH:mm:ss} %m%n log4j.logger.script=INFO, A4 log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender log4j.appender.SYSLOG.threshold=WARN log4j.appender.SYSLOG.syslogHost=192.168.1.4 log4j.appender.SYSLOG.facility=LOCAL4 log4j.appender.A4.layout=org.apache.log4j.PatternLayout log4j.appender.A4.layout.ConversionPattern=%-7p%-20d{dd.MM.yyyy HH:mm:ss} %m%n Но почему то не идут логи. Вопрос тривиальный думаю, но не смог найти в доках. Поможете? |
Автор: | Artur [ 17 янв 2014, 09:19 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
проделайте следующее: 1) Зайдите на машину, на которой будете собирать логи, и проверьте в файле /etc/services наличие строки syslog 514 При желании можете изменить значение порта, на котором syslogd будет слушать сообщения 2) Необходимо изменить строку запуска демона syslogd. В моем случае это прописано в конфиге утилиты inetutils-syslogd (/etc/default/inetutils-syslogd), где прописано: SYSLOGD_OPTS="--no-forward -r" Опция -r как раз отвечает за запуск удаленного прослушивания сообщений. 3) Перезапустите демон syslogd и проверьте, поднял ли он udp-соединение netstat -an | grep udp В выводе будет указаны все поднятые соединения по протоколу udp, в том числе должно быть указано 0.0.0.0:514 0.0.0.0:*. Если подобной строки нет, то проверьте опции запуска демона syslogd 4) в конфиге syslog'а необходимо настроить в какой файл слать получаемые по сети сообщения это нужно прописать в файле /etc/syslog.conf в сексии обозначенной как "Log by facility". как раз по этим самым facilities можно разграничивать в какие файлы писать лолги. есть стандартные facility, такие как: auth, kern, user, mail, news и др. Пользовательские facilities имеют имена local0 - local6. таким образом в конфиге нужно прописать local0 /var/log/myfile.log Именно эту facility (local0) мы и пропишем в конфиге log4j. 5) правим конфиг log4j: <appender name="syslog" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL0"/> <param name="SyslogHost" value="192.168.111.92:<порт>"/> <param name="Threshold" value="WARN"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> </appender> <порт> нужно указывать в случае, если вы изменили на первом шаге стандартное значение порта. ЕСли у вас log4j настраивается по подобию Preferences, то просто используйте названия параметров из xml. Вроде все. Перезапускаем сервер и смотрим результаты. Если что то непонятно - пишите. |
Автор: | Иван [ 17 янв 2014, 10:51 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Спасибо большое. По 1. пункту, я пропущу, потому что syslog сервер есть, и он точно работает, собирая со всей сети события. А по второму, да, немного не понятно. Я вписал syslog в log4j.xml Вот так выглядит моя конфигурация полностью: https://gist.github.com/korjavin/8468583 Но, после перезапуска сервера. он по прежнему пишет в log/server.log |
Автор: | Artur [ 17 янв 2014, 10:55 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Вам нужно в аппендер с именем ASYNC добавить ссылку на ваш аппендер вот так: Код: <appender-ref ref="syslog" />
|
Автор: | Иван [ 17 янв 2014, 11:05 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Я добавил: Код: <appender name="ASYNC" class="ru.bitel.common.logging.Log4jAsyncAppender"> <appender-ref ref="syslog" /> <appender-ref ref="APPLICATION" /> <appender-ref ref="SCRIPT" /> <appender-ref ref="ERROR" /> </appender> Что то еще осталось. Не идут логи. Притом что я потестировал через logger, идут, т.е это точно не сетевые какие то проблемы. И файл server.log по прежнему заполняется. |
Автор: | Иван [ 17 янв 2014, 11:06 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Только что на удаленный сислог пришло сообщение 01-17/10:05:31 ERROR [pool-1-thread-2] Calculator - Contract 2077 sid=21 calcMode=null Т.е. ERROR отправился. Причем он от другого демона - scheduler. Видимо какой то мелочи мне не хватает. |
Автор: | Artur [ 17 янв 2014, 11:49 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Параметр Threshold выставите значение INFO |
Автор: | Иван [ 17 янв 2014, 11:56 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Огромное спасибо. Да, это решение. |
Автор: | Злой ребёнок [ 21 янв 2014, 11:49 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Решили попробовать писать логи радиуса на удаленный syslog-сервер. Но вот ведь незадача - логи на удаленный сервер отправляются, но пишутся в один файл. Как разбить пофайлово - чтобы radius.log в radius.log писало, а connection.log в connection.log? Сейчас в log4j-radius.xml прописано Код: <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL0"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> </appender> В конфиге rsyslog.conf Код: local0.* /var/log/servers/radius.log Правильно ли я понимаю, что надо в log4j-radius.xml для каждого лога (radius.log, processor.log) прописать свой Facility (LOCAL1, LOCAL2 & etc) и rsyslog.conf прописать эти local1.*, local2.* с указанием пути до файла? Если да, то можно примерчик аппендера? ![]() |
Автор: | Artur [ 21 янв 2014, 12:06 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Поняли мысль верно. А пример аппендера выше с той лишь разницей, что нужно указывать эти самые local0-local6 в параметре <param name="Facility" value="LOCAL0"/> |
Автор: | Злой ребёнок [ 21 янв 2014, 13:40 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Спасибо, работает. ![]() Оказывается, что ещё надо не забыть filter class в аппендере прописать, чтобы все в один файл не валилось. Код: appender name="PROCESSOR" class="org.apache.log4j.net.SyslogAppender">
<param name="Facility" value="LOCAL2"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="processor" /> </filter> </appender> |
Автор: | Иван [ 21 янв 2014, 13:42 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Покажите целиком пожалуйста |
Автор: | Злой ребёнок [ 21 янв 2014, 14:18 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Целиком, так целиком. rsyslog.conf Код: local1.* /var/log/servers/radius.log local2.* /var/log/servers/processor.log local3.* /var/log/servers/connection.log local4.* /var/log/servers/script.log local5.* /var/log/servers/mq.log local6.* /var/log/servers/error.log local7.* /var/log/servers/collector.log log4j-radius.xml Код: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="RADIUS" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL1"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="radius" /> </filter> </appender> <appender name="PROCESSOR" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL2"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="processor" /> </filter> </appender> <appender name="CONNECTIONS" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL3"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="connections" /> </filter> </appender> <appender name="SCRIPT" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL4"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="script" /> </filter> </appender> <appender name="MQ" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL5"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="mq" /> </filter> </appender> <appender name="ERROR" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL6"/> <param name="Threshold" value="ERROR" /> <param name="SyslogHost" value="192.168.1.1:514"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%X{nestedContext} %d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> </appender> <appender name="COLLECTOR" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL7"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="collector" /> </filter> </appender> <!-- <appender name="LISTENER" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL8"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> <filter class="ru.bitel.common.logging.Log4JMDCFilter"> <param name="key" value="nestedContext" /> <param name="value" value="flowListener" /> </filter> </appender> --> <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender"> <param name="Facility" value="LOCAL0"/> <param name="SyslogHost" value="192.168.1.1:514"/> <param name="Threshold" value="INFO"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{MM-dd/HH:mm:ss} %5p [%t] %c{1} - %m%n" /> </layout> </appender> <appender name="ASYNC" class="ru.bitel.common.logging.Log4jAsyncAppender"> <appender-ref ref="SYSLOG" /> <appender-ref ref="RADIUS" /> <appender-ref ref="PROCESSOR" /> <appender-ref ref="SCRIPT" /> <appender-ref ref="COLLECTOR" /> <appender-ref ref="LISTENER" /> <appender-ref ref="MQ" /> <appender-ref ref="ERROR" /> </appender> <category name="connections" additivity="false"> <appender-ref ref="CONNECTIONS" /> <appender-ref ref="ERROR" /> </category> <category name="processor" additivity="false"> <appender-ref ref="PROCESSOR" /> <appender-ref ref="ERROR" /> </category> <category name="script" additivity="false"> <appender-ref ref="SCRIPT" /> <appender-ref ref="ERROR" /> </category> <category name="radius" additivity="false"> <appender-ref ref="RADIUS" /> <appender-ref ref="ERROR" /> </category> <root> <priority value="INFO, SYSLOG" /> <appender-ref ref="ASYNC" /> </root> </log4j:configuration> |
Автор: | Злой ребёнок [ 21 янв 2014, 14:25 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Единственное, у меня radius.out остался на машине с радиусом. upd: разобрались, почему. radius.sh Код: if [ "$1" = "start" ]; then
nohup ${JAVA_HOME}/bin/java -Djava.net.preferIPv4Stack=true -Dapp.name=BGRadiusVPN -Xmx9000m -Dlog4j.configuration=log4j-radius.xml -Dlog.dir.path=log/ -cp $CLASSPATH bitel.billing.server.radius.Radius $1 $2 $3 $4 $5 $6 > ./log/radius.out 2>&1 & |
Автор: | stark [ 23 янв 2014, 15:26 ] |
Заголовок сообщения: | Re: Логирование в удаленный syslog |
Выложили бы лучше в wiki |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |