PDA

Bekijk de volledige versie : Заменяем стандартный syslogd на syslog-ng



adami
06-02-2007, 07:43
11) d) поскольку cron каждые 5 минут пишет в системный лог, можно настроить его очистку.
Лог лежит в памяти роутера и через какое-то время памяти не хватит - начнут выгружаться службы.
Нужно положить в директорию /opt/etc/cron.daily
файл с содержимым:
========

#!/bin/sh
rm -rf /tmp/syslog.log.*
========
Как-то неправильно удалять системные логи целиком. Как потом разбираться, если что? Предлагаю такой вариант скрипта:
========

#!/bin/sh

LOGDIR=/opt/var/log
TMPDIR=/tmp

cd $LOGDIR

for i in 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
do
let e=$i-1;
efil=syslog.log.$e.gz
ifil=syslog.log.$i.gz
if [ -f $efil ]; then mv $efil $ifil; fi
done

mv $TMPDIR/syslog.log.0 .
gzip syslog.log.0
========
Компрессирует и сохраняет логи за тридцать дней в /opt/var/log.
Если хотите изменить количество дней - надо поменять числа в строке for i

Mam(O)n
06-02-2007, 08:54
Как-то неправильно удалять системные логи целиком.
Полностью с этим согласен

Предлагаю такой вариант скрипта
Я использую немного другой подход к ротации лога

Мой скрипт сначала очищает лог от записей cron и ntpclient, затем исходя из его размера принимает решение об архивировании. Только есть один минус. Если чегонибудь попадет в лог во время очистки то это бесследно исчезнет. В отличии от выше предложенного скрипта, в моем варианте архив не сжимается в пользу возможности удобного просмотра архива.



#!/bin/sh
# logcleaner - Скрипт для очистки и архивирования лог файла

# Папка, где лежит лог файл
logdir=/tmp
# Имя лог файла
logfilename=syslog.log
# Папка для архивирования
rotatedir=/opt/var/log/rotated
# Предельный размер лог файла в байтах
maxlogsize=102400
# Уровень архивирования
rotatedepth=5

logfile=$logdir/$logfilename
[ ! -f $logfile ] && echo "Logfile not found" && exit 1

grep -v "[\/ ]cron\[" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile
grep -v " ntp client:" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile
grep -v " Log cleaned" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile

logger "Log cleaned"

if [ ! -f $rotatedir ]; then if [ ! -d $rotatedir ]; then mkdir -p $rotatedir; fi; else echo "$rotatedir is a file"; exit 1; fi

logsize=`ls -l $logfile | awk '{print $5}'`

if [ $logsize -gt $maxlogsize ]; then
iter=$rotatedepth; while [ $iter -gt 1 ]; do
let itern=$iter-1
if [ -f "$rotatedir/$logfilename.l$itern" ]; then mv -f $rotatedir/$logfilename.l$itern $rotatedir/$logfilename.l$iter; fi
let iter=$iter-1
done
mv -f $logdir/$logfilename $rotatedir/$logfilename.l1
touch $logdir/$logfilename
logger "Log rotated. Archive logs are in $rotatedir"
fi


UPD

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


#!/bin/sh
#
# Использование: ./wlrotate.sh [-c gz|bz2] [-d depth] [-z depthtocompress] [-p archivepath] [-s maxlogsize] filename
# -с gz|bz2 использовать сжатие архива методом gzip(gz) или bzip2(bz2)
# -d depth уровень архивирования
# -z depth минимальный уровень архива для сжатия
# -p path путь к месту хранения архивов
# -s logsize порог размера файла в байтах, для принятия решения об архивировании
#

while [ "$1" ]; do
case $1 in
-c)
[ "$2" ] && shift && cmp=`expr $1 : '\(gz\|bz2\)'`
;;
-d)
[ "$2" ] && shift && rotatedepth=`expr $1 : '\([0-9]\+\)'`
;;
-z)
[ "$2" ] && shift && compressdepth=`expr $1 : '\([0-9]\+\)'`
;;
-s)
[ "$2" ] && shift && maxlogsize=`expr $1 : '\([0-9]\+\)'`
;;
-p)
[ "$2" ] && shift && rotatepath=`expr $1 : '\([^:*?"<>\|]*\)'`
;;
*)
logfile=`expr $1 : '\([^:*?"<>\|]*\)'`
;;
esac
shift
done

[ -z "$logfile" ] &&
echo "Usage: $0 [-c gz|bz2] [-d depth] [-z depthtocompress] [-p archivepath] [-s maxlogsize] filename" >&2 &&
exit 1
[ -z "$rotatedepth" ] && rotatedepth=10
[ -z "$compressdepth" ] && compressdepth=1
[ -z "$maxlogsize" ] && maxlogsize=0

if [ "$cmp" = "gz" ]; then
if ! gzip -h > /dev/null 2>&1; then
cmp=""
logger -s -t "$0[$$]" "Warning: Gzip not found, continue without compression"
fi
fi

if [ "$cmp" = "bz2" ]; then
if ! bzip2 --help > /dev/null 2>&1; then
cmp=""
logger -s -t "$0[$$]" "Warning: Bzip2 not found, continue without compression"
fi
fi

[ ! -e "$logfile" ] && logger -s -t "$0[$$]" "Error: File $logfile not found" >&2 && exit 1
logfilename=`echo $logfile | sed 's/^.*\///'`
[ -z "$rotatepath" ] &&
rotatepath=`echo "$logfile" | sed 's/\([/]*[^/]*\/\)\(.*\)/\1/'` &&
rotatepath=`expr "$rotatepath" : '\(.*\/\)'`
[ -z "$rotatepath" ] && rotatepath="./"

if [ ! -f "$rotatepath" ]; then
if [ ! -d $rotatepath ]; then
if ! mkdir -p $rotatepath; then
logger -s -t "$0[$$]" "Error: Can't create directory $rotatepath" >&2
exit 1
fi
fi
else
logger -s -t "$0[$$]" "Error: $rotatepath is a file" >&2
exit 1
fi

logsize=`ls -l $logfile | awk '{print $5}'`

if [ $logsize -gt $maxlogsize ]; then
iter=$rotatedepth; while [ $iter -gt 0 ]; do
itern=`expr $iter - 1`
if [ -f "$rotatepath/$logfilename.$itern" ]; then
mv -f $rotatepath/$logfilename.$itern $rotatepath/$logfilename.$iter; fi
if [ -f "$rotatepath/$logfilename.$itern.gz" ]; then
mv -f $rotatepath/$logfilename.$itern.gz $rotatepath/$logfilename.$iter.gz; fi
if [ -f "$rotatepath/$logfilename.$itern.bz2" ]; then
mv -f $rotatepath/$logfilename.$itern.bz2 $rotatepath/$logfilename.$iter.bz2; fi
iter=`expr $iter - 1`
done
mv -f $logfile $rotatepath/$logfilename.0
touch $logfile
if [ -n "$cmp" ]; then
iter=$compressdepth; while [ "$iter" -le "$rotatedepth" ]; do
if [ -f "$rotatepath/$logfilename.$iter" ]; then
if [ "$cmp" = "gz" ]; then
if [ ! -f "$rotatepath/$logfilename.$iter.gz" ]; then
gzip -S ".gz" $rotatepath/$logfilename.$iter ||
logger -s -t "$0[$$]" "Warning: compress archive of $logfile failed"
fi
fi
if [ "$cmp" = "bz2" ]; then
if [ ! -f "$rotatepath/$logfilename.$iter.bz2" ]; then
bzip2 -9 $rotatepath/$logfilename.$iter ||
logger -s -t "$0[$$]" "Warning: compress archive of $logfile failed"
fi
fi
fi
iter=`expr $iter + 1`
done
fi
logger -s -t "$0[$$]" "$logfile rotated. Archive are in $rotatepath"
fi

dizzy128
19-04-2007, 18:00
Как сделать так, чтобы syslog.log писался на примонтированный HDD, например в /tmp/harddisk/logs/? И как снять ограничение на 1024 записи, на HDD места много...

Sid
20-04-2007, 11:04
Как сделать так, чтобы syslog.log писался на примонтированный HDD, например в /tmp/harddisk/logs/? И как снять ограничение на 1024 записи, на HDD места много...
Для этого в файл /usr/local/sbin/post-mount
надо добавить строки
#Прибиваем запущенный syslogd
if [ -n "`pidof syslogd`" ]; then
killall syslogd 2>/dev/null
fi
#Перезапускаем его с новыми опциями
/sbin/syslogd -m 0 -O /tmp/harddisk/logs/syslog.log -S -l 7

Вот тут есть описание его опций
http://www.busybox.net/downloads/BusyBox.html

Про ограничение в 1024 записи не слышал, там указано ограничение по умолчанию в 200Kb. Чтобы это ограничение отключить - нужно добавить опцию -s 0

Я пользуюсь syslog-ng - у него в файле конфигурации можно настроить разруливание логов от разных программ в разные файлы.

al37919
20-04-2007, 20:31
У меня практически та же функциональность облечена в слегка иную форму:

/opt/etc/init.d/S01syslogd :

#! /bin/sh
#
# Startup script for syslog-ng
#
PATH=/opt/bin:/opt/sbin:/opt/local/bin:/sbin:/bin:/usr/bin:/usr/sbin

NAME=syslogd
DAEMON=/sbin/$NAME
LOGFILE=syslog.log
LOG_OLD=/tmp
LOG_NEW=/opt/var/log

[ -n "`pidof syslogd`" ] && killall syslogd 2>/dev/null

[ -f "$LOG_OLD/$LOGFILE" ] && cat "$LOG_OLD/$LOGFILE" >> "$LOG_NEW/$LOGFILE"

$DAEMON -m 0 -O "$LOG_NEW/$LOGFILE" -S -l 7 -s 0

/opt/etc/cron.daily/backup_syslog.sh :

#! /bin/sh
PATH="/opt/local/bin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"

LOG_FILE=/opt/var/log/syslog.log
LOG_DESTINATION=/opt/var/log/arv
#my cron runs cron.daily at 00:00, therefore I store daily log with yesterday's date
TIMESTAMPEDFILENAME=`date -d '1 day ago' +%Y%m%d_syslog.log`

mkdir -p "$LOG_DESTINATION"

mv "$LOG_FILE" "$LOG_DESTINATION/$TIMESTAMPEDFILENAME"
gzip "$LOG_DESTINATION/$TIMESTAMPEDFILENAME"

В результате имеем лог неограниченой длины в /opt/var/log/syslog.log и ежесуточные архивы логов в /opt/var/log/arv

кстати, опция -l 7 не описана. Что это значит?

Sid
21-04-2007, 11:05
кстати, опция -l 7 не описана. Что это значит?
:) Сам не знаю. Просто во всех примерах здесь она указывается.
Я просто сразу перешел на syslog-ng (хотелось чтобы роутер получал логи еще и от модема) - поэтому в подробности о встроенном syslogd не вдавался.

dizzy128
21-04-2007, 11:48
Я может ошибаюсь, но раз не нашел описания этой опции и не нашел как настраивается log level то может -l это оно и есть? :)

abi
03-07-2007, 18:44
TIMESTAMPEDFILENAME=`date -d '1 day ago' +%Y%m%d_syslog.log`

Я не очень понял, что за параметр '1 day ago'. date ругается, что такого нет.
:( Как быть?

al37919
03-07-2007, 20:19
У меня используется date из coreutils. У busybox-овской date нет этой функции. Есть два решения:
1) ipkg install coreutils
2) TIMESTAMPEDFILENAME=`date +%Y%m%d_syslog.log`
во втором случае просто лог будет именоваться датой следующего дня

abi
03-07-2007, 21:23
У меня используется date из coreutils. У busybox-овской date нет этой функции. Есть два решения:
1) ipkg install coreutils
2) TIMESTAMPEDFILENAME=`date +%Y%m%d_syslog.log`
во втором случае просто лог будет именоваться датой следующего дня

Спасибо, я как раз пошел по второму пути и запускаю в 23:55.

djet
17-10-2007, 18:24
Установлены esmtpd и syslog-ng, в логах постоянно вижу такую запись:


Oct 17 21:18:35 routah syslog: execl: /usr/sbin/sendmail: No such file or directory

Чего оно хочет от сендмайла и как ему его указать явно?

Обнаружил, что записи провоцирует arpwatch. Как бы его успокоить..

Вопрос решён правкой самого arpwatch. Это ж надо было жёстко в нём путь прописать..

nikita800
30-10-2007, 16:48
Как отключить логи на 500gP?

6opoga
31-10-2007, 13:14
Как отключить логи на 500gP?

/bin/killall syslogd 2>/dev/null
/sbin/syslogd -m 0 -O /dev/null

примерно так

andyqp
05-02-2008, 14:06
В прошивке Oleg'a есть фича:
Enabled log rotation, so your logs should not be bigger than 200KПри перенаправлении лога на жесткий диск и использовании внешнего logrotate это не так актуально, а иногда даже нежелательно. Вопрос: можно ли отключить "встроенный" ротатор?

Спасибо,
Andris

Lupo_Alberto
13-03-2008, 12:51
Установил syslog-ng и logrotate и в связи с этим возник ряд вопросов:
- в каких каталогах logrotate производит ротацию файлов, только указанных явно в logrotate.conf?
- в logrotate.conf пытаюсь заставить syslog.ng перечитать настройки


...
postrotate
killall -HUP syslog-ng
endscript
...

однако syslog-ng просто "убивается", без перезапуска.

DrLabRus
02-07-2008, 10:41
Поставил syslog-ng. Он пишет в /opt/var/log

$ ls -la /opt/var/log
total 3356
drwxr-xr-x 3 admin root 4096 Jul 1 21:24 .
drwxr-xr-x 8 admin root 4096 Jul 2 12:15 ..
-rw------- 1 admin root 2344 Jul 2 12:11 auth.log
-rw------- 1 admin root 22674 Jul 2 13:25 cron.log
-rw------- 1 admin root 1477 Jul 2 11:22 daemon.log
-rw------- 1 admin root 749920 Jul 2 13:29 debug
-rw------- 1 admin root 113520 Jul 2 13:25 messages
drwxr-xr-x 2 admin root 4096 Jul 1 19:34 old
-rw-r--r-- 1 admin root 0 Jul 1 20:57 rtorrentInit.log
-rw------- 1 admin root 1721471 Jul 1 21:25 squid
-rw------- 1 admin root 749920 Jul 2 13:29 syslog
-rw------- 1 admin root 1930 Jul 2 13:23 user.log
-rw------- 1 admin root 22674 Jul 2 13:25 uucp.log
Поставил logrotate.
/opt/etc/logrotate.conf

compress
include /opt/etc/logrotate.d

