BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 25 июн 2025, 02:58

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Логирование в удаленный syslog
СообщениеДобавлено: 16 янв 2014, 23:52 
Попробовал
в 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   


Но почему то не идут логи.
Вопрос тривиальный думаю, но не смог найти в доках.
Поможете?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 09:19 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
проделайте следующее:
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.

Вроде все. Перезапускаем сервер и смотрим результаты. Если что то непонятно - пишите.

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 10:51 
Спасибо большое.
По 1. пункту, я пропущу, потому что syslog сервер есть, и он точно работает, собирая со всей сети события.

А по второму, да, немного не понятно.
Я вписал syslog в log4j.xml
Вот так выглядит моя конфигурация полностью:

https://gist.github.com/korjavin/8468583

Но, после перезапуска сервера. он по прежнему пишет в log/server.log


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 10:55 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Вам нужно в аппендер с именем ASYNC добавить ссылку на ваш аппендер вот так:
Код:
<appender-ref ref="syslog" />

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 11:05 
Я добавил:

Код:
    <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 по прежнему заполняется.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 11:06 
Только что на удаленный сислог пришло сообщение

01-17/10:05:31 ERROR [pool-1-thread-2] Calculator - Contract 2077 sid=21 calcMode=null

Т.е. ERROR отправился.
Причем он от другого демона - scheduler.
Видимо какой то мелочи мне не хватает.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 11:49 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Параметр Threshold выставите значение INFO

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 17 янв 2014, 11:56 
Огромное спасибо. Да, это решение.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 11:49 
Не в сети
Аватара пользователя

Зарегистрирован: 27 окт 2011, 11:11
Сообщения: 13
Откуда: Уфа
Карма: 0
Решили попробовать писать логи радиуса на удаленный 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.* с указанием пути до файла? Если да, то можно примерчик аппендера? :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 12:06 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Поняли мысль верно. А пример аппендера выше с той лишь разницей, что нужно указывать эти самые local0-local6 в параметре <param name="Facility" value="LOCAL0"/>

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 13:40 
Не в сети
Аватара пользователя

Зарегистрирован: 27 окт 2011, 11:11
Сообщения: 13
Откуда: Уфа
Карма: 0
Спасибо, работает. :)
Оказывается, что ещё надо не забыть 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>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 13:42 
Покажите целиком пожалуйста


Вернуться к началу
  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 14:18 
Не в сети
Аватара пользователя

Зарегистрирован: 27 окт 2011, 11:11
Сообщения: 13
Откуда: Уфа
Карма: 0
Целиком, так целиком.

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>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 21 янв 2014, 14:25 
Не в сети
Аватара пользователя

Зарегистрирован: 27 окт 2011, 11:11
Сообщения: 13
Откуда: Уфа
Карма: 0
Единственное, у меня 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 &


Последний раз редактировалось Злой ребёнок 24 янв 2014, 13:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование в удаленный syslog
СообщениеДобавлено: 23 янв 2014, 15:26 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Выложили бы лучше в wiki


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.062s | 37 Queries | GZIP : On ]