/opt/var/log/* {
daily
rotate 10
compress
dateext
olddir /opt/var/oldlog
sharedscripts
missingok
postrotate
kill -HUP syslog-ng
endscript
}
Создал два(в процессе попыток настроить) каталога для хранения архива логов:

/opt/var/log/old
drwxr-xr-x 2 admin root 4096 Jul 1 19:34 old
/opt/var/oldlog
drwxr-xr-x 2 admin root 4096 Jul 2 12:15 oldlog
В конфиг ставил оба - результат одинаков.
Запускаю просто:

$ logrotate /opt/etc/logrotate.conf
Результат:

$ logrotate /opt/etc/logrotate.conf
error: /opt/etc/logrotate.conf:9 bad olddir path /opt/var/oldlog
error: found error in /opt/var/log/* , skipping
error: /opt/etc/logrotate.conf:9 } expected

На всякий случай:

$ df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 3072 3072 0 100% /
/dev/root 3072 3072 0 100% /
/dev/discs/disc0/part1
10317828 233616 9560096 3% /opt
/dev/discs/disc0/part2
468337640 160574964 283972420 37% /home

Никак не могу понять на что он ругается...
// попробовал поискать ответ - не нашел, может искал плохо...

Reyter
02-07-2008, 14:20
Никак не могу понять на что он ругается...

А если так попробовать?
olddir /opt/var/oldlog/

DrLabRus
02-07-2008, 14:25
А если так попробовать?
olddir /opt/var/oldlog/
Я пробовал, и написал выше:

Создал два(в процессе попыток настроить) каталога для хранения архива логов:

/opt/var/log/old
drwxr-xr-x 2 admin root 4096 Jul 1 19:34 old
/opt/var/oldlog
drwxr-xr-x 2 admin root 4096 Jul 2 12:15 oldlog
В конфиг ставил оба - результат одинаков.
Результат одинаков, только в ошибке уже про olddir /opt/var/oldlog/ ругань и все.

UPD:


А если так попробовать?
olddir /opt/var/oldlog/
Не обратил сразу внимания на слэш. Только это несильно помогло:

$ logrotate /opt/etc/logrotate.conf
error: /opt/etc/logrotate.conf:9 bad olddir path /opt/var/oldlog/
error: found error in /opt/var/log/* , skipping
error: /opt/etc/logrotate.conf:9 } expected

DrLabRus
04-07-2008, 16:57
В мане к logrotate есть пример, где показано, что
/opt/var/log/old
// без слэша на конце
и вполне может быть в поддиректории логов.
Т.е. мой случай с точностью до /opt/

Попробовал chmod 777 /opt/var/log/old
Не помогло, что вроде закономерно - запускаю то от рута(admin)...

Прошу помощи. Свои идеи кончились... А без ротации логов плохо.

PS конечно можно использовать предлагавщиеся тут скрипты, но этот способ видится мне более гибким и правильным. И есть подозрение, что исправить легко, если знать как...
PPS за мультипост приношу извинения.

UPD:
Цитата из мана:

The directory must be on the same physical device as the log file being rotated,
and is assumed to be relative to the directory holding the log
file unless an absolute path name is specified.
На том же физическом устройстве что и логи и <а вот как дальше правильно перевести?>...

azhur
04-07-2008, 17:42
The directory must be on the same physical device as the log file being rotated, and is assumed to be relative to the directory holding the log file unless an absolute path name is specified.Каталог должен находиться на том же физическом устройстве, что и лог файл. Если не указан абсолютный путь, то путь к каталогу считается относительно каталога с логом.
Примерно так.

DrLabRus
04-07-2008, 20:03
azhur
Спасибо.


<...> Если не указан абсолютный путь, то путь к каталогу считается относительно каталога с логом.
Примерно так.
Абсолютный путь это /opt/var/log/old , а относительный - ./old так?

UPD:

Сделал другую попытку:
конфиг:

#compress
#include /opt/etc/logrotate.d

/opt/var/log/daemon.log {
#daily
rotate 10
#compress
#dateext
#
olddir /home/qqq
#
missingok
sharedscripts
postrotate
kill -HUP syslog-ng
endscript
}
Создал /home/qqq
Запускаю:

$ logrotate -d /opt/etc/logrotate.conf
reading config file /opt/etc/logrotate.conf
reading config info for /opt/var/log/daemon.log
error: /opt/etc/logrotate.conf:10 bad olddir path /home/qqq
error: found error in /opt/var/log/daemon.log , skipping
error: /opt/etc/logrotate.conf:10 } expected
removing last 1 log configs
Опять не работает...

Просьба к тем, у кого logrotate работает успешно, выложите свои настройки(конфиг, раскладку папок файлов с правами, ...) для сравнения.

drJabber
09-08-2008, 18:26
люди, подскажите, можно ли с помощью syslogd сделать такое:

есть роутер WL500GP и есть тюнер dreambox, который получает шару через mgcamd.

если в mgcamd настроить, чтобы он свой посылал лог на 514 порт роутера, может ли syslogd на роутере собирать ети логи? как настроить syslogd в роутере чтобы он слушал 514 порт?

ABATAPA
09-08-2008, 19:56
если в mgcamd настроить, чтобы он свой посылал лог на 514 порт роутера, может ли syslogd на роутере собирать ети логи? как настроить syslogd в роутере чтобы он слушал 514 порт?

Нужно собрать "настоящий" syslogd, и пускать его с ключиком '-r'.

drJabber
10-08-2008, 07:45
Нужно собрать "настоящий" syslogd, и пускать его с ключиком '-r'.

а откуда брать исходники и как можно скомпилировать прямо в роутере - у меня нету под рукой другого бокса с линуксом

djet
10-08-2008, 12:48
Пользуйся syslog-ng. Уже собран, и там всё есть.

sauron093
28-08-2008, 10:15
После установки ADOSа cron со страшной силой мусорит в системный лог. флеш жалко - перекинул системный лог на хард, но он растет зараза как на дрожжах :-). почитав в инете, нашел инфу, что в конфигурационном файле syslogd должно указываться что писать в лог и по примерам syslog.conf видно что cron там тоже фигурирует. поискал в рутере конфигурационный файл - не нашел :confused:. может кто знает где он запрятан?

sauron093
28-08-2008, 13:01
вобщем из разных источников есть инфа что встроенный syslogd не настраивается и нихрена не умеет.

изучаем установку syslog-nd

kir-g
28-08-2008, 16:43
вобщем из разных источников есть инфа что встроенный syslogd не настраивается и нихрена не умеет.

изучаем установку syslog-nd
Я лично просто настроил очистку syslog


# logcleaner - Скрипт для очистки и архивирования лог файла

# Папка, где лежит лог файл
logdir=/tmp
# Имя лог файла
logfilename=syslog.log

ipfile=$ipdir/$ipname
logfile=$logdir/$logfilename
[ ! -f $logfile ] && echo "Logfile not found" && exit 1

grep -v "[\/ ]cron\[" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile
grep -v " ntp client:" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile
grep -v " Log cleaned" $logfile > $logfile.tmp && mv -f $logfile.tmp $logfile
logger "Log cleaned"

sauron093
29-08-2008, 07:08
Я лично просто настроил очистку syslog


просто очистка - не интересно :-) попозже выложу как настроил

VoVuX
29-08-2008, 08:04
Я лично просто настроил очистку syslog


Спасибо за грамотное решение ;)

AlexBar
29-08-2008, 10:20
просто очистка - не интересно :-) попозже выложу как настроил
не забудь только выложить :)

sauron093
29-08-2008, 11:08
вынес в отдельную тему http://wl500g.info/showthread.php?t=15834 может кому пригодится

sauron093
29-08-2008, 11:11
несколько переработал инструкцию и скрипты

первым делом устанавливаем syslog-ng


ipkg update
ipkg install syslog-ng


после установки заменяем или исправляем файл запуска

/opt/etc/init.d/S01syslog-ng

на следущее:


#!/bin/sh
#
# Startup script for syslog-ng
#

# Stop syslogd if running
if [ -n "`pidof syslogd`" ]; then
killall syslogd 2>/dev/null
sleep 1
fi

if [ -n "`pidof klogd`" ]; then
killall klogd 2>/dev/null
sleep 1

# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log

fi

# Stop itself if running
if [ -n "`pidof syslog-ng`" ]; then
killall syslog-ng 2>/dev/null
sleep 2
fi

/opt/sbin/syslog-ng


скрипт при запуске убивает стандартный логгер, перекидывает лог на внешний носитель.
созданный симлинк позволяет видеть лог через веб

заменяем файл конфигурации

/opt/etc/syslog-ng/syslog-ng.conf

на следующее:



################################################## ##############################
# Syslog-ng configuration
# /opt/etc/syslog-ng/syslog-ng.conf
#

################################################## #############################
# tiwag's active filters and logs
#

options { long_hostnames(off); sync(0); };

source src { file("/proc/kmsg");unix-stream("/dev/log"); internal(); };
source net { udp(); };

destination mysyslog {
file("/opt/var/log/syslog-ng.log"
owner("root")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination authwarnlog {
file("/opt/var/log/authwarn.log"
owner("root")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination vsftpdlog { file("/opt/var/log/vsftpd.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};
destination dropbearlog { file("/opt/var/log/dropbear.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};
destination cronlog { file("/opt/var/log/cron.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

filter f_ni_syslog-ng { not ( level(info) and program(syslog-ng) ); };
filter f_ni_thttpd { not ( level(info) and program(thttpd) ); };
filter f_ni_vsftpd { not ( level(info) and program(vsftpd) ); };
filter f_ni_cron { not ( (level(notice) and program(cron) ) or ( level(info) and facility(cron) ) ); };

filter f_vsftpd { ( program(vsftpd) ); };
filter f_dropbear { ( program(dropbear) ); };
filter f_cron { ( level(notice) and program(cron) ); };
filter f_authwarn { ( ( ( level(info) or level(warning) ) and program(dropbear) ) or ( ( level(warning) ) and program(vsftpd) ) ); };

################################################## #############################
# active logs
#

log { source(src);
filter(f_ni_vsftpd);
filter(f_ni_thttpd);
filter(f_ni_syslog-ng);
filter(f_ni_cron);
destination(mysyslog); };

log { source(src);
filter(f_vsftpd);
destination(vsftpdlog); };

log { source(src);
filter(f_dropbear);
destination(dropbearlog); };

log { source(src);
filter(f_authwarn);
destination(authwarnlog); };

log { source(src);
filter(f_cron);
destination(cronlog); };


после перезагрузок лог сохраняется.
Соответственно системный лог находится в /opt/var/log/syslog-ng.log,
ошибки авторизации /opt/var/log/authwarn.log
подключения по ftp /opt/var/log/vsftpd.log
подключения по ssh /opt/var/log/dropbear.log
логи cron`а /opt/var/log/cron.log

для приведения логов CRONа в порядок, заменяем скрипт
/opt/bin/run-parts
на следущее:


#!/bin/sh
#
# runparts.sh by macsat@macsat.com
# intended for use with cron
#
# based on rc.unslung by unslung guys :-)
#
if [ -z "$1" ]
then
echo "Usage : $0 "
fi

RUNDIR=$1"/*"

for i in $RUNDIR ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

case "$i" in
*.sh)
# Source shell script for speed.
(
logger -t "$i" "running"
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
logger -t "$i" "running"
$i start
;;
esac
done



Для того чтоб логи сильно не раздувались, написал скрипт для автоматического архивирования любых логов, находящихся в папке логов. Скрипт помещаем в папку ежечасного запуска CRONa

/opt/etc/cron.hourly/archivelog.sh



#!/bin/sh

log_dir="/opt/var/log"
archive_dir="/opt/var/log/archive"
log_max_size=100 #Kb

sleep 1

for i in $log_dir/* ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

if (expr $(du $i | sed 's/\/.*//') \> $log_max_size > /dev/null 2>&1) then
{
archive_file=`echo "0" $i | sed 's:^.*/\(.*\):\1:g'`
archive_file=`date +%Y%m%d%H-$archive_file`
archive_file="$archive_dir/$archive_file"

cp "$i" "$archive_file"
printf "Contents of this file are placed in archive $archive_file.gz\n" > $i
gzip "$archive_file"

sleep 1

prg=`echo "0" $0 | sed 's:^.*/\(.*\):\1:g'`
logger -t "$prg" "$i compressed to $archive_file.gz"
}
fi

done


скрипт проверяет директорию с логами, если находит лог размером более указанного, то архивирует его в указанную папку.

ЗЫ:
я у себя перенастроил все программы, чтоб логи писались в папку /opt/var/log/

Не забываем сделать скрипты исполняемыми:


chmod +x /opt/etc/init.d/S01syslog-ng
chmod +x /opt/etc/cron.hourly/archivelog.sh


и создать директорию для архивов


mkdir -p /opt/var/log/archive/


ну и чтоб все это начало работать:


reboot

vectorm
29-08-2008, 12:41
Не забываем делать:
chmod +x /opt/etc/init.d/S01syslog-ng
chmod +x /opt/etc/cron.hourly/clearlog.sh

и тут:
/opt/etc/syslog-nd/syslog-nd.conf
очепятка, надо

/opt/etc/syslog-ng/syslog-ng.conf

lokypilot
29-08-2008, 13:00
Спасибо за подробно изложенные инструкции :)
Надо будет все именно так и сделать ;)

sauron093
29-08-2008, 13:39
Не забываем делать:
chmod +x /opt/etc/init.d/S01syslog-ng
chmod +x /opt/etc/cron.hourly/clearlog.sh


я просто все делаю через mc, там мышой ткнул 2 раза и атрибут поставил, даже не заморчиваюсь, тем более он * светит перед исполняемым файлом



и тут:
/opt/etc/syslog-nd/syslog-nd.conf
очепятка, надо

/opt/etc/syslog-ng/syslog-ng.conf

очепятку поправил ;)

vaspupkin
29-08-2008, 13:42
Уже работает :)

Тогда уж для завершения мануала:
добавить в /tmp/local/sbin/post-mount строку запуска

#запуск логa
/opt/etc/init.d/S01syslog-ng
и сохранить

flashfs save
flashfs commit
flashfs enable

sauron093
29-08-2008, 13:46
Уже работает :)

Тогда уж для завершения мануала:
добавить в /tmp/local/sbin/post-boot строку запуска

#запуск логa
/opt/etc/init.d/S01syslog-ng

у меня автоматом все скрипты из /opt/etc/init.d/ запускает rc.unslung

и в post-boot нельзя класть, т.к. хард еще не смонтирован, а мы лог на него перекидываем

в post-mount добавляйте запуск скрипта




flashfs save
flashfs commit
flashfs enable



абсолютно не нада :) т.к. мы работаем на харде(флешке) и внутрянний флеш не используем :)

vaspupkin
29-08-2008, 14:03
...абсолютно не нада
Нада, если мы правим post-mount и нет у нас rc.unslung, но это не важно... Спасибо за скрипт. Оч полезно!

А вот что бы в логе значило PRI:err?

{2008-08-29 01:11:45}{PRI:err}{FAC:daemon}{PRG:nmbd}{{{ nmbd[298]: [2008/08/29 01:11:45, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(405) }}}
{2008-08-29 01:11:45}{PRI:err}{FAC:daemon}{PRG:nmbd}{{{ nmbd[298]: ***** }}}
{2008-08-29 01:11:45}{PRI:err}{FAC:daemon}{PRG:nmbd}{{{ nmbd[298]: }}}
{2008-08-29 01:11:45}{PRI:err}{FAC:daemon}{PRG:nmbd}{{{ nmbd[298]: Samba name server WL500W is now a local master browser for workgroup WORKGROUP on subnet 192.168.2.1 }}}

Lupo_Alberto
29-08-2008, 14:16
При установке syslog-ng выдал следующее:


To use syslog-ng, comment out any lines in /etc/inittab referring
to syslogd or klogd before you start syslog-ng for the first time.
After commenting the lines, run /opt/etc/init.d/S01syslog-ng.
The program will be started automaticaly at the next reboot.

И, как я понимаю, в наличии в скрипте проверки на запущенный syslogd нет необходимости.

sauron093
29-08-2008, 14:17
как я понял то что PRI это приоритет сообщения

sauron093
29-08-2008, 14:20
При установке syslog-ng выдал следующее:


To use syslog-ng, comment out any lines in /etc/inittab referring
to syslogd or klogd before you start syslog-ng for the first time.
After commenting the lines, run /opt/etc/init.d/S01syslog-ng.
The program will be started automaticaly at the next reboot.

И, как я понимаю, в наличии в скрипте проверки на запущенный syslogd нет необходимости.

ну если у вас syslogd не стартует автоматом, что странно, то видимо нет

у меня он стартует и его приходится убивать каждый раз

Lupo_Alberto
29-08-2008, 14:23
Извините, поторопился с выводами.
У меня почему-то этого файла и нет!

sauron093
29-08-2008, 14:31
Извините, поторопился с выводами.
У меня почему-то этого файла и нет!

ну я тоже долго искал в роутере syslogd.conf, а оказалось что его нету совсем... syslogd урезан и конфигурационные файлы не воспринимает

sauron093
29-08-2008, 14:33
Нада, если мы правим post-mount и нет у нас rc.unslung, но это не важно... Спасибо за скрипт. Оч полезно!

А вот что бы в логе значило PRI:err?


вот как формируется строка вывода:

template("{$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC}{PRI:$PRIORITY}{FAC:$FACILITY}{PRG :$PROGRAM}{{{ $MESSAGE }}}\n")

Lupo_Alberto
29-08-2008, 15:09
Начал разбираться со скриптом, возникли вопросы.
Так в файле конфигурации указано, что созданные лог файлы имеют владельца root и группу root. Однако, в моей системе есть только пользователь admin. Возможно, в моём случае скрипт требует правки.
Ещё одно небольшое замечание:
у тех, у кого как и у меня, установлен logrotate следует внести исправления в файл /opt/etc/logrotate.conf -
строку


killall -HUP syslogd

заменить соответственно на


killall -HUP syslog-ng

sauron093
29-08-2008, 15:19
Начал разбираться со скриптом, возникли вопросы.
Так в файле конфигурации указано, что созданные лог файлы имеют владельца root и группу root. Однако, в моей системе есть только пользователь admin. Возможно, в моём случае скрипт требует правки.


у меня с самого начала admin сменен на root. Вам и карты в руки попробовать как должно, т.к. я не могу сменить владельца на admina, ибо все заточено на root



Ещё одно небольшое замечание:
у тех, у кого как и у меня, установлен logrotate следует внести исправления в файл /opt/etc/logrotate.conf -
строку


killall -HUP syslogd

заменить соответственно на


killall -HUP syslog-ng


с этим согласен.

Lupo_Alberto
29-08-2008, 15:50
Возникли вопросы по скрипту:


# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log

копирование оригинального syslog.log нужно только при первом запуске;

kir-g
29-08-2008, 18:54
просто очистка - не интересно :-) попозже выложу как настроил

ну так, а чем вам жалко встроенный флеш ???
Он умрет когда ваш девайс устареет года так на энцать!!!!!!

sauron093
29-08-2008, 19:23
Возникли вопросы по скрипту:

копирование оригинального syslog.log нужно только при первом запуске;

не совсем верно.

Пока не запущен syslog-ng работает syslogd и лог пришется в оригинальное место, соответственно syslogd останавливаем, то что он уже налоггировал копируем к тому что у нас уже накоплено, подчищаем лог, делаем симлинк и запускаем syslog-ng

sauron093
29-08-2008, 19:25
ну так, а чем вам жалко встроенный флеш ???
Он умрет когда ваш девайс устареет года так на энцать!!!!!!

кол-во перезаписей флеша органичено, а крон генерит логи каждую минуту.

kir-g
29-08-2008, 19:36
кол-во перезаписей флеша органичено, а крон генерит логи каждую минуту.

у меня уже года два генерит и ничего!!!! А года через два уже другой девайс мона покупать, но если буду бедствовать, то на крайняк можно rootfs перенести на флешку.....
Но ничего против вашего метода я не имею, просто мне лень было это делать хотя он более практичен!!!

ssh
30-08-2008, 16:55
мой вариант стартового скрипта.

#!/bin/sh
#
# Startup script for syslog-ng
#

# Stop itself if running
if [ -n "`pidof syslogd`" ]; then
/bin/kill `pidof syslogd` 2>/dev/null
sleep 2
fi

# Stop itself if running
if [ -n "`pidof syslog-ng`" ]; then
/bin/kill `pidof syslog-ng` 2>/dev/null
sleep 2
fi

/opt/sbin/syslog-ng

конфигурация

# syslog-ng configuration

options { long_hostnames(off); sync(0); stats(3600); };

source src { pipe("/proc/kmsg");unix-stream("/dev/log"); internal(); };
destination rlogsrv { udp("192.168.19.218"); };

log { source(src); destination(rlogsrv); };
естественно подобный вариант требует настроек и на лог-сервере в том числе.

Lupo_Alberto
30-08-2008, 23:32
Некоторый оффтоп, но всё же...
Нельзя ли посмотреть на /opt/etc/init.d/rc.unslung-скрипт.
Как я подозреваю, есть несколько версий этого скрипта, и я нашёл не самую удачную :(

lexass
31-08-2008, 11:10
Некоторый оффтоп, но всё же...
Нельзя ли посмотреть на /opt/etc/init.d/rc.unslung-скрипт.
Как я подозреваю, есть несколько версий этого скрипта, и я нашёл не самую удачную :(



#!/bin/sh

# Start all init scripts in /opt/etc/init.d
# executing them in numerical order.
#
for i in /opt/etc/init.d/S??* ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done

vectorm
31-08-2008, 12:16
Некоторый оффтоп, но всё же...
Нельзя ли посмотреть на /opt/etc/init.d/rc.unslung-скрипт.
Как я подозреваю, есть несколько версий этого скрипта, и я нашёл не самую удачную :(
А в чем проблема то? Задача этого скрипта - тупо запускать все, что в /opt/etc/init.d/ расположено и на Sцифры называется.

Lupo_Alberto
31-08-2008, 14:23
Кроме того, чтобы "тупо запускать", этот скрипт должен корректно останавливать запущенные сервисы. Хотя это проблема скриптов инициализации, ведь многие из них не обрабатывают опции start и stop. Есть ли готовые решения, или каждый из скриптов в /opt/etc/init.d нужно "допиливать"?

Lupo_Alberto
01-09-2008, 15:20
Появились ещё вопросы и соображения по данной теме:
1. Насколько нужен при использовании syslog-ng запущенный klogd? Вставил в S01syslog-ng


if [ -n "`pidof klogd`" ]; then
killall klogd 2>/dev/null
fi

Никаких "вредных" изменений не заметил :)
P.S. В дебиановском FAQ по настройке syslog-ng прямо указано на возможность удаления сервисов syslogd и klogd из системы.

2.
ну и последнее, наш cron очень сильно генерит логи , вобщем-то там никакой ценной инфы нет, поэтому раз в час просто чистим его.
можно и реже, тогда положите скрипт в нужную папку. За час генерится около 15кб логов.
Строку

filter f_ni_cron { not ( level(info) and facility(cron) ); };
заменил на

filter f_ni_cron { not ( level(info) and program(cron) ); };
и добавил фильтр


***
log { source(src);
filter(f_ni_cron);
filter(f_cron);
destination(cronlog); };


3. В моём роутере включён DHCP-сервер, который "засорял" syslog-ng.log сообщениями вида:


{2008-09-01 17:11:06}{PRI:debug}{FAC:local0}{PRG:udhcpc}{{{ udhcpc[93]: Sending discover... }}}
{2008-09-01 17:11:09}{PRI:debug}{FAC:local0}{PRG:udhcpc}{{{ udhcpc[93]: Sending discover... }}}
{2008-09-01 17:11:12}{PRI:debug}{FAC:local0}{PRG:udhcpc}{{{ udhcpc[93]: Sending discover... }}}
{2008-09-01 17:11:15}{PRI:debug}{FAC:local0}{PRG:udhcpc}{{{ udhcpc[93]: Sending discover... }}}

Проблема решилась созданием фильтра

filter f_ni_udhcpc { not ( level(debug) and program(udhcpc) ); };
и, соответственно, добавлением его в секцию


log { source(src);
filter(f_ni_vsftpd);
filter(f_ni_thttpd);
filter(f_ni_syslog-ng);
filter(f_ni_cron);
filter(f_ni_udhcpc);
destination(mysyslog); };

Lupo_Alberto
02-09-2008, 08:14
На сайте Yellow Leaf (http://ylsoftware.com/?action=news&na=viewfull&news=456) нашёл интересное решение ведения, сохранения и ротации логов с WiFi-точки, предложенное MooSE, которое вполне может быть применено и для Asus'ов.
P.S. Однако, минус данного решения в необходимости держать компьютер постоянно включенным.

kibenimatik
02-09-2008, 16:40
P.S. Однако, минус данного решения в необходимости держать компьютер постоянно включенным.
А смысл так извращатся?

Lupo_Alberto
03-09-2008, 07:59
Так сказать, основы сетевой безопасности :)
Да и на "большом" компьютере проще анализировать логи, ведь они ведутся именно для этого?

Vollsky
04-09-2008, 13:43
Заметил, что при перезагрузке syslog-ng дважды запускается и останавливается
{2008-09-03 16:41:59}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[150]: syslog-ng shutting down; version=\'2.0.9\' }}}
{2008-09-03 16:42:01}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[388]: syslog-ng starting up; version=\'2.0.9\' }}}
{2008-09-03 16:42:16}{PRI:err}{FAC:daemon}{PRG:nmbd}{{{ nmbd[181]: Got SIGTERM: going down... }}}
{2008-09-03 16:42:16}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[388]: syslog-ng shutting down; version=\'2.0.9\' }}}
{2008-09-03 17:43:06}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[150]: syslog-ng starting up; version=\'2.0.9\' }}}
Немного доработал скрипт:
#!/bin/sh
#
# Startup script for syslog-ng
#

# Stop itself if running
stopped=0
if [ -n "`pidof syslogd`" ]; then
/bin/kill `pidof syslogd` 2>/dev/null
sleep 2
fi
if [ -n "`pidof klogd`" ]; then
killall klogd 2>/dev/null
fi

# Stop itself if running
time=`/bin/date '+%b %e %H:%M:%S'`
if [ -n "`pidof syslog-ng`" ]; then
/bin/kill `pidof syslog-ng` 2>/dev/null
echo "$time ===== syslog-ng_STOP =====" >> /opt/var/log/syslog-ng.log
stopped=1
sleep 2
fi
if [ $stopped -eq 0 ]; then
echo "$time ===== syslog-ng_START ====" >> /opt/var/log/syslog-ng.log
/opt/sbin/syslog-ng
fi
и получилось:
{2008-09-04 18:25:16}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[331]: syslog-ng shutting down; version=\'2.0.9\' }}}
Sep 4 18:25:16 ===== syslog-ng_STOP =====
Sep 4 18:26:21 ===== syslog-ng_START ====
{2008-09-04 18:26:21}{PRI:notice}{FAC:syslog}{PRG:syslog-ng}{{{ syslog-ng[152]: syslog-ng starting up; version=\'2.0.9\' }}}

sauron093
04-09-2008, 20:36
странно что у вас syslog-ng оказывается запущенным после рестарта. проверьте в /opt/etc/init.d/ у вас случайно там не 2 скрипта запуска syslog-ng?

Vollsky
05-09-2008, 01:05
странно что у вас syslog-ng оказывается запущенным после рестарта. проверьте в /opt/etc/init.d/ у вас случайно там не 2 скрипта запуска syslog-ng?Скрипт один.
Но как я понимаю остановка с последующим запуском осуществляется скриптом pre-shutdown через rc.unslung с параметром stop. А в скрипте запуск syslog-ng осуществлялся каждый раз при его исполнении.
P.S.
Вот пожалуй более верное решение запуска и остановки syslog-ng:
#!/bin/sh
#
# Startup script for syslog-ng
#
time=`/bin/date '+%b %e %H:%M:%S'`
case $1 in
start)
/bin/kill `pidof syslogd` 2>/dev/null
killall klogd 2>/dev/null
/opt/sbin/syslog-ng
echo "$time ===== syslog-ng_ START=====" >> /opt/var/log/syslog-ng.log

;;
stop)
echo "$time ===== syslog-ng_STOP ====" >> /opt/var/log/syslog-ng.log
/bin/kill `pidof syslog-ng` 2>/dev/null
;;
*)
echo "usage: $0 (start|stop)"
exit 1
esac
Строки 5,11,15 можно выбросить. Это что бы легче искать моменты перезагрузки. Так-же можно добавить копирование стартовой информации из syslog и его удаление в обработку start:
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
rm /tmp/syslog.log Если это кому нужно, но мне кажется лучше пусть она останется на своем месте в /tmp/syslog.log доступной из Web и дублировать ее при каждой перезагрузке в syslog-ng не вижу смысла.

ssh
05-09-2008, 08:31
На сайте Yellow Leaf (http://ylsoftware.com/?action=news&na=viewfull&news=456) нашёл интересное решение ведения, сохранения и ротации логов с WiFi-точки, предложенное MooSE, которое вполне может быть применено и для Asus'ов.
P.S. Однако, минус данного решения в необходимости держать компьютер постоянно включенным.
Я же выше описал пример как раз для логирования на удаленный хост. =)

Lupo_Alberto
05-09-2008, 10:26
Я же выше описал пример как раз для логирования на удаленный хост. =)
Вы правы, как-то пропустил :(

ssh
05-09-2008, 11:05
...
Вот пожалуй более верное решение запуска и остановки syslog-ng:
#!/bin/sh
#
time=`/bin/date '+%b %e %H:%M:%S'`
...

так нельзя определять переменную time, значение времени будет вседа одним и тем же.

Macintosh:~ ssh$ time=`/bin/date '+%b %e %H:%M:%S'`; echo $time; sleep 5; echo $time
сен 5 21:01:46
сен 5 21:01:46

ssh
05-09-2008, 12:43
Вы правы, как-то пропустил :(

ничего страшного :)

sauron093
07-09-2008, 19:26
обновил первую страницу

ssh
08-09-2008, 00:35
#!/bin/sh
#
# Startup script for syslog-ng
#
time=`/bin/date '+%b %e %H:%M:%S'`
case $1 in
start)
...

Эту переменную так определять нельзя, ее значение у Вас будет одинаково в любой момент времени выполнения скрипта.

[admin@wl500w root]$ t=`date '+%b %e %H:%M:%S'`; echo $t; sleep 3; echo $t
Sep 8 10:28:42
Sep 8 10:28:42
Значение этой переменной необходимо определять каждый раз при выполнении части кода использующей ее. Как-нибудь так:

start)
/bin/kill `pidof syslogd` 2>/dev/null
killall klogd 2>/dev/null
/opt/sbin/syslog-ng
echo "`date '+%b %e %H:%M:%S'` ==syslog-ng_START==" >> /opt/var/log/syslog-ng.log

;;

Lupo_Alberto
08-09-2008, 17:11
Для того чтоб логи сильно не раздувались, написал скрипт для автоматического архивирования любых логов, находящихся в папке логов. Скрипт помещаем в папку ежечасного запуска CRONa

/opt/etc/cron.hourly/archivelog.sh
Зачем изобретать велосипед, есть же

ipkg info logrotate
Package: logrotate
***
Description: Rotates, compresses, removes and mails system log files.

sauron093
08-09-2008, 17:41
Зачем изобретать велосипед, есть же


я знаю, но хотелось самому сделать :) еще осталось сделать подчищалку архивов :)

sht0rm
08-09-2008, 22:27
А возможно добавить в лог неудачные попытки подключения по WiFi?

ssh
09-09-2008, 04:03
А возможно добавить в лог неудачные попытки подключения по WiFi?
Что-то не приходит на ум как это можно реализовать.

Vollsky
09-09-2008, 05:35
Эту переменную так определять нельзя, ее значение у Вас будет одинаково в любой момент времени выполнения скрипта.
....
Значение этой переменной необходимо определять каждый раз при выполнении части кода использующей ее. Как-нибудь так:

start)
/bin/kill `pidof syslogd` 2>/dev/null
killall klogd 2>/dev/null
/opt/sbin/syslog-ng
echo "`date '+%b %e %H:%M:%S'` ==syslog-ng_START==" >> /opt/var/log/syslog-ng.log

;;
Не согласен с поправкой. Скрипт исполняется как при старте, так и при стопе и дновременное исполнение двух ветвей скрипта невозможно, а исполняется только одна ветвь. Поэтому время старта и стопа будет всегда разное.

ssh
09-09-2008, 06:20
Не согласен с поправкой. Скрипт исполняется как при старте, так и при стопе и дновременное исполнение двух ветвей скрипта невозможно, а исполняется только одна ветвь. Поэтому время старта и стопа будет всегда разное.
Хм, согласен, этот момент я не учел.

OlegM
17-09-2008, 08:55
Поставил и настроил syslog-ng, всё вроде работает, НО...
иногда после перезагрузки syslog-ng.log забивает под завязку винт - получается файлик весом 160 Мб (столько места свободно в /opt), состоящий из кучи копий содержимого syslog.log
syslog-ng где-то зацикливается на копировании? Куда копать?

sauron093
17-09-2008, 09:58
Поставил и настроил syslog-ng, всё вроде работает, НО...
иногда после перезагрузки syslog-ng.log забивает под завязку винт - получается файлик весом 160 Мб (столько места свободно в /opt), состоящий из кучи копий содержимого syslog.log
syslog-ng где-то зацикливается на копировании? Куда копать?

ага, тоже бывает, пока не непонял из-за чего происходит. пока решил проблему топорно - крон пускает скрипт, который следит за разделом "/opt" если забит на 100 процентов, то убивает syslog-ng.log

kir-g
17-09-2008, 11:15
ага, тоже бывает, пока не непонял из-за чего происходит. пока решил проблему топорно - крон пускает скрипт, который следит за разделом "/opt" если забит на 100 процентов, то убивает syslog-ng.log

замечено что вот с этим скриптом запуска http://wl500g.info/showpost.php?p=110384&postcount=27 такого не происходит

OlegM
17-09-2008, 12:10
замечено что вот с этим скриптом запуска http://wl500g.info/showpost.php?p=110384&postcount=27 такого не происходит
Ну правильно, у него же нет

# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log
- копирования syslog в свой лог

J.J.
17-09-2008, 15:29
################################################## ##############################
# Syslog-ng configuration
# /opt/etc/syslog-ng/syslog-ng.conf
#

################################################## #############################
# tiwag's active filters and logs
#

options { long_hostnames(off); sync(0); };

source src { file("/proc/kmsg");unix-stream("/dev/log"); internal(); };
source net { udp(); };
Для чего нужен источник событий source net { udp(); }, если он не используется? Или я в чем-то ошибся?

Lupo_Alberto
18-09-2008, 09:20
Для чего нужен источник событий source net { udp(); }, если он не используется? Или я в чем-то ошибся?
По-моему, если syslog-ng используется для сбора логов по сети.

sergl
23-11-2008, 16:04
Ну правильно, у него же нет

# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log
- копирования syslog в свой лог

при остановке он копирует /opt/var/log/syslog-ng.log в /opt/var/log/syslog-ng.log, так как /tmp/syslog.log уже линк на /opt/var/log/syslog-ng.log :)

sauron093
06-12-2008, 11:11
при остановке он копирует /opt/var/log/syslog-ng.log в /opt/var/log/syslog-ng.log, так как /tmp/syslog.log уже линк на /opt/var/log/syslog-ng.log :)

спасибо. на первой странице поправил скрипт.

userouter
14-12-2008, 15:03
наваял тут код для ротации лога accesss.log веб-вервера, по аналогии )
vi /opt/etc/logrotate.conf



compress

/opt/share/www/log/access.log {
size 1024k
weekly
rotate 9
copytruncate
notifempty
missignok
}

include /opt/etc/logrotate.d

я не спец, поэтому хотел узнать может подправить надо?

Escoode
24-01-2009, 10:58
:) после того, как написал и запостил, увидел ответ на свой вопрос, и теперь переформулирую: как удалить лишнюю порожденную нить в форуме?

Отредактировать получилось, удалить - не нашёл

derrij
25-02-2009, 12:41
Подскажите как сделать email оповещение, когда проиcходит аунтификация пользователя в lighttpd?
syslog-ng подойдет или есть что проще?

cbap
26-02-2009, 17:16
при настройках из первого поста при запуске получаем


[admin@WL500W root]$ /opt/etc/init.d/S01syslog-ng
syntax error at 5



когда используем стандартный конфиг - стартуем нормально? в сем может быть трабла?

Спасибо

нашел в чем бага, фал заливал из винды, там лиший символ в конце строк.

ramile
23-03-2009, 12:12
Не забываем делать:
chmod +x /opt/etc/init.d/S01syslog-ng
chmod +x /opt/etc/cron.hourly/clearlog.sh


о каком clearlog.sh идет речь? его содержимое можно увидеть?

ramile
26-03-2009, 18:57
И как то автоматом cron не хочет архивировать логи большие 100к, запускаю вручную, работает, в чем может быть трабл?

UPD: Вопрос решился. в /opt/etc/crontab нужно было указать пользователя не admin а того который root в системе.

qpEHuKC
15-04-2009, 18:21
Файл находится в opt/var/log/lighttpd
В этом логе полно сообщений за день килобайт 200 может набежать. Постоянно его чищу. Есть ли возможность ограничить его размер что бы новые логи писались поверх старых? Ну или может быть есть еще варианты?:confused: Память на роутере не резиновая.

bmenee
15-04-2009, 19:24
надо убрать mod_accesslog из server.modules в lighttpd.conf (и другие accesslog.* параметры)

http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions

vectorm
15-04-2009, 19:29
Диск /opt/ резиновый. Если только не на флешке полугигабайтной.

Vollsky
16-04-2009, 07:18
Файл находится в opt/var/log/lighttpd
В этом логе полно сообщений за день килобайт 200 может набежать. Постоянно его чищу. Есть ли возможность ограничить его размер что бы новые логи писались поверх старых? Ну или может быть есть еще варианты?:confused: Память на роутере не резиновая.
Как вариант: дать задание крону раз в неделю (месяц, день, час) переименовывать лог файл в "old" и тогда в наличии всегда будет действующий и предыдущий лог.

Lupo_Alberto
16-04-2009, 13:47
Разве logrotate не справится с этой задачей?

CrazyDemon
31-05-2009, 16:52
Подскажите пожалуйста, почему в условии проверки klogd содержатся строки:

# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log


Может стоит сделать:


#!/bin/sh
#
# Startup script for syslog-ng
#

# Stop syslogd if running
if [ -n "`pidof syslogd`" ]; then
killall syslogd 2>/dev/null
sleep 1
fi

if [ -n "`pidof klogd`" ]; then
killall klogd 2>/dev/null
sleep 1
fi
# copy content of original syslogd to new syslog.
cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log
# remove old syslog.log
rm /tmp/syslog.log

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log


# Stop itself if running
if [ -n "`pidof syslog-ng`" ]; then
killall syslog-ng 2>/dev/null
sleep 2
fi

/opt/sbin/syslog-ng

sauron093
01-06-2009, 10:49
так и было с начала, потом переделал на последний вариант.

все было бы хорошо, но если у вас rc.unslung запустится еще хоть раз, то раздел /opt будет забит полностью, т.к.


cat /tmp/syslog.log >> /opt/var/log/syslog-ng.log

будет копировать сама в себя, т.к.
ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log
уже сработало и /tmp/syslog.log это симлинк на /opt/var/log/syslog-ng.log

Просто я
19-08-2009, 19:30
А все-таки проблемка есть такая... Диск не резиновый (мне флешки на 4 гб. хватает), лог меньше чем за месяц уже под 30 мб. вырос. Не думаю, что там есть нужное мне что-то.

Man по lighttpd читал (http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_accesslog-access-log-files).
mod_accesslog (accesslog.filename), как я понял - обязательный параметр? Настроек по контролю объема лога вроде бы нет (не нашел?).

Может все-таки есть простой и человеческий способ следить за логом? Ну, чтобы можно было задать диапазон, типа хранить данные за последние 7 дней, или ограничение по объему выставить?

wewerty
22-08-2009, 06:08
Конечно, есть. Простой и человеческий способ - logrotate. Специализированное приложение. Универсальное. Настройте и будет следить за размером логов автоматически.
Почитать (брал из гугла):
http://www.cyberciti.biz/tips/lighttpd-rotating-logs-with-logrotate.html
http://debianworld.ru/articles/rotaciya-logov-s-pomoshyu-logrotate-v-debian-ubuntu/
Удачи :D

D_dmitry
22-08-2009, 08:22
Файл находится в opt/var/log/lighttpd
В этом логе полно сообщений за день килобайт 200 может набежать. Постоянно его чищу. Есть ли возможность ограничить его размер что бы новые логи писались поверх старых? Ну или может быть есть еще варианты?:confused: Память на роутере не резиновая.

1 а если переписать путь лога lighttpd в другое место, например на хард?
2 уменьшить число сообщений в тот файл
в конфиге lighttpd там все прописывается что нужно логировать
3 настройте кронтаб, чтобы он вам архивировал логи и чистил их

Nightman
25-08-2009, 21:44
Файл находится в opt/var/log/lighttpd
В этом логе полно сообщений за день килобайт 200 может набежать. Постоянно его чищу. Есть ли возможность ограничить его размер что бы новые логи писались поверх старых? Ну или может быть есть еще варианты?:confused: Память на роутере не резиновая.

я избавился от этой проблемы, просто тупо закомментировав
#### accesslog module
#accesslog.filename = "/opt/var/log/lighttpd/access.log"
:D

PowerUser
26-08-2009, 19:38
Проблему с логами на "взрослых" пингвинах по уму решают настойкой ротации логов если что.Так что хранится только за последних несколько дней/часов/whatever и потому размер оказывается лимитирован разумной величиной и упомянутая проблема не возникает.

vectorm
26-08-2009, 20:00
Проблему с логами на "взрослых" пингвинах по уму решают настойкой ротации логов если что.Так что хранится только за последних несколько дней/часов/whatever и потому размер оказывается лимитирован разумной величиной и упомянутая проблема не возникает.
В Асусе такое тоже есть - кому надо, в поиске найдут по "logrotate" например.
Плюс есть инструкция по использованию полноценного syslog-ng со всеми его фичами.

GreyS
02-09-2009, 21:54
Уважаемые гуру, не подскажите как настроить syslog-ng, чтобы он вел отдельный лог кто, когда подключался и сколько времени был подключен(МАС адрес, время подключения, время отключения) по WIFI

ncat
04-09-2009, 16:54
Здравствуйте, скажу сразу, что в линуксе я новичок.

Я предлагаю добавить следующие скрипты для cron в инструкцию:

1) Убираем флуд cron'а, чтобы не засорял лог.
Особенно рекомендую, если крон настроен на частое выполнение скриптов (1-5 минут)

Что делает:
Убирает из лога строки типа
Sep 4 19:14:01 /opt/sbin/cron[5474]: (admin) CMD (run-parts /opt/etc/cron.1min )

Код: (предлагаю выполнять каждый час)

sed '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log

[1|5] - для строк *cron.1min и *cron.5min
в /opt смонтирована флэшка

большое спасибо Silas 'у, который сильно помог в написании этого скрипта

p.s. мой "длинный" лог за большой промежуток времени сократился в размерах с 43929KБ до 5222 КБ

2) Перемещаем лог из памяти роутера на флэшку.
Раньше часто приходилось перезагружать роутер из-за того что не ему не хватало памяти. Одна из причин - огромный файл лога.

Что делает:
Копирует (Присоединяет) лог из памяти роутера на флэшку и удаляет его из памяти роутера

Код:

cat /tmp/syslo.log >> /opt/var/log/syslog.log
rm -rf /tmp/syslog.log
rm -rf /tmp/syslog.log.*

в /opt смонтирована флэшка

Если скрипт выполнять через крон достаточно часто (6-24 часа), память роутера практически никогда не будет переполняться. Мой рекорд - 4 месяца аптайма.

Прошу прощения, если повторил чьи-то посты...

leshiy_odessa
05-09-2009, 10:42
ncat

Спасибо. Это конечно полезно, но в шапку не пойдет т.к. написано не для дураков. Куда вставлять код? и т.д.

Если будет так же доступно как в шапке, то пожалуй внесу, хотя если честно, это уже совсем продвинутые настройки. Т.е. их нельзя отнести к первоначальным и жизненно необходимым.

MrGalaxy
07-09-2009, 18:05
...Я предлагаю добавить следующие скрипты для cron в инструкцию:

1) Убираем флуд cron'а, чтобы не засорял лог.
Особенно рекомендую, если крон настроен на частое выполнение скриптов (1-5 минут)

Что делает:
Убирает из лога строки типа
Sep 4 19:14:01 /opt/sbin/cron[5474]: (admin) CMD (run-parts /opt/etc/cron.1min )

Код: (предлагаю выполнять каждый час)

sed '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log

[1|5] - для строк *cron.1min и *cron.5min
в /opt смонтирована флэшка
...

В коде описка, после sed надо добавить -e:
sed -e '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' ...

После этого будет работать. Всё остальное правильно, спасибо за скрипт.:)

MrGalaxy
10-09-2009, 16:06
Здравствуйте, скажу сразу, что в линуксе я новичок.

Я предлагаю добавить следующие скрипты для cron в инструкцию:

1) Убираем флуд cron'а, чтобы не засорял лог.
Особенно рекомендую, если крон настроен на частое выполнение скриптов (1-5 минут)

Что делает:
Убирает из лога строки типа
Sep 4 19:14:01 /opt/sbin/cron[5474]: (admin) CMD (run-parts /opt/etc/cron.1min )

Код: (предлагаю выполнять каждый час)

sed '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log

[1|5] - для строк *cron.1min и *cron.5min
в /opt смонтирована флэшка

большое спасибо Silas 'у, который сильно помог в написании этого скрипта
...

Не даёт мне покоя этот скрипт, уж больно он хорош!
Кроме исправления ошибки (http://www.wl500g.info/showpost.php?p=158908&postcount=530), предлагаю ещё использовать не флешку, а ОЗУ, т.е. записать так:


sed -e '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /tmp/syslog.log.tmp && mv /tmp/syslog.log.tmp /tmp/syslog.log

JHBTYN
10-09-2009, 19:39
MrGalaxy

Подскажи пожалуйста, как например можно убирать вот такие строки:


Sep 10 21:50:01 /opt/sbin/cron[1636]: (admin) CMD (if [ -x /opt/bin/vnstat ] && [ `ls /opt/var/lib/vnstat/ | wc -l` -ge 1 ]; then )
Sep 10 21:50:01 /opt/sbin/cron[1633]: (admin) MAIL (mailed 46 bytes of output but got status 0x0001 )
Sep 10 21:50:38 pppd[157]: Connect script failed

Хотелось бы понять сам принцип на будущее...

MrGalaxy
11-09-2009, 04:40
MrGalaxy

Подскажи пожалуйста, как например можно убирать вот такие строки:


Sep 10 21:50:01 /opt/sbin/cron[1636]: (admin) CMD (if [ -x /opt/bin/vnstat ] && [ `ls /opt/var/lib/vnstat/ | wc -l` -ge 1 ]; then )
Sep 10 21:50:01 /opt/sbin/cron[1633]: (admin) MAIL (mailed 46 bytes of output but got status 0x0001 )
Sep 10 21:50:38 pppd[157]: Connect script failed

Хотелось бы понять сам принцип на будущее...

Например, так:

sed -e '/^.*[opt\/sbin\/cron|Connect\ script\ failed].*$/d' /tmp/syslog.log > /tmp/syslog.log.tmp && mv /tmp/syslog.log.tmp /tmp/syslog.log

http://ru.wikipedia.org/wiki/Sed

MrGalaxy
11-09-2009, 15:06
Распишу, как это делал я.
Должен быть установлен cron.

1) перейти в каталог /opt/etc/cron.hourly любым способом. Я делал через mc, но приверженцы командной строки могут это сделать так:

cd /opt/etc/cron.hourly

2) создать файл с любым названием, например, cron-clr:

touch cron-clr

3) присвоить ему атрибут "выполняемый":

chmod +x cron-clr

4) любым редактором текста записать в этом файле первой строкой

#!/bin/sh

а второй строкой вышеприведённый скрипт.

Всё! Даже перезагружаться не надо, и так будет работать.

JHBTYN
11-09-2009, 18:12
MrGalaxy


sed -e '/^.*[opt\/sbin\/cron|Connect\ script\ failed].*$/d' /tmp/syslog.log > /tmp/syslog.log.tmp && mv /tmp/syslog.log.tmp /tmp/syslog.log
Весь лог напрочь вычищает... :D

MrGalaxy
11-09-2009, 19:28
MrGalaxy

Весь лог напрочь вычищает... :D

Опардоньте, ошибся.:eek:

Вот это работает:

sed -e '/^.*opt\/sbin\/cron.*$/d' -e '/^.*onnect\ script\ failed.*$/d' /tmp/syslog.log > /tmp/syslog.log.tmp && mv /tmp/syslog.log.tmp /tmp/syslog.log

JHBTYN
11-09-2009, 20:14
MrGalaxy

Спасибо! Теперь работает как надо.


http://ru.wikipedia.org/wiki/Sed
За это отдельное спасибо! ;)

Pablo Escobar
29-09-2009, 16:05
Коллеги, подскажите, как сделать subj?
Мешает во такое:
Sep 29 18:34:02 /opt/sbin/cron[12013]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.1min)
Sep 29 18:35:01 /opt/sbin/cron[12021]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.5mins )

Это ADOS (1min) и RRD (5min)

Спасибо.

kir-g
29-09-2009, 16:23
Коллеги, подскажите, как сделать subj?
Мешает во такое:
Sep 29 18:34:02 /opt/sbin/cron[12013]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.1min)
Sep 29 18:35:01 /opt/sbin/cron[12021]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.5mins )

Это ADOS (1min) и RRD (5min)

Спасибо.

почитайте вот это (http://www.wl500g.info/showthread.php?t=15834&highlight=syslog-ng)

Pablo Escobar
29-09-2009, 17:54
почитайте вот это (http://www.wl500g.info/showthread.php?t=15834&highlight=syslog-ng)
спасибо, интересно. но такая детализация не нужна.
подскажите-таки, кто пишет в лог, или каким оператором/командой.

спасибо

MrGalaxy
29-09-2009, 18:05
не нашел там ничего по крону и логам
Плохо искали. Даже фраза такая присутствует:
"Убираем флуд cron'а, чтобы не засорял лог".
Решение, на мой ламерский взгляд, достаточно простое. Скрипт работает непосредственно с системным журналом, из которого можно исключить любые ненужные записи. Лезть настраивать программы, чтобы они не писали в лог, не требуется.

Pablo Escobar
29-09-2009, 19:33
To MrGalaxy:
не отъедает записи о cron.hourly

Sep 29 20:01:01 /opt/sbin/cron[13875]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.hourly )
Sep 29 20:28:56 dnsmasq[73]: DHCPINFORM(br0) 192.168.1.49 00:21:63:80:ea:4a
Sep 29 20:28:56 dnsmasq[73]: DHCPACK(br0) 192.168.1.49 00:21:63:80:ea:4a R510
Sep 29 20:32:46 login[14531]: root login on `pts/2'
Sep 29 21:01:01 /opt/sbin/cron[15146]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.hourly )
Sep 29 21:19:53 /opt/sbin/cron[15583]: (CRON) DEATH (can't lock /opt/var/run/cron.pid, otherpid may be 178: Resource temporarily unavailable)
Sep 29 21:26:35 /opt/sbin/cron[15778]: (CRON) STARTUP (V5.0)
Sep 29 22:01:02 /opt/sbin/cron[16520]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.hourly )
Sep 29 22:02:01 /opt/sbin/cron[16541]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.1min)
Sep 29 22:03:01 /opt/sbin/cron[16552]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.1min)
Sep 29 22:04:01 /opt/sbin/cron[16559]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.1min)
Sep 29 22:05:02 /opt/sbin/cron[16567]: (psychov) CMD (/opt/bin/run-parts /opt/etc/cron.5mins )
сожержимое файла clear_log.sh (лежит в cron.hourly)

/bin/sh
sed -e '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log
поправтье регексповый запрос, плз., а то я синтаксис там не помню.

спасибо.

Power
29-09-2009, 22:19
Это совсем не туда.:) Всё точно - с. 14-я. (ветка DURAK EDITIONS, пост 530-й и ниже).

На заметку: как выясняется, у людей бывают разные настройки количества сообщений на страницу. Так что более правильная ссылка на пост 530 и далее: http://wl500g.info/showthread.php?p=158908#post158908

MrGalaxy
30-09-2009, 05:23
To MrGalaxy:
не отъедает записи о cron.hourlyИ не должен. Ни автор скрипта, ни я не задавались такой целью.


сожержимое файла clear_log.sh (лежит в cron.hourly)

/bin/sh
sed -e '/^.*run\-parts\ \/opt\/etc\/cron\.[1|5]min.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log
поправтье регексповый запрос, плз., Вставьте следующей строчкой

sed -e '/^.*run\-parts\ \/opt\/etc\/cron\.hourly.*$/d' /tmp/syslog.log > /opt/var/log/syslog.log.tmp && mv /opt/var/log/syslog.log.tmp /tmp/syslog.log
Работать должно, а "марафет" наведёте сами. Например, можно 2 строки скрипта sed записать одной или объединить 2 команды -e в одну.


To MrGalaxy: я синтаксис там не помню.спасибо.Есть возможность вспомнить:
http://ru.wikipedia.org/wiki/Sed

shmel
30-09-2009, 13:16
При установке cron сделал тестовый файл в папку /opt/etc/cron.5mins, затем файл удалил а cron все равно продолжает к папке обращаться, что видно из лога. Исходя из лога видно что старт идет из файла /opt/sbin/*cron. Но данный файл не открывается для редактирования из под mc.
Уважаемые гуру может кто подскажет что с этим делать, может можно данный файл удалить?
P.S В cron есть еще задания правда в другой папке /opt/etc/cron.hourly но судя по логу обращения идут все к тому же файлу /opt/sbin/*cron
Если файл *cron удалю придется заново размещать задание в папку /opt/etc/cron.hourly ?

Вот лог :
30 13:50:01 /opt/sbin/cron[3248]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 13:53:25 ntp client: Synchronizing time with time.nist.gov ...
Sep 30 13:55:01 /opt/sbin/cron[3262]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:00:01 /opt/sbin/cron[3273]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:01:01 /opt/sbin/cron[3278]: (admin) CMD (run-parts /opt/etc/cron.hourly)
Sep 30 14:01:01 ddns update: no update needed at this time
Sep 30 14:05:01 /opt/sbin/cron[3296]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:10:01 /opt/sbin/cron[3308]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:15:01 /opt/sbin/cron[3320]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:20:02 /opt/sbin/cron[3332]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:25:01 /opt/sbin/cron[3343]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:30:01 /opt/sbin/cron[3355]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:35:01 /opt/sbin/cron[3367]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:40:01 /opt/sbin/cron[3379]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:45:01 /opt/sbin/cron[3391]: (admin) CMD (run-parts /opt/etc/cron.5mins)
Sep 30 14:50:01 /opt/sbin/cron[3403]: (admin) CMD (run-parts /opt/etc/cron.5mins)

OlegaVB
30-09-2009, 14:46
Все задания cronа прописаны в /opt/etc/crontab и работает он у Вас именно так, как должен.
А /opt/sbin/cron это исполняемый файл - сам cron и есть.

shmel
30-09-2009, 15:08
Все задания cronа прописаны в /opt/etc/crontab и работает он у Вас именно так, как должен.
А /opt/sbin/cron это исполняемый файл - сам cron и есть.

Ответ конечно хорош.Мне бы хотелось что бы в логе не было информации о том что запустилcя cron 5 мин. ведь задание из папки cron.5mins я удалил, а лог идет.

3 постами ниже видел решение написать поставить скрипт по удалению лога на задание из папок 5 минут и 1 раз в час. Можно конечно и так, но тут чисто принципиальный вопрос, почему пишет ведь задания уже нет.

al37919
30-09-2009, 15:15
Можно конечно и так, но тут чисто принципиальный вопрос, почему пишет ведь задания уже нет.
Пишет, потому, что заданием является run-parts /opt/etc/cron.5mins --- он и запускается раз в 5 минут и проверяет наличие пользовательских скриптов в директории

OlegaVB
30-09-2009, 15:25
Ответ конечно хорош.Мне бы хотелось что бы в логе не было информации о том что запустилcя cron 5 мин. ведь задание из папки cron.5mins я удалил, а лог идет.

А Вы в crontab то все таки посмотрите, а потом говорите что заданий нет.
P.S. Такие ответы отбивают желание помогать.

shmel
30-09-2009, 15:46
Пишет, потому, что заданием является crontab /opt/etc/cron.5mins --- он и запускается раз в 5 минут и проверяет наличие пользовательских скриптов в директории
Если из crontab убрать задание
*/5 * * * * root run-parts /opt/etc/cron.5mins
то и в логе пропадет. Спасибо всем за наводку разобрался.Извините кого обидел своим ответом.

OlegaVB
30-09-2009, 15:59
Если из crontab убрать задание
*/5 * * * * root run-parts /opt/etc/cron.5mins
то и в логе пропадет. Спасибо всем за наводку разобрался.Извините кого обидел своим ответом.

Ну вот - все было просто. ;)

MrGalaxy
24-10-2009, 20:17
Для того, чтобы системный лог и логи самбы не разрастаилсь до неимоверных размеров, и их не надо было удалять, в pre-shutdown и в какой-нибудь каталог cron'а (например, cron.weekly) можно добавить такой вот скрипт:


cat /tmp/syslog.log >> /opt/var/log/syslog.log
sed -e :a -e '$q;N;10001,$D;ba' /opt/var/log/syslog.log > /tmp/syslog.log.tmp && cat /tmp/syslog.log.tmp > /opt/var/log/syslog.log && rm -rf /tmp/syslog.log.tmp
sed -e :a -e '$q;N;2001,$D;ba' /opt/var/samba/log.smbd > /tmp/log.smbd.tmp && cat /tmp/log.smbd.tmp > /opt/var/samba/log.smbd && rm -rf /tmp/log.smbd.tmp
sed -e :a -e '$q;N;2001,$D;ba' /opt/var/samba/log.nmbd > /tmp/log.nmbd.tmp && cat /tmp/log.nmbd.tmp > /opt/var/samba/log.nmbd && rm -rf /tmp/log.nmbd.tmp
sleep 1s

В результате в файле системного лога останутся только 10000 последних строк, а в файлах самбовских логов - по 2000 строк.
Если количество строк меньше заданного, то файл останется без изменений.

Lupo_Alberto
24-10-2009, 20:51
Для этого существует


[admin@wl500gP root]$ ipkg info logrotate | grep Description
Description: Rotates, compresses, removes and mails system log files.

theMIROn
24-10-2009, 20:53
зачем усложнять?
оно и не будет разрастаться, максимум 3 файла по 200 КБ.
см. опции syslogd, а частности -b и -s, а также с чем сейчас оно запускается

MrGalaxy
24-10-2009, 21:11
Для этого существует


[admin@wl500gP root]$ ipkg info logrotate | grep Description
Description: Rotates, compresses, removes and mails system log files.
Я покурю это, может и правда проще.


зачем усложнять?
оно и не будет разрастаться, максимум 3 файла по 200 КБ.
см. опции syslogd, а частности -b и -s, а также с чем сейчас оно запускается
Это в ОЗУ оно не разрастается. Я же сохраняю его на Ж. диск раз в сутки, дописываю к старому файлу лога.

В общем, я скрипт для себя подготовил, выложил, может кому ещё надо.

Lupo_Alberto
24-10-2009, 21:36
Я покурю это, может и правда проще.


Это в ОЗУ оно не разрастается. Я же сохраняю его на Ж. диск раз в сутки, дописываю к старому файлу лога.

В общем, я скрипт для себя подготовил, выложил, может кому ещё надо.

Возможно, вас заинтересует и это (http://wl500g.info/showthread.php?t=15834&highlight=syslog-ng).

MrGalaxy
25-10-2009, 06:57
Возможно, вас заинтересует и это (http://wl500g.info/showthread.php?t=15834&highlight=syslog-ng).Спасибо, это действительно интересно. Насколько я смог понять, лог начинает вестись на внешнем носителе сразу.
Достоинства несомненны: при отключении питания лог сохранится (ext3, правда, у меня до сих пор вызывает неприятие, ну да ладно, как запишется, так и пусть).
Но есть и недостаток: в отсутствие ЖД или его неработоспособности лог окажется недоступен, да и дёргать ежеминутно диск нехорошо.
Поэтому я и оставил лог в ОЗУ, пусть там ведётся себе, раз в час очищаю его от флуда cron'а и раз в сутки (или при перезагрузке) дописываю на диск. После записи отсекаю накопившиеся старые записи. На мой ламерский взгляд, весьма удобно.

Toher
12-11-2009, 10:22
Добрый день.
Полазил по файловой системе ничего похожего (ну кроме /proc/net/arp) не нашел.
Можно ли заставить wl500W писать лог-файл на по DHCPACK в виде:

Дата:время МАС IP Iface

файл должен сохранятся при ребуте (ну я так понимаю если его хранить на примонтированной флэшке проблем не будет?
Прошивка Олеговская.

Less
12-11-2009, 10:46
search "syslog-ng"

vectorm
12-11-2009, 10:52
В теме "Для новичков и ленивых" ссылки для кого? ;)
Заменяем стандартный syslogd на syslog-ng

GUID
16-11-2009, 05:12
Мне кажется, что с файлом запуска/остановки Вы перемудрили.
Поэтому предлагаю свой вариант, который поддерживает start/stop/restart (что соответствует общей идеологии) +более структурирован (проще для понимания).



#!/bin/sh

#-------------------------------------------------------------
#файл в который кидается весь лог
newLOGFILE="/opt/var/log/syslog-ng.log"

#старый файл лога
prevLOGFILE="/tmp/syslog.log"
#------------------------------------------------------------

prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
PROG=syslog-ng
PROG_OPTS=""

start() {
# Stop syslogd if running
if [ -n "`pidof syslogd`" ]; then
echo "Stopping service: syslogd"
killall syslogd 2>/dev/null
sleep 1
fi

if [ -n "`pidof klogd`" ]; then
echo "Stopping service: klogd"
killall klogd 2>/dev/null
sleep 1
fi


if [ -f $prevLOGFILE ]; then
#файл системного лога существует => скрипт вызван при старте роутера

#copy content of original syslogd to new syslog.
cat $prevLOGFILE >> $newLOGFILE
# remove old syslog.log
rm $prevLOGFILE
fi


#делаем вид, что так и было
ln -s $newLOGFILE $prevLOGFILE

echo "Starting service: $PROG"
$PROG $PROG_OPTS
}

stop() {
if [ -n "`pidof $PROG`" ]; then
logger "********************** STOP *************************************"
echo "Stopping service: $PROG"
killall $PROG 2> /dev/null

#удаляем симлинк (чтобы в при старте не зацикливалось)
rm $prevLOGFILE
fi
}

#перезагрузка параметров
restart() {
if [ -n "`pidof $PROG`" ]; then
kill -s HUP `pidof $PROG`
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 (start|stop|restart|usage)"
exit 1
;;
esac

sauron093
16-11-2009, 07:59
идея был такая чтоб в лог можно было писать всегда, кто знает когда туда мессаги посыпятся, возможно что и при выполнении шатдауда, ваш же скрипт может остановиться раньше. а так имеет право на жизнь :)

GUID
01-12-2009, 12:23
Добрый день!
Требуется помощь со скриптом, ситуация следующая:
сортирую логи (с помощью syslog-ng) по файлам. Чтобы не насиловать флешку: информационные сообщения (например от cron) кидаются в память (/tmp/var/cron.log).
Задача: каждые 5 минут копировать содержимое cron.log на флешку в файл /home/cron_full.log.
Алгоритм видимо достаточно простой:
1. (проблема) Блокируем /tmp/var/cron.log (чтобы syslog-ng не писал в него в момент копирования). Как это сделать?
2. Копируем: cat /tmp/var/cron.log >> /home/cron_full.log
3. (проблема) Очистить исходный файл. Т.е. установить его размер в 0, но при этом оставить его дескриптор (т.е. чтобы syslog-ng мог и дальше в него писать). На "C" делается без проблем... на шелле нашел только этот вариант:
echo > /tmp/var/cron.log
правда, тогда появляется пустая первая строка в файле, что не здорово....

Есть идеи по п. 1 и 3 ?
Заранее СПАСИБО!!!

koch
01-12-2009, 14:26
на шелле нашел только этот вариант:
echo > /tmp/var/cron.log
правда, тогда появляется пустая первая строка в файле, что не здорово....


Например так:
echo |grep someshit > /tmp/var/cron.log

GUID
01-12-2009, 14:36
Например так:
echo |grep someshit > /tmp/var/cron.log
Спасибо. Не очень элегантное решение, НО завставило меня прочитать man по echo ;)
Т.о. окончательный вариант:

echo -n > /tmp/var/cron.log

Power
01-12-2009, 15:39
Как насчёт такого варианта?


# переименовываем файл
mv /tmp/var/cron.log /tmp/var/cron-old.log

# заставляем syslog-ng перечитать конфиги и переоткрыть файлы (он закроет дескриптор /tmp/var/cron-old.log и откроет/создаст /tmp/var/cron.log)
kill -HUP `cat /var/run/syslog-ng.pid` # или куда там syslog-ng пишет свой PID, на крайняк killall -HUP syslog-ng

# копируем
cat /tmp/var/cron-old.log >> /home/cron_full.log

# удаляем старый файл
rm /tmp/var/cron-old.log

GUID
01-12-2009, 16:04
Как насчёт такого варианта?
хмм... а в чем плюс?
если между mv и kill syslog-ng будет писать сообщение в лог, то оно потеряется. В моем решении вроде бы тот же эффект.
А минус есть: у меня 7 лог-файлов, из них только 2 в памяти (cron + syslog-ng-info). Т.о. "перечитывание конфигов" приведет к дополнительным операциям с файлами на флешке.

GUID
01-12-2009, 16:22
доп. вопрос... т.е. почти оффтоп.
Файл "cron_glib.log" был создан и открыт syslog-ng. Затем, я изменил ему права доступа на 400.
То, что syslog-ng изменяет его (пишет) это нормально?!



ls -l /tmp/var/log/
-r-------- 1 admin root 14103 Dec 1 18:30 cron_glib.log
-rw------- 1 admin root 18712 Dec 1 18:26 syslog-ng_info.log

P.S. в данном случае прошивка: 1.9.2.7-d-r740 (dir-320)

Power
01-12-2009, 17:47
хмм... а в чем плюс?
если между mv и kill syslog-ng будет писать сообщение в лог, то оно потеряется. В моем решении вроде бы тот же эффект.
А минус есть: у меня 7 лог-файлов, из них только 2 в памяти (cron + syslog-ng-info). Т.о. "перечитывание конфигов" приведет к дополнительным операциям с файлами на флешке.

Не потеряется. Открытый дескриптор файла будет позволять писать в файл независимо от переименования (см. man 2 open (http://linux.die.net/man/2/open)). Единственное, после kill можно вставить проверку, что файл больше не открыт процессом syslog-ng.
А с минусами придётся смириться.



доп. вопрос... т.е. почти оффтоп.
Файл "cron_glib.log" был создан и открыт syslog-ng. Затем, я изменил ему права доступа на 400.
То, что syslog-ng изменяет его (пишет) это нормально?!



ls -l /tmp/var/log/
-r-------- 1 admin root 14103 Dec 1 18:30 cron_glib.log
-rw------- 1 admin root 18712 Dec 1 18:26 syslog-ng_info.log

P.S. в данном случае прошивка: 1.9.2.7-d-r740 (dir-320)

2 пункта:

Если syslog-ng запущен от рута (admin), то вы не можете запретить ему что-либо. В *nix традиционно большинство проверок доступа для рута просто не производится, а сразу разрешается.
Даже если он запущен не от рута, но вы меняете права в то время, когда syslog-ng работает, открытый дескриптор позволит писать в файл, пока syslog-ng сам не закроет файл и не попытается открыть его снова.

GUID
01-12-2009, 18:06
Огромное СПАСИБО за столь развернутый ответ.
Теперь я понял, что Ваш вариант намного лучше.

zeroside
02-12-2009, 10:15
хочу поделиться очень полезным скриптом (на мой взгляд), те кто понимают что это и с чем едят может быть очень полезен, те кто не в курсе что и зачем наверное не стоит и заморачиваться :) уж извините...


x=$(wc -l /tmp/syslog.log | awk '{print $1}')
y=0
while true
do
y=$(wc -l /tmp/syslog.log | awk '{print $1}')
if [ $x -ne $y ]
then
let z=y-x
tail -n $z /tmp/syslog.log > /tmp/mail.txt
mini_sendmail -fТЕМА_сообщения -t -sIP_почтового сервера mail_для_отправки@....ru < /tmp/mail.txt
let x=y
fi
sleep 31
done

в /tmp/ создать вручную файлик mail.txt с правами записи для пользователя, под которым выполняется скрипт...
далее по желанию или добавляете скрипт в автозазагрузку, или стартуете в ручную
ны выхлопе получаете любая запись, добавляемая демоном syslogd в файл журнала syslog.log попадает к вам на указанную почту
скрипт писал сам, на сколько мог оптимизировал его, но если что то где то можно добавить или убрать для удобства - шлите комменты, с радостью приму во внимание или обсудим :)

Lupo_Alberto
02-12-2009, 10:44
А где «волшебная» строка в начале скрипта?


#!/bin/sh


Конструкцию


tail -n $z /tmp/syslog.log > /tmp/mail.txt
mini_sendmail -fТЕМА_сообщения -t -sIP_почтового сервера mail_для_отправки@....ru < /tmp/mail.txt

можно сделать проще


tail -n $z /tmp/syslog.log | mini_sendmail -fТЕМА_сообщения -t -sIP_почтового сервера mail_для_отправки@....ru

Тему сообщения можно сделать более информативной, указав, к примеру, имя хоста, дату и время:


...
MESSAGE_THEME="Output syslog on $(hostname -f) at $(date '+%F %T')"
...
tail -n $z /tmp/syslog.log | mini_sendmail -f${MESSAGE_THEME} -t -sIP_почтового сервера mail_для_отправки@....ru
...


IP_почтового сервера, mail_для_отправки@....ru, время обновления скрипта правильнее вынести в переменные, IMHO.

Да и конструкцию вида:


while :
do
...
done

лучше заменить на вызов по cron'у.
Также не помешает парсинг логов, иначе быстро надоесть читать столь «подробные» сообщения.

P.S. А всё вместе — это очередной «велосипед»:


[admin@wl500gP root]$ ipkg info logrotate
Package: logrotate
Version: 3.7.5-2
Depends: popt
Status: install user installed
Section: base
Architecture: mipsel
maintainer: NSLU2 Linux <nslu2-linux@yahoogroups.com>
MD5Sum: dbf0d6bfb7fbc36a15738cef1e1a65ea
Size: 27726
Filename: logrotate_3.7.5-2_mipsel.ipk
Source: /logrotate-cvs-3.7.5.tar.gz
Description: Rotates, compresses, removes and mails system log files.


P.S.S. Одно из оправданных, на мой взгляд, применений подобного скрипта — когда ситуация критическая и требует немедленного вмешательства. Однако, в этом случае правильнее использовать и/или log2sms.

YSL
03-12-2009, 18:27
Какие есть варианты автоматического сохранения файлов (логов) из роутера на HDD Windows xp (комп в локалке)

Zyxmon
03-12-2009, 18:33
Syslog + моя прога. Или другая программа принимающая syslog сообщения и записывающая их в файл.

ryzhov_al
03-12-2009, 19:48
Какие есть варианты автоматического сохранения файлов (логов) из роутера на HDD Windows xp (комп в локалке)


В web-интерфейсе прописать адрес ответственного за лог ПК в локалке (IP Config>Miscellaneous>Remote Log Server).
А на ПК поднять любой порт (http://www.google.com/search?client=opera&rls=ru&q=syslogd+windows&sourceid=opera&ie=utf-8&oe=utf-8) syslog под Windows.

YSL
04-12-2009, 14:31
А подробно можно, у меня есть файлы статистики на роутере как чтобы автоматически например раз в час делался бэкап папок , и файлов на роутере.

Zyxmon
04-12-2009, 14:37
Так Вам уже все написали, логи будут на компе в режиме реального времени.

Terrarium
28-01-2010, 20:09
такой конструкции в /opt/etc/init.d/S80squid


restart)
echo -n "Restarting proxy server: "
/opt/sbin/squid -f /opt/etc/squid/squid.conf -k shutdown
sleep 2
/opt/sbin/squid -f /opt/etc/squid/squid.conf
echo "done."
;;

сквид ругается, что он "already running"
похоже, двух секунд не всегда достаточно...

jerr
10-02-2010, 22:34
пользуя скрипт для автомат настройки, отбда же с форума, все ПО настроилось, но вскоре Рторент перестал работать. Причина забит раздел подмонтированный в /opt, после удаления апдейтов нода работоспособность возобновляется, но не надолго.. опять раздел забивается. Помогите советом куда копать.
=========================================
[root@R0UT3R /opt]$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3,0M 3,0M 0 100% /
/dev/root 3,0M 3,0M 0 100% /
/dev/discs/disc0/part2
966M 943M 0 100% /opt
/dev/discs/disc0/part3
458G 56G 379G 13% /tmp/mnt/disc0_3
==============================================
[root@R0UT3R /opt]$ du -s -h /opt
305M /opt
==============================================
роутер асус wl500w+HDD segate USB 500 Gb

Noobeum
11-02-2010, 09:55
есть же команды (сейчас точно не помню), которые выводят размер папок

dmig
11-02-2010, 10:12
man du

du -h --max-depth=1 /opt

jerr
11-02-2010, 18:25
[root@R0UT3R root]$ du -h --max-depth=1 /opt
16K /opt/lost+found
2,4M /opt/etc
12K /opt/tmp
89M /opt/lib
21M /opt/sbin
12K /opt/usr
81M /opt/bin
104M /opt/share
1,2M /opt/var
5,3M /opt/include
2,2M /opt/man
36K /opt/root
72K /opt/libexec
12K /opt/home
140K /opt/doc
4,0K /opt/ipkg-6ggLdJ
356K /opt/info
20K /opt/local
4,0K /opt/ipkg-OFgcf1
4,0K /opt/ipkg-IDa2xE
305M /opt

маны читать умеем, как оказалось не туда копаем.
оказывается эти команды по разному работают.
тыц (http://wiki.helpdesk.by/index.php/%D0%A0%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5% D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D1%8B_%D 0%BA%D0%BE%D0%BC%D0%BC%D0%B0%D0%BD%D0%B4_du_%D0%B8 _df)
сейчас попробую прикрутить lsof гляну что съело место

jerr
11-02-2010, 18:37
вот эта гадость занимала
lighttpd 200 root 5w REG 8,2 640851384 47280 /opt/var/log/lighttpd/error.log (deleted)
lighttpd 200 root 7w REG 8,2 12716510 47281 /opt/var/log/lighttpd/access.log (deleted)
срубил процес вебсервера, du и df показали одинаково..
может кто подскажет как с этим бороться? откуда столько логов? 0_о

Power
11-02-2010, 20:34
вот эта гадость занимала
lighttpd 200 root 5w REG 8,2 640851384 47280 /opt/var/log/lighttpd/error.log (deleted)
lighttpd 200 root 7w REG 8,2 12716510 47281 /opt/var/log/lighttpd/access.log (deleted)
срубил процес вебсервера, du и df показали одинаково..
может кто подскажет как с этим бороться? откуда столько логов? 0_о

Ещё интересно, почему файлы удалены. lighttpd вроде файлы логов не удаляет.
Кстати, их содержимое можно прочитать (пока lighttpd запущен):


cat /proc/200/fd/5
cat /proc/200/fd/7

где 200 - PID (вторая колонка), а 5 и 7 - номера файловых дескрипторов (4-я колонка).

Basile
11-02-2010, 21:50
Логи можно съедать с помощью logrotate (http://www.wl500g.info/showpost.php?p=181340&postcount=16)

Merlin68
18-03-2010, 22:23
Уважаемые коллеги !
Установил syslog-ng по этой инструкции (http://wl500g.info/showthread.php?t=15834). Вроди работает.
Есть огромное желание прикрутить ещё logrotate (http://www.wl500g.info/showpost.php?p=181340&postcount=16). Но покурив форум, я в связке "syslog-ng+logrotate" встретил только вопросы с проблемами, без ответов. Неужели связка не работает ?
Если работает, то прошу владельцев рабочей связки "syslog-ng+logrotate" поделиться опытом реализации и рабочими конфигами, или же отослать меня ссылкой к описанию.

azhur
19-03-2010, 16:26
Syslog-ng ставил насколько помню по той же инструкции, возможно с небольшими вариациями.
Logrotate сверху прикрутился почти без проблем.
Единственная нерешенная мной проблема - параметр olddir не работает, может уже пофиксили.
Конфиг логротейта такой:

compress
delaycompress
#olddir /opt/var/log/archive/

/opt/var/log/syslog-ng.log {
daily
rotate 30
postrotate
/opt/etc/init.d/S01syslog-ng
endscript
}

/opt/var/log/vsftpd.log {
daily
rotate 30
missingok
}
include /opt/etc/logrotate.d

Единственная особенность - после ротейта основного лога надо перезапустить сислог.
Запускается в полночь кроном командой

/opt/sbin/logrotate -f /opt/etc/logrotate.conf
Работает нормально.
Для дальнейшего обсуждения нужны более конкретные вопросы.

Merlin68
24-03-2010, 21:39
Единственная особенность - после ротейта основного лога надо перезапустить сислог.

Как это делается ?


Запускается в полночь кроном командой

/opt/sbin/logrotate -f /opt/etc/logrotate.conf

Как это в срон прописать ? исполняемым файлом в cron.dayly?

BcTpe4HbIu
24-03-2010, 21:56
Как это делается ?

Как это в срон прописать ? исполняемым файлом в cron.dayly?


[admin@WL500w root]$ ls -la /opt/etc/cron.daily/logrotate
-rwxr-xr-x 1 admin root 122 2009-12-03 14:16 /opt/etc/cron.daily/logrotate
[admin@WL500w root]$ cat /opt/etc/cron.daily/logrotate
#!/bin/sh
/opt/sbin/logrotate -v /opt/etc/logrotate.conf 2>&1 | tee /opt/var/log/logrotate



[admin@WL500w root]$ cat /opt/etc/logrotate.conf
compress

/opt/var/log/syslog-ng.log {
size 1M
# weekly
rotate 4
postrotate
killall -HUP syslog-ng
endscript
}

/opt/var/log/authwarn.log {
size 1M
# weekly
rotate 12
missingok
postrotate
killall -HUP syslog-ng
endscript
}

/opt/var/log/vsftpd.log {
size 1M
# weekly
rotate 4
missingok
# mail reborn@maryno.net
postrotate
killall -HUP syslog-ng
endscript
}
......

azhur
25-03-2010, 18:23
Как это делается ?
За это отвечают эти 3 строчки в приведенном мной конфиге, читайте документацию!

postrotate
/opt/etc/init.d/S01syslog-ng
endscript

Как это в срон прописать ? исполняемым файлом в cron.dayly?Если у вас дэйли запускается в полночь (или любое другое устраивающее вас для ротейта логов время)- да.

brain-ripper
27-03-2010, 17:52
Подскажите, кто знает: является ли демон syslog, входящий в состав прошивки полноценым Syslog Server'ом? Т.е. может ли логировать сообщения внешних устройств, полученных по TCP (как описано здесь: http://ru.wikipedia.org/wiki/Syslog)

Если может, то как эту поддержку включить, а если нет, то может имеются какие-нибудь пакеты, реализующие поддержку syslog сервера...

vectorm
27-03-2010, 21:02
Подскажите, кто знает: является ли демон syslog, входящий в состав прошивки полноценым Syslog Server'ом? Т.е. может ли логировать сообщения внешних устройств, полученных по TCP (как описано здесь: http://ru.wikipedia.org/wiki/Syslog)

Если может, то как эту поддержку включить, а если нет, то может имеются какие-нибудь пакеты, реализующие поддержку syslog сервера...
Если воспользоваться поиском, то можно найти нужные темы самостоятельно.
Правда-правда, как думаете, я нахожу темы, куда переношу сообщения "писателей"? ;)
PS: я так понимаю, сами нашли данную тему и разобрались.

brain-ripper
27-03-2010, 21:12
Если воспользоваться поиском, то можно найти нужные темы самостоятельно.
Правда-правда, как думаете, я нахожу темы, куда переношу сообщения "писателей"? ;)

Уверяю, вас, что я в курсе того, что многое можно почерпнуть из поиска, и я, перед тем, как опубликовал сообщение, поиском воспользовался, но не нашел, какой из пакетов поддерживает syslog server (можете попробовать поискать). Если изначально знать, что и менно syslog-ng его поддерживает, то безусловно эта тема сразу же найдется (как и произошло, когда я из внешних источников узнал, что syslog-ng это поддерживает, о чем и сразу отписался в поднятой мною теме, со ссылкой как раз на эту тему), но вопрос как раз состоял в том - какая программа поддерживает сервер.

vectorm
27-03-2010, 21:24
Уверяю, вас, что я в курсе того, что многое можно почерпнуть из поиска, и я, перед тем, как опубликовал сообщение, поиском воспользовался, но не нашел, какой из пакетов поддерживает syslog server (можете попробовать поискать). Если изначально знать, что и менно syslog-ng его поддерживает, то безусловно эта тема сразу же найдется (как и произошло, когда я из внешних источников узнал, что syslog-ng это поддерживает, о чем и сразу отписался в поднятой мною теме, со ссылкой как раз на эту тему), но вопрос как раз состоял в том - какая программа поддерживает сервер.
Я искал тупо по syslogd (http://wl500g.info/search.php?searchid=4251400).
Плюс в свое время выкладывал ссылку в прикрепленной теме для лентяев (http://wl500g.info/showpost.php?p=112787&postcount=6) (п.16. Разное).
Причина обрезанности практически всех пакетов в прошивке - экономия места и ненужность доп. опций при стандартном использовании роутеров.
PS: флудить заканчиваю.

brain-ripper
22-04-2010, 18:09
настроил syslog-ng просто как замену стандартному syslog - пишет системные события прямиком в /tmp/syslog.log

Проблема в том, что если удалить файл /tmp/syslog.log (процесс syslog-ng позволет это сделать), то логирование прекращается - файл не создается логгером заново, помогает только перезапуск syslog-ng.
Файл логов удаляется, если в WEB-морде на страничке просмотра логов нажать "Clear" - т.е. это стандартный функционал.

Можно ли как-т настроить syslog-ng, чтобы при удалении файла в процессе логирования он создавал его заново и дописывал туда события?

P.S. с моей точки зрения, как пользователя Windows, странно такое поведение: если хэндл файла открыт на запись, то удаление файла должно обламываться, если же закрыт, то при записи, syslog-ng должен открывать его и, судя по тому, что при запуске процесса файл создается, если его не было, то и открываться он должен с созданием.
Хотя может в линуксе работа с файлами по другому реализована, или при добавлении записи файл только открывается логгером, без создания...

dimaka
24-04-2010, 10:28
А зачем его удалять? Можно не удалять, а очищать, тогда лог будет продолжаться :)

brain-ripper
25-04-2010, 11:45
А зачем его удалять?

ну в вопросе написано зачем - так работает стандартное очищение в WEB-морде: при нажитии "Clear" на странице "System log" - файл /tmp/syslog.log удаляется.


Можно не удалять, а очищать, тогда лог будет продолжаться :)

а это как сделать - очищать?
и второй вопрос - можно ли сделать, чтобы при нажатии "Clear" в WEB'е делалось "очищение" лога, а не удаление его файла?

dimaka
25-04-2010, 20:28
По-моему, установить "нестандартный" логер и требовать от него "стандартной" реакции это немного чересчур :)
Как очищать - поиск по echo clear

brain-ripper
25-04-2010, 20:55
По-моему, установить "нестандартный" логер и требовать от него "стандартной" реакции это немного чересчур :)
Как очищать - поиск по echo clear

А по-моему - техника должна быть для человека, а не человек для техники и тебовать от программы ожидаемой реакции это совсем не черезчур, вопрос только в трудозатратах.

Видимо придется пока оставить так как у меня уже сделано: syslog-ng пишет лог в fifo файл, а shell скрипт, запущенный в background'е, вычитывает оттуда (заодно парся полученные по udp сообщения) и дозаписывает (перенаправление >> ) в /tmp/syslog.log
Этот метод обеспечивает "стандартное поведение", просто хотелось бы избавиться от лишнего fifo файла и запущенного скрипта.

ZeroCold
04-05-2010, 10:48
Собственно вопрос можно ли вести детальную запись трафика на своей точке. (wl-500gp v2)
т.е. Записывать какой ip где был какие данные передавал (если письма писал то какие т.е. текста письма и тп)
И если можно то какими средствами это можно реализовать?

Знаю что есть такая чудная программа tcpdump.
Возникает сразу два вопроса, есть ли она для прошивки олега.
А так же какой трафик она пишет, весь, исходящий или входящий, и какой порт мне необходимо слушать что бы просматривать весь трафик который генерят клиенты на wi-fi (как входящий так и исходящий)

g9lg9l
13-05-2010, 18:52
это мои первые шаги
http://www.wl500g.info/showpost.php?p=197254&postcount=3734

flanker
05-09-2010, 02:38
Возможно ли фиксировать в системном логе включение и отключение Wi-Fi? Скачал с офсайта мануал по syslog-ng, но не нашел в описании способа, как этого сделать. Не подскажут ли знатоки этого дела?

brain-ripper
05-09-2010, 08:27
Возможно ли фиксировать в системном логе включение и отключение Wi-Fi? Скачал с офсайта мануал по syslog-ng, но не нашел в описании способа, как этого сделать. Не подскажут ли знатоки этого дела?

А каким образом включается/выключается Wi-Fi?
Если скриптом, то, например можно добавить туда что-то типа "logger Wi-Fi turned on" или "logger Wi-Fi turned off". А если сам скрипт распечатывает результат исполнения в консоль, то "script | logger".
Все это можно сделать как со стандартным логгером, так и с syslog-ng

flanker
05-09-2010, 13:34
А каким образом включается/выключается Wi-Fi?
Если скриптом, то, например можно добавить туда что-то типа "logger Wi-Fi turned on" или "logger Wi-Fi turned off". А если сам скрипт распечатывает результат исполнения в консоль, то "script | logger".
Все это можно сделать как со стандартным логгером, так и с syslog-ng

Для включения и выключения Wi-Fi применяю 2 скрипта, которые выводят информационные сообщения в консоль.
/usr/local/sbin/wi-fi_on

#!/bin/sh
wl radio on
printf "Wi-Fi turned on"
/usr/local/sbin/wi-fi_off

#!/bin/sh
wl radio off
printf "Wi-Fi turned off"
Эти скрипты прописаны в crontab для включения/выключения Wi-Fi по расписанию в течение дня. Работает исправно.

Также повесил на кнопку EZ Setup маршрутизатора (WL-500w) скрипт /usr/local/sbin/ez-setup, который переключает состояние Wi-Fi по нажатию кнопки.

#!/bin/sh
[ `wl isup` -eq 1 ] && /usr/local/sbin/wi-fi_off || /usr/local/sbin/wi-fi_on
Тоже работает исправно.

Но вот с логом что-то у меня не клеится. В конфигурационный файл syslog-ng с первой страницы я добавил такие строки:

destination wifistatuslog { file("/opt/var/log/wifistatus.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR (info|script|wifistatus) $MESSAGE\n")
);
};

log { source(src);
destination(wifistatuslog); };
Поскольку особо нечего фильтровать в выводе моих простых скриптов, то фильтров я не создавал. Или нужно? Если нужно, то по какому критерию детектировать мои скрипты?

И еще попутный вопрос. Правильно ли я понимаю, что в этой части кода

destination mysyslog {
file("/opt/var/log/syslog-ng.log"
owner("root")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination authwarnlog {
file("/opt/var/log/authwarn.log"
owner("root")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

"root" в поле "owner" (выделено красным) - это имя пользователя, используемое для входа на веб-интерфейс маршрутизатора и telnet на него? У меня оно изменено, потому в конфиге syslog-ng я его тоже заменил на свое. group("root") не нужно менять, как я понимаю.

brain-ripper
05-09-2010, 14:39
Но вот с логом что-то у меня не клеится. В конфигурационный файл syslog-ng с первой страницы я добавил такие строки:


Не очень понятно, для чего используется именно syslog-ng - необходимо логировать события Wi-Fi именно в wifistatus.log, а не в системный лог? В ином случае достаточно стандартного логгера - как я говорил добавить в скрипты вызов "logger Wi-Fi turned on", "logger Wi-Fi turned off", или сами скрипты вызывать таким образом: "/usr/local/sbin/wi-fi_on | logger", "/usr/local/sbin/wi-fi_off | logger".



Поскольку особо нечего фильтровать в выводе моих простых скриптов, то фильтров я не создавал. Или нужно? Если нужно, то по какому критерию детектировать мои скрипты?

что имеется ввиду под "по какому критерию детектировать мои скрипты"?
syslog-ng, так же, как обычный логгер записывает в файл то, что посылается системному логгеру (в моем примере выше это делается командой "logger"). Стандартный логгер все подряд скидывает в /tmp/syslog.log, а в syslog-ng можно настроить что, откуда и куда записывать. Можно сказать, эти "настройки" и есть фильтры

flanker
05-09-2010, 16:47
Не очень понятно, для чего используется именно syslog-ng - необходимо логировать события Wi-Fi именно в wifistatus.log, а не в системный лог?
Поскольку я только коснулся темы сбора системного лога, то, вероятно, по незнанию не изложил более полную информацию. Исправляюсь. Я хочу настроить логирование и в системный лог, и в файл wifistatus.log, чтобы можно было просматривать его статистику, не разгребая большой системный лог. А системный лог смотреть через веб-интерфейс.


В ином случае достаточно стандартного логгера - как я говорил добавить в скрипты вызов "logger Wi-Fi turned on", "logger Wi-Fi turned off", или сами скрипты вызывать таким образом: "/usr/local/sbin/wi-fi_on | logger", "/usr/local/sbin/wi-fi_off | logger".
Благодаря данным командам половина дела сделана - системный лог отображает события включения/выключения Wi-Fi. Для тестов подправил файл /usr/local/sbin/ez-setup:

#!/bin/sh
[ `wl isup` -eq 1 ] && (/usr/local/sbin/wi-fi_off | logger) || (/usr/local/sbin/wi-fi_on | logger)


что имеется ввиду под "по какому критерию детектировать мои скрипты"?
syslog-ng, так же, как обычный логгер записывает в файл то, что посылается системному логгеру (в моем примере выше это делается командой "logger"). Стандартный логгер все подряд скидывает в /tmp/syslog.log, а в syslog-ng можно настроить что, откуда и куда записывать. Можно сказать, эти "настройки" и есть фильтры
Спасибо за более подробные пояснения. Раньше я предполагал, что syslog-ng каким-либо образом "отлавливает" программы и события. Теперь понятно.

Осталось настроить сбор статистики состояния Wi-Fi в файл wifistatus.log. И вот тут я "плаваю" пока что...

brain-ripper
05-09-2010, 17:00
Осталось настроить сбор статистики состояния Wi-Fi в файл wifistatus.log. И вот тут я "плаваю" пока что...

syslog-ng фильтрует сообщения по трем параметрам: level, facility и program - последнее это имя процесса, от которого пришло сообщение, первые два можно задать как параметр, используя тот же logger. подробнее о logger можно посмотреть здесь:
http://www.opennet.ru/man.shtml?topic=logger&russian=0&category=&submit=%F0%CF%CB%C1%DA%C1%D4%D8+man

Фильтры довольно просто настроить, я использовал темплейт, устанавливаемый syslog-ng и некоторой информацией из начала этого треда, а так же официальным мануалом. Хорошая подробная документация по syslog-ng называется "The syslog-ng Administrator Guide. 1.1.4 Edition. Published July 23, 2008". Не помню, где я ее брал, где-то в официальных источниках, pdf, ~2,5Mb, если надо, пиши в личку, вышлю.

Путь с syslog-ng более универсальный, но более просто было бы при вызывании logger со стандартным логгером вызывать и запись в отдельный файл, например, внутри скрипта:
echo Wi-Fi turned on
echo `date`: Wi-Fi turned on >> wifistatus.log

flanker
05-09-2010, 19:15
Фильтры довольно просто настроить, я использовал темплейт, устанавливаемый syslog-ng и некоторой информацией из начала этого треда, а так же официальным мануалом.
Если бы знал, что запнусь с логированием состояния Wi-Fi, то сохранил бы оригинальный конфиг, а так заменил его.


Путь с syslog-ng более универсальный, но более просто было бы при вызывании logger со стандартным логгером вызывать и запись в отдельный файл, например, внутри скрипта:
echo Wi-Fi turned on
echo `date`: Wi-Fi turned on >> wifistatus.log
Вот именно syslog-ng и хочется настроить...


Хорошая подробная документация по syslog-ng называется "The syslog-ng Administrator Guide. 1.1.4 Edition. Published July 23, 2008".
Я стянул официальную документацию с официального сайта "The syslog-ng 3.0 Administrator Guide. Twelfth Edition. Publication date July 5, 2010".


syslog-ng фильтрует сообщения по трем параметрам: level, facility и program - последнее это имя процесса, от которого пришло сообщение, первые два можно задать как параметр, используя тот же logger. подробнее о logger можно посмотреть здесь:
http://www.opennet.ru/man.shtml?topic=logger&russian=0&category=&submit=%F0%CF%CB%C1%DA%C1%D4%D8+man
Пытался задавать фильтр с различными параметрами и их комбинациями. Ситуация странная - при использовании фильтра syslog-ng вообще не работает - его лог не обновляется, а в веб-интерфейсе вся информация отображена в старом формате syslogd. Если отключу фильтр, то syslog-ng нормально работает, файл wifistatus.log создается и пополняется, но туда пишется все то же самое, что и в системный лог - не удивительно, поскольку фильтрация отключена.

Применял такие фильтры:

filter f_wi-fi { (level(notice) and facility(user) ); };

filter f_wi-fi { (program(/usr/local/sbin/wi-fi_on) or (program(/usr/local/sbin/wi-fi_on) ); };

Хотя в официальном руководстве написано, что параметр program() позволяет принимать сообщения от программ, выдающих информацию в stdout. Как я понимаю, мои скрипты ее выдают. Или я неправильно понимаю? Явно что-то не так с моими фильтрами.

Результатом работы скриптов wi-fi_on и wi-fi_off являются следующие строки в системном логе (имя своего логина я сменил на "root"):

20:07:35 05-09-2010 (notice|user|root) root: Wi-Fi turned off
20:07:38 05-09-2010 (notice|user|root) root: Wi-Fi turned on

Сами скрипты:

#!/bin/sh
wl radio on
logger "Wi-Fi turned on"

#!/bin/sh
wl radio off
logger "Wi-Fi turned off"

brain-ripper
05-09-2010, 19:25
Применял такие фильтры:

filter f_wi-fi { (level(notice) and facility(user) ); };

filter f_wi-fi { (program(/usr/local/sbin/wi-fi_on) or (program(/usr/local/sbin/wi-fi_on) ); };


С параметром program не возился, но, думаю, имеют место быть такие моменты:
- в фильтре надо указывать имя файла, без пути
- в данном случае вместо имени файла идет имя пользователя, т.е. root, думаю, это особенность работы команды logger. Можно использовать ключ -t, чтобы изменить этот параметр.
Например: "echo Wifi is on | logger -t WiFi" добавит в лог строку вида "22:23:01 05-09-2010 (notice|user|WiFi) WiFi: Wifi is on". Соответственно можно настроить один фильтр как "level(notice) and facility(user) and program (WiFi)", или даже просто "program (WiFi)"

brain-ripper
05-09-2010, 19:35
Хотя в официальном руководстве написано, что параметр program() позволяет принимать сообщения от программ, выдающих информацию в stdout. Как я понимаю, мои скрипты ее выдают. Или я неправильно понимаю? Явно что-то не так с моими фильтрами.


syslog-ng берет сообщения отправленные системному логгеру (в данном случае командой logger и никак иначе) и фильтрует их, в соответствии со своими фильтрами. Относительно program это значит, что он берет следующее сообщение из очереди, сравнивает его параметр program, со своим фильтром program. Если значения совпадает - делает что-то одно, если нет - что-то другое.
Т.е. он не делает что-то особенно с процессами, которые прописаны в фильтре program - т.е. не перехватывает их вывод stdout. Просто фильтр. На входе только сообщения, отправленные системному логгеру (в нашем случае команда logger).
Немного сумбурно описал, но надеюсь, что понятно :)

flanker
05-09-2010, 20:26
С параметром program не возился, но, думаю, имеют место быть такие моменты:
- в фильтре надо указывать имя файла, без пути
Пробовал так:

filter f_wifi { (program(wi-fi_on) or program(wi-fi_off) ); };
Результат тот же - syslog-ng не работает совсем.


С параметром program не возился, но, думаю, имеют место быть такие моменты:
- в данном случае вместо имени файла идет имя пользователя, т.е. root, думаю, это особенность работы команды logger. Можно использовать ключ -t, чтобы изменить этот параметр.
Например: "echo Wifi is on | logger -t WiFi" добавит в лог строку вида "22:23:01 05-09-2010 (notice|user|WiFi) WiFi: Wifi is on".
Работает. Прописывал в скриптах так:

#!/bin/sh
wl radio on
logger -t Wi-Fi "Wi-Fi turned on"

#!/bin/sh
wl radio on
logger -t Wi-Fi "Wi-Fi turned on"
Выдает результат:

22:07:07 05-09-2010 (notice|user|Wi-Fi) Wi-Fi: Wi-Fi turned off
22:07:09 05-09-2010 (notice|user|Wi-Fi) Wi-Fi: Wi-Fi turned on

Соответственно можно настроить один фильтр как "level(notice) and facility(user) and program (WiFi)", или даже просто "program (WiFi)"
Все равно не работает :(

filter f_wifi { (program(Wi-Fi) ); };

Как-то странно. Как бы я не прописывал фильтры для Wi-Fi, syslog-ng не работает при их использовании


syslog-ng берет сообщения отправленные системному логгеру (в данном случае командой logger и никак иначе) и фильтрует их, в соответствии со своими фильтрами. Относительно program это значит, что он берет следующее сообщение из очереди, сравнивает его параметр program, со своим фильтром program. Если значения совпадает - делает что-то одно, если нет - что-то другое.
Т.е. он не делает что-то особенно с процессами, которые прописаны в фильтре program - т.е. не перехватывает их вывод stdout. Просто фильтр. На входе только сообщения, отправленные системному логгеру (в нашем случае команда logger).
Немного сумбурно описал, но надеюсь, что понятно :)
Все доходчиво. Спасибо!

brain-ripper
06-09-2010, 17:57
Как-то странно. Как бы я не прописывал фильтры для Wi-Fi, syslog-ng не работает при их использовании


Запости свой конфигурационный файл целиком, посмотрим

flanker
06-09-2010, 21:09
Запости свой конфигурационный файл целиком, посмотрим


################################################## ##############################
# Syslog-ng configuration
# /opt/etc/syslog-ng/syslog-ng.conf
#

################################################## #############################
# tiwag's active filters and logs
#

options { long_hostnames(off); sync(0); };

source src { file("/proc/kmsg");unix-stream("/dev/log"); internal(); };
source net { udp(); };

destination mysyslog {
file("/opt/var/log/syslog-ng.log"
owner("flanker")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination authwarnlog {
file("/opt/var/log/authwarn.log"
owner("flanker")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination wifistatuslog { file("/opt/var/log/wifistatus.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination vsftpdlog { file("/opt/var/log/vsftpd.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination dropbearlog { file("/opt/var/log/dropbear.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination cronlog { file("/opt/var/log/cron.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

filter f_ni_syslog-ng { not ( level(info) and program(syslog-ng) ); };
filter f_ni_thttpd { not ( level(info) and program(thttpd) ); };
filter f_ni_vsftpd { not ( level(info) and program(vsftpd) ); };
filter f_ni_cron { not ( (level(notice) and program(cron) ) or ( level(info) and facility(cron) ) ); };

#filter f_wifi { ( level(notice) and facility(user) ); };
filter f_wifi { ( program(wi-fi_on) or program(wi-fi_off) ); };
filter f_vsftpd { ( program(vsftpd) ); };
filter f_dropbear { ( program(dropbear) ); };
filter f_cron { ( level(notice) and program(cron) ); };
filter f_authwarn { ( ( ( level(info) or level(warning) ) and program(dropbear) ) or ( ( level(warning) ) and program(vsftpd) ) ); };

################################################## #############################
# active logs
#

log { source(src);
filter(f_ni_vsftpd);
filter(f_ni_thttpd);
filter(f_ni_syslog-ng);
filter(f_ni_cron);
destination(mysyslog); };

#log { source(src);
# filter(f_wifi)
# destination(wifistatuslog); };

log { source(src);
filter(f_vsftpd);
destination(vsftpdlog); };

log { source(src);
filter(f_dropbear);
destination(dropbearlog); };

log { source(src);
filter(f_authwarn);
destination(authwarnlog); };

log { source(src);
filter(f_cron);
destination(cronlog); };
В данный момент логирование событий Wi-Fi в отдельный файл wifistatus.log я отключил, чтобы он не замусоривался (в тексте выделил красным). Зеленым цветом выделил 2 варианта фильтров, использованных мной в последние разы. Синим - код шаблона для формирования wifistatus.log.

brain-ripper
06-09-2010, 21:42
В данный момент логирование событий Wi-Fi в отдельный файл wifistatus.log я отключил, чтобы он не замусоривался (в тексте выделил красным). Зеленым цветом выделил 2 варианта фильтров, использованных мной в последние разы. Синим - код шаблона для формирования wifistatus.log.

А все остальные фильтры работают правильно, т.е. только с wi-fi проблема? Я, честно говоря, не пробовал делать так, чтобы одно и то же событие одновременно в разные логи писалось.

если сделать фильтр "filter f_wifi { ( program(wifi) ); };" и логирование вызывать с ключом "-t wifi" - тоже не работает?

flanker
06-09-2010, 21:58
А все остальные фильтры работают правильно, т.е. только с wi-fi проблема?
Именно так - как только активирую фильтр Wi-Fi - все наперекосяк.


если сделать фильтр "filter f_wifi { ( program(wifi) ); };" и логирование вызывать с ключом "-t wifi" - тоже не работает?
Совершенно верно. Замучился с ним уже...

HackVan
15-10-2010, 08:10
Постоянно в логах вижу эту запись? Что это вообще такое? Или стоит закрыть глаза на это.

Роутер wl500gP v1 прошивка wl500g-1.9.2.7-d-r2174

ryzhov_al
15-10-2010, 08:36
Закрывать глаза не стоит.

Алгоритм поиска виновника следующий:
1) При возникновении ошибки в следующий раз посмотреть на вывод
$ cat /proc/kallsyms
и определить в какой функции возникает ошибка. У меня на прошивке 1.9.2.7-rtn-r2123, например, в данный момент по адресу 8015cc8c находится функция request_firmware_nowait:
$ cat /proc/kallsyms | grep 8015c
...
8015cb1c t firmware_uevent
8015cc08 T request_firmware_nowait
8015cdb0 T release_firmware
...
2) Определить компонент, в котором используется функция.
В моём примере - это модуль hotplug, используемый для USB-устройств.

lly
15-10-2010, 08:47
В штатной конфигурации никогда такого не наблюдали.

Подобное может возникать, в частности, из-за модулей от другой версии ядра. Ну и скрывать логи и информацию про установленный дополнительный софт, если вы рассчитываете хоть на какую-то помощь, неразумно.

HackVan
15-10-2010, 09:18
Как-то странно, но kallsyms у меня нет.. но есть ksyms


[root@hackvan /proc]$ cat /proc/ksyms | grep 8015
80150e48 ip_rcv
8015b0b0 tcp_read_sock
80151854 ip_defrag
8015642c ip_cmsg_recv
801540dc ip_finish_output
801551f0 ip_fragment
80153b80 ip_send_check
80153540 ip_options_undo
80152fa0 ip_options_compile
8015042c inet_del_protocol
80150380 inet_add_protocol
[/QUOTE]

Установленное ПО:
[QUOTE]
[root@hackvan /proc]$ ipkg list_installed
apr - 1.3.12-1 - Apache Portable Runtime library
apr-util - 1.3.9-1 - Apache Portable Runtime utilities library
autoconf - 2.67-1 - Creating scripts to configure source code packages using templates
automake - 1.10-2 - Creates GNU standards-compliant Makefiles from template files
bash - 3.2.49-1 - A bourne style shell
bip - 0.8.4-1 - multi user irc proxy
bison - 2.4.1-1 - a general-purpose parser generator that converts an annotated context-free grammar into an LALR(1) or GLR parser for that gramm
bzip2 - 1.0.6-1 - Very high-quality data compression program
coreutils - 8.4-1 - Bunch of heavyweight *nix core utilities
cron - 4.1-7 - Standard vixie cron, with cron.d addition
cyrus-sasl-libs - 2.1.23-1 - Provides client or server side authentication (see RFC 2222).
diffutils - 3.0-1 - contains gnu diff, cmp, sdiff and diff3 to display differences between and among text files
e2fslibs - 1.41.9-1 - Ext2 Filesystem Libraries
expat - 2.0.1-1 - XML Parser library
file - 5.04-1 - Ubiquitous file identification utility.
findutils - 4.2.32-1 - File finding utilities
flex - 2.5.35-1 - Generates programs that perform pattern-matching on text.
freetype - 2.3.6-1 - Free truetype library
gawk - 3.1.8-1 - Gnu AWK interpreter
gdbm - 1.8.3-2 - GNU dbm is a set of database routines that use extensible hashing. It works similar to the standard UNIX dbm routines.
glib - 2.20.4-1 - The GLib library of C routines.
groff - 1.19.2-2 - front-end for the groff document formatting system
gzip - 1.2.4a-4 - GNU Zip data compression program
ipkg-opt - 0.99.163-10 - The Itsy Package Manager
libart - 2.3.17-2 - 2-d graphics library.
libdb - 4.2.52-3 - Berkeley DB Libraries
libpng - 1.2.44-1 - Portable Network Graphics Libraries
libtool - 1.5.26-1 - Library tools.
libuclibc++ - 0.2.2-9 - C++ standard library designed for use in embedded systems
libxml2 - 2.7.7-2 - Libxml2 is the XML C parser and toolkit developed for the Gnome project.
libxslt - 1.1.26-1 - An XML Stylesheet processor based on libxml2
lighttpd - 1.4.28-1 - A fast webserver with minimal memory footprint.
m4 - 1.4.13-1 - gnu macro processor and compiler front end
make - 3.82-1 - examines files and runs commands necessary for compilation
mc - 4.7.0.9-1 - Midnight Commander File Manager
nano - 2.2.5-1 - A pico like editor
ncurses - 5.7-1 - NCurses libraries
ncursesw - 5.7-1 - NCurses libraries with wide char support
neon - 0.29.3-1 - an HTTP and WebDAV client library, with a C interface
net-tools - 1.60-6 - Network Config and Debug tools (route, arp, netstat etc.)
openldap-libs - 2.3.43-1 - Open Lightweight Directory Access Protocol
openssl - 0.9.7m-5 - Openssl provides the ssl implementation in libraries libcrypto and libssl, and is needed by many other applications and librari
patch - 2.6.1-1 - applies a diff to produce a patched file
pcre - 8.10-1 - Perl-compatible regular expression library
perl - 5.8.8-23 - Practical Extraction and Report Language.
php - 5.2.14-1 - The php scripting language
php-fcgi - 5.2.14-1 - The php scripting language, built as an fcgi module
pkgconfig - 0.15.0-2 - Package configuration tool
poptop - 1.2.1-1 - Poptop is the PPTP server solution for Linux.
python25 - 2.5.5-2 - Python is an interpreted, interactive, object-oriented programming language.
readline - 6.1-2 - The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are
rrdtool - 1.2.30-1 - Round-Robin Database tool. Database collator and plotter
rsync - 3.0.7-1 - fast remote file copy program (like rcp)
sed - 4.2.1-1 - Stream editor.
slang - 2.1.4-1 - S-Lang is a multi-platform library designed to allow a developer to create robust multi-platform software.
spawn-fcgi - 1.6.3-1 - spawn-fcgi is used to spawn fastcgi applications
sqlite - 3.7.2-1 - SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.
svn - 1.6.12-1 - a compelling replacement for CVS
tar - 1.23-1 - heavyweight version of the Tape ARchiver
tcl - 8.4.19-2 - The Tool Command Language
uclibc-opt - 0.9.28-13 - micro C library for embedded Linux systems
unrar - 3.9.8-1 - unrar is an application that can decompress files and archives created using the RAR compression scheme
unzip - 6.0-2 - A (de)compression library for the ZIP format
wget - 1.12-2 - A network utility to retrieve files from the Web
zlib - 1.2.5-1 - zlib is a library implementing the 'deflate' compression system.
Successfully terminated.


На роутере также постонно работает poptop и 3proxy

HackVan
15-10-2010, 09:27
Флешка на 8 Gb Kingston.



[root@hackvan /]$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.0M 3.0M 0 100% /
/dev/root 3.0M 3.0M 0 100% /
tmpfs 15M 440K 15M 3% /tmp
/dev/scsi/host0/bus0/target0/lun0/part2
7.4G 621M 6.4G 9% /opt


хмм... cat /proc/ksyms | grep 8015cc - ничего не возвращает

HackVan
15-10-2010, 09:47
Настройки приватности вообще не трогал с момента регистрации на форуме. См выше.. ответ написал
cat /proc/ksyms | grep 8015cc - ничего не возвращает

ryzhov_al
15-10-2010, 09:57
В логе адрес возникновения ошибки всегда один и тот же?
Если да, то стоит перегрузить роутер и ДО возникновения ошибки посмотреть по cat /proc/ksyms | grep ХХХХХХ какая функция загружена по адресу возникновения ошибки.

HackVan
21-10-2010, 07:27
Как-то забил я на это дело, времени не было. Щас руки дошли и методом постепенного отключения работающего ПО. Выяснил что проблема была из-за 3proxy-0.6. Из-за него kernel срет в лог. Попробую другую билд прокси или вернусь обратно на squid.

lly
21-10-2010, 07:48
Проблема, скорее всего, обоюдная - 3proxy передаёт отрицательное число, а ядро не проверяет.
Аналогичную багу чинили в 2.6
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=9261c9b042547d01eeb206cf0e2 1ce72832245ec
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ba78073e6f70cd9c64a478a9bd9 01d7c8736cfbc
если есть желание экспериментировать - напиши, соберем отладочную версию

Lit
25-10-2010, 20:50
Есть скрипт, который вызывает процесс как фоновую задачу job:

echo -n start
$DAEMON &
echo done

Я же вызываю этот скрипт и хочу логировать все что он выдаст в системный журнал.

script.sh | logger

Все это почемуто приводит к зависанию logger-а. :confused:
Когда сдесь зависает это могу понять:

sleep 10 | logger
Но зачем идет ожидание вывода от процесса ушедшего в bg непонятно или это баг loggera?
Прошивка последняя rtn

Как мне правильно запустить скрипт, чтобы в логе у меня было start done и не зависало все?

Lit
26-10-2010, 17:40
похоже есть два способа:
1)
script.sh | logger &
и будут висеть в памяти script.sh и logger, пока у оболочки скрипта job не закончится, хотя скрипт будет обработан весь до конца сразу же после запуска.

2)
script.sh &> script.log
cat script.log | logger

Я сделал вторым способом.

Nolik
14-12-2010, 08:25
А как заставить syslog-ng собирать вообще все логи? а то чет ни варнингов и нет ничего подобного...

filter f_ni_syslog-ng { not ( level(info) and program(syslog-ng) ); };

не тут что то поправить нужно?

brain-ripper
14-12-2010, 08:32
А как заставить syslog-ng собирать вообще все логи? а то чет ни варнингов и нет ничего подобного...

filter f_ni_syslog-ng { not ( level(info) and program(syslog-ng) ); };

не тут что то поправить нужно?

чтобы собирать вообще все логи - надо отключить все фильтры

Nolik
14-12-2010, 10:14
чтобы собирать вообще все логи - надо отключить все фильтры

log { source(src);
# filter(f_ni_vsftpd);
# filter(f_ni_thttpd);
# filter(f_ni_syslog-ng);
# filter(f_ni_cron);
destination(mysyslog); };

типа так?

nikita800
15-01-2011, 02:32
Если роутер случайно перезагрузится, то логи потеряются. Как сохранять лог в файл на жестком диске? Например в файл C:\Logs\wl500gp.txt

WL500gP
1.9.2.7-d-r2381

Zyxmon
15-01-2011, 05:01
Можно с помощью моей проги или любой другой, принимающей логи по протоколу syslog.

lsd_wiz
15-01-2011, 10:02
самый простой способ кинуть в /opt/etc/cron.5mins/bla-bla.sh
и не забыть chmod a+x bla-bla.sh


#!/bin/sh
cat /tmp/syslog.log >> /opt/system.log
echo "" > /tmp/syslog.log

каждые 5мин лог будет копироваться в файлик... =)

nikita800
15-01-2011, 14:03
самый простой способ кинуть в /opt/etc/cron.5mins/bla-bla.sh
и не забыть chmod a+x bla-bla.sh


#!/bin/sh
cat /tmp/syslog.log >> /opt/system.log
echo "" > /tmp/syslog.log

каждые 5мин лог будет копироваться в файлик... =)


Я в линуксе не очень понимаю, но до подключения телнетом к роутеру дохожу.
Можно пожалуйста по пунктам - что вводить в консоль?

lsd_wiz
16-01-2011, 17:08
Я в линуксе не очень понимаю, но до подключения телнетом к роутеру дохожу.
Можно пожалуйста по пунктам - что вводить в консоль?
телнетом коннектишся к роутеру:
если у тебя не стоит cron тo исчешь как его ставить тут! (http://wl500g.info/showthread.php?t=18096).
#кидаем скрипт log.sh в /opt/etc/cron.5min/ или в папку с другим интервалом см crontab

echo "#/bin/sh" > /opt/etc/cron.5min/log.sh
echo "cat /tmp/syslog.log >> /opt/system.log" >> /opt/etc/cron.5min/log.sh
echo "echo \"\" > /tmp/syslog.log" >> /opt/etc/cron.5min/log.sh
chmod a+x /opt/etc/cron.5min/log.sh
всё!
зы. просто скапируй строки и вставь в телнет. =)

chyuliy
27-01-2011, 18:25
С определенного момента сообщения дропбеар и аутоварн стали сыпаться в syslog, а не отдельные для них логи.
Подскажите в чем может быть дело?


options { long_hostnames(off); sync(0); };

source src { file("/proc/kmsg");unix-stream("/dev/log"); internal(); };
source net { udp(); };

destination mysyslog {
file("/opt/var/log/syslog-ng.log"
owner("schumi")
group("root")
perm(0640)
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};

destination dropbearlog { file("/opt/var/log/dropbear.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY) $MESSAGE\n")
);
};
filter f_ni_dropbear { not ( program(dropbear) ); };
filter f_dropbear { ( program(dropbear) ); };
log { source(src);
filter(f_ni_vsftpd);
filter(f_ni_thttpd);
filter(f_ni_syslog-ng);
filter(f_ni_cron);
filter(f_ni_dropbear);
filter(f_ni_transmission-daemon);
destination(mysyslog); };
log { source(src);
filter(f_dropbear);
destination(dropbearlog); };

chyuliy
31-01-2011, 10:29
собственная была ошибка. Просто после очередного апгрейда, переписался S01syslog-ng. Вернул прежнее состояние, всё стало на место.

featZima
08-02-2011, 22:12
роутер: Asus RT-N16
прошивка: 1.9.2.7-rtn-r2555
Подскажите как отключить логирование? Пробывал писать в dhcpd.conf log-facility local6 -- не помогло...

----------------------------------------------------------

Оказалось надо просто включить мозги и отредактировать файл /opt/etc/syslog-ng/syslog-ng.conf

Подключаем отдельный файл для логов dhcpd и задаём строку для форматирования строчек в нём:

destination dropbearlog { file("/opt/var/log/dhcpd.log"
template("$HOUR:$MIN:$SEC $DAY-$MONTH-$YEAR ($PRIORITY|$FACILITY|$PROGRAM) $MESSAGE\n")
);
};
Задаём два фильтра. Первый отделяет все сообщения, кроме info сообщений от dhcpd. Второй отделяет все сообщения от dhcpd.

filter f_ni_dhcpd { not ( level(info) and program(dhcpd) ); };
filter f_dhcpd { ( program(dhcpd) ); };
Модифицируем цепочку фильтров для общего лога (который виден в web админке) таким образом, чтобы не пропустить туда info сообщений от dhcpd. Проще говоря включаем ранее созданный первый фильтр в цепочку.

log { source(src);
filter(f_ni_vsftpd);
filter(f_ni_thttpd);
filter(f_ni_syslog-ng);
filter(f_ni_cron);
filter(f_ni_dhcpd);
destination(mysyslog); };
Направляем все сообщения c помощью второго фильтра в отдельный файл:

log { source(src);
filter(f_dhcpd);
destination(dhcpdlog); };

featZima
09-02-2011, 10:08
Ещё такой вопрос... Если в веб-морде нажать кнопку "Clear" на странице "Status & Log - System Log" то история очищается, но далее не зависимо от того появляются ли новые сообщения в логе или нет, в веб-морде будет пусто... почему так?

--------------------------------------------------------------------------------------

Оказалось, что кнопка Clear удаляет файл с историей, а именно /tmp/syslog.log, а так как последний является лишь ссылкой

ln -s /opt/var/log/syslog-ng.log /tmp/syslog.log
то ссылка удаляется до следующей перезагрузки...

Подскажите как можно изменить логику работы кнопки Clear и как корректно очищать историю в syslog-ng?

pupkidze
21-02-2011, 13:04
Господа, простите если задаю баянный вопрос, но как просмотреть полный лог, т.е. кто на какие порты стучится, кто в настоящий момент из сети куда лезет? Спасибо.

Virtuals
13-06-2011, 05:17
вопрос на засыпку.... а есть какое нить ограничение ppp.log ? а то вчера деньги на модеме кончились так лог схватил в несколько метров..... роутеру сильно поплохело ;).

rss
13-06-2011, 12:25
вопрос на засыпку.... а есть какое нить ограничение ppp.log ? а то вчера деньги на модеме кончились так лог схватил в несколько метров..... роутеру сильно поплохело ;).

Думаю, что будет писать, пока в оперативке не закончится раздел /tmp.

Virtuals
16-06-2011, 01:43
Думаю, что будет писать, пока в оперативке не закончится раздел /tmp.

жестоко :(. это-ж гарантия зависания :). имхо нужно чет делать.

akm2008
16-06-2011, 18:30
жестоко :(. это-ж гарантия зависания :). имхо нужно чет делать.


Если в роутер воткнута флешка или hdd то можно симлинком
Будет писать на флешку или диск

Virtuals
20-06-2011, 01:56
Если в роутер воткнута флешка или hdd то можно симлинком
Будет писать на флешку или диск

может надежней сделать контроль размера файла? /tmp/chat.log и усекать его начало. логично-ж. да и нафиг такого размера лог дозвона не нужен.


PS таким макаром ">>/tmp/chat.log" рано иль поздно скудные 15Мб в tmpfs кончатся.... а хотелось бы чтоб роутер имел долгий долгий uptime.
пока вижу решение только в post-firewall добавить скрипт что будет обрезать лог до нужного размера., (opt не предлагать, роутеры будут работать по большей части без дисков.)

ЗЫЗЫ я так понял что "прошивка в связке с модемом, рано иль поздно должна повесить роутер, если не поправить ручками" :).

brain-ripper
20-06-2011, 06:29
может надежней сделать контроль размера файла?

сделай ротацию логов: по cron'у проверять размер лога, если больше N, копировать его в какой-нибудь syslog.old, а текущий обнулять: echo "" > syslog.log

Virtuals
20-06-2011, 08:59
(opt не предлагать, роутеры будут работать по большей части без дисков.)!!!

разве крон и logrotate в прошивке?.

brain-ripper
20-06-2011, 09:01
разве крон и logrotate в прошивке?.

В прошивке Олега cron есть, а logrotate в приведенном мной сценарии не нужен. Если у тебя в прошивке cron'а нет, то, думаю, не проблема установить. Ну или подумать, чтоб проверять по какому-нибудь другому событию, которые происходят у тебя в прошивке :)

Virtuals
20-06-2011, 09:53
В прошивке Олега cron есть, а logrotate в приведенном мной сценарии не нужен. Если у тебя в прошивке cron'а нет, то, думаю, не проблема установить. Ну или подумать, чтоб проверять по какому-нибудь другому событию, которые происходят у тебя в прошивке :)

дык уже подумал :)

пока вижу решение только в post-firewall добавить скрипт что будет обрезать лог до нужного размера
да и проверил., в принципе и событие активирующее post-firewall скрипт родственно с ростом лога PPP.


но это я и ручками, имхо стоило-б это "изкоробки" реализовать в прошивке.

Eagle123
03-09-2011, 10:33
А как заставить роутер писать логи "Status & Log - System Log" на флешку?

Thinkpad_fan
03-09-2011, 19:40
Кто-нибудь пробовал собрать logcheck? В optware его нету :(

Edit: Извиняюсь за глупый вопрос, там ведь походу одни скрипты и cronjob'ы. :rolleyes: Попробую поднять.

George-III
12-09-2011, 14:02
Ваша прошивка (от энтузиастов), подскажите как не потерять логи при перегрузке router RT-N16. Дел в том, то периодически перестает работать (все и LAN и WAN) хотелось бы узнать из-за чего это происходит, но единственный способ привести роутер в чувства - выдернуть питание. Естественно все логи накрываются... Подскажите, можно ли сейвить логи например на флешку (включить FTP), если подцепить её к USB

Для себя проблему храннения логов решил следующим способом:
1. Являюсь владельцем NAS от фирмы Synology
2. Установил из официально доступных пакетов Syslog Server;
3. Настроил на прием сообщения по UPD
4. На маршрутизаторе указал ip NAS;

Все работает, очень удобно и наглядно!

KEKC
22-03-2012, 10:50
Доброго дня!
Подскажите плиз, как можно посмотреть полный лог при загрузке роутера (рошивка от энтузиастов), чтоб увидел в какой скрипт загружается и в какой последовательности, плюс что и куда грузит cron.

canek
30-05-2012, 17:56
как очистить System Log на девайсе??
спс.

pilers
30-05-2012, 19:23
как очистить System Log на девайсе??


Кнопка "Clear" (левая на картинке)
9038

MercuryV
19-07-2012, 10:59
Товарищи, кто-нибудь пользовался nxlog (http://nxlog-ce.sourceforge.net/about) в "боевых" условиях?
По описанию - заманчивая штука. Действительно ли nxlog так хорош и пригоден к использованию на разных платформах?

Slav_on
02-10-2012, 00:57
Поставил RT-N-1.9.2.7-rtn-r4645, накатывал поверх 4330, так и не могу понять если с системном логе нажать на кнопку "Clear" то лог больше не отображается в выбморде пока не перегрузишь роутер, это баг такой или фича?

jumuro
02-10-2012, 02:27
Поставил RT-N-1.9.2.7-rtn-r4645, накатывал поверх 4330, так и не могу понять если с системном логе нажать на кнопку "Clear" то лог больше не отображается в выбморде пока не перегрузишь роутер, это баг такой или фича?
При наличии новых событий в логе всё отображается нормально.

Slav_on
02-10-2012, 14:38
При наличии новых событий в логе всё отображается нормально.
У меня ничего не отображается в логах (пока не перегрузить) после нажатия кнопки "Clear", уже специально PPPoE соединение с провайдером разрывал и новое оборудование подключал к роутеру т.е. сделал все чтоб увидеть активность в логах. Эффекта НОЛЬ... девственно чистый экран в разделе "Status & Log - System Log" :(. Конечно не напрягает, но как-то странно, получается что нажатие на "Clear" провоцирует отключение логирования событии роутера.

МИНЗДРАВ
14-11-2012, 18:32
Здравствуйте!
Подскажите пожалуйста в чём может быть проблема, старый лог затирает, а новый не пишет. Вот содержимое post-boot


#!/bin/sh
/bin/mount -o bind,sync,noatime,rw /tmp/mnt/disca_1/opt /opt
swapon /dev/sda7
/opt/bin/transmission-daemon -g /tmp/mnt/disca_2/torrent/.config -a *.*.*.* -w /tmp/mnt/disca_2/torrent -p 9091 -t -u artem -v 1029384756

#log_permanent
if[-n"'pidof syslogd'"]; then
killall syslogd 2>/dev/null
fi
/sbin/syslogd -m 0 -o /tmp/mnt/disca_1/opt/var/log/syslog.log -S -l7 -s 0
А вот точки монтирования дисков:

[admin@WL-500gP_V2 root]$ mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devfs on /dev type tmpfs (rw,noatime)
devpts on /dev/pts type devpts (rw)
tmpfs on /tmp type tmpfs (rw,noatime)
usbfs on /proc/bus/usb type usbfs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/discs/disca/part6 on /tmp/mnt/disca_6 type ext3 (rw,noatime,data=ordered)
/dev/discs/disca/part5 on /tmp/mnt/disca_5 type ext3 (rw,noatime,data=ordered)
/dev/discs/disca/part3 on /tmp/mnt/disca_3 type ext3 (rw,noatime,data=ordered)
/dev/discs/disca/part2 on /tmp/mnt/disca_2 type ext3 (rw,noatime,data=ordered)
/dev/discs/disca/part1 on /tmp/mnt/disca_1 type ext3 (rw,noatime,data=ordered)
/dev/discs/disca/part1 on /opt type ext3 (rw,noatime,data=ordered)
[admin@WL-500gP_V2 root]$Чё я сделал не так?

leniviy
01-01-2013, 16:32
Как сделать, чтобы wl500g с прошивкой Олега мог принимать чужие логи?
Это нужно, чтобы сохранить логи с модема D-link: в его кольцевом буфере умещается всего 40 строк, но у него есть опция remote log server

Balada
17-04-2013, 11:10
Собственно сабж
Проверил папки:
/var/log
/var/tmp
/tmp/var/log
все пусто...

через веб морду - тоже чисто.

роутер работает уже месяц ни единой записи - в чем может быть причина?
может в какую другую папку ведется запись?

Taiser
17-04-2013, 14:36
Щас придут шаманы - ответят по пунктам :))

Balada
04-08-2013, 08:46
Ребят, такая ситуация с syslogs
стоит syslog-ng
все логи складываются в папку /opt/var/logs/syslogs-ng.log - все ок.
для совместимости в папке /usr/tmp стоит симлинк @syslog.log на путь /opt/var/logs/syslogs-ng.log - тоже ок
из веб морды он отображается
теперь если нажать на веб морде кнопку "CLEAR", симлинк уничтожается - соответственно нечего не видно!!
как можно пофиксить?

ff0255
11-01-2014, 23:11
Вот еще вариант перекидывания лога на флешку (пригодится по крайней мере мне, когда флешка гикнется))
Идея: просто перекинуть лог на флешку для сохранения после перезагрузок.
Использую syslogd, т.к. изучать syslog-ng нету ни времени, ни желания.
И еще увеличил кол-во сохраненных логов до 99
WL500gp@1.9.2.7-rtn-r5066
Флеха уже смонтирована на /opt
Делаю /opt/bin/syslogmove.sh
(правильно ли класть скрипты в bin - не уверен, у кого-то скопил)

cat /opt/bin/syslogmove.sh
#!/bin/sh
if [ -d /opt/var/log ]; then
if [ -f /tmp/syslog.log ]; then
if [ -n "`pidof syslogd`" ]; then
logger -t syslogmove.sh "killing syslogd..."
killall syslogd 2>/dev/null
cat /tmp/syslog.log >> /opt/var/log/syslog.log
rm /tmp/syslog.log
ln -s /opt/var/log/syslog.log /tmp/syslog.log
syslogd -m 0 -O /opt/var/log/syslog.log -S -D -l 7 -b 99
logger -t syslogmove.sh "syslogd started log to /opt/var/log/syslog.log"
fi
else
logger -t syslogmove.sh "/tmp/syslog.log is not a file, not running script"
fi
else
logger -t syslogmove.sh "no /opt/var/log, resume log to /tmp/syslog.log"
fi

cat /usr/local/sbin/post-mount
#!/bin/sh
/opt/bin/syslogmove.sh


flashfs save && flashfs commit && flashfs enable

UPD 20140824
Прошил новую версию 1.9.2.7-rtn-r5450, теперь не работает данный скрипт.
Пробовал ручками вбивать:

[___@wl500gp root]$ killall syslogd
Segmentation fault
Connection to my.router closed.
syslogd не убивается.
Пока не понял как чинить.(

UPD 20141004
Ступил, при прошивке не обновил модуль ext2.ko (флешка у меня в ext2, чтобы дольше жила) - думал если версии ядра одинаковые, значит не надо, оказалось надо.)
Теперь все работает.

gaugino
11-08-2016, 23:35
Уважаемые форумчане!

Заранее прошу прощения за возможно наивные вопросы - с Linux практически не имел дела. Двухдневное гугление не помогло решить проблему (хотя вполне возможно, что плохо или не то искал)...

В течение последних нескольких лет пользуюсь роутером Asus WL-500gPv2 с оригинальной прошивкой от Олега (1.9.2.7-10). В последнее время, из-за проблем с провайдером, появилась необходимость в подробных логах работы роутера. Заметил, что в System Log прошивки от Олега не отмечаются события извлечения кабеля из WAN порта (или просто физического разрыва соединения).
Попробовал более современные прошивки - релизную от энтузиастов (1.9.2.7-rtn-r5450) и релизную от Vampik (3.0.6-r5066M). В этих прошивках факт извлечения кабеля из WAN порта в System Log отмечается, но при этом отсутствует информация от dhcp клиента о продлении аренды IP адреса и времени аренды.
Собственно говоря, первый вопрос следующий: можно ли настроить в прошивках от энтузиастов лог таким образом, чтобы в него попадала информация о работе dhcp клиента (продление аренды, время аренды и т.п.)?

Ну и второй вопрос, более общий - почему при извлечении кабеля из WAN порта во всех трех прошивках статус соединения не изменяется на Disconnected, а остается Connected, даже если в логе появляется запись об извлечении кабеля из WAN порта (в прошивках 1.9.2.7-rtn-r5450 и 3.0.6-r5066M)?

Заранее большое спасибо за помощь!