Непонятки с логированием
#1
Отправлено 11 Март 2010 - 17:31
1. Вы отказались от ведения логов в /var/drweb/log, тогда зачем в /etc/logrotate.d/ при установке DrWeb создаются drweb* файлы, отвечающие за ротирование пустых бесполезных логов? В чем тут хитрость?
2. Если в drweb32.ini в секции [Updater] указать LogFileName = /var/log/drweb_updater.log,
то в этот лог ничего не пишется, а приходит след. сообщение по почте
Thu Mar 11 19:00:01 2010 {W} [7449] Dr.Web ® Updater (Revision: $Id$) started ...
Thu Mar 11 19:00:01 2010 {E} [7449] Dr.Web ® Updater (Revision: $Id$) error: cannot open logfile
/var/log/drweb_updater.log for appending - Permission denied
ERROR: Dr.Web ® Updater: Dr.Web ® Updater (Revision: $Id$) error: cannot open logfile /var/log/drweb_updater.log for
appending - Permission denied !
3. Как подобраться к скрипту, который который использует /etc/cron.d/drweb-update?
Так исторически сложилось, что update.pl я обкладываю некоторыми командами для удобства чтения отчета и добавляю вывод (в том числе и ошибок) в спец.файл, как теперь это можно проделать?
Мой собственный drweb-update по крону срабатывает так, как мне нужно. А как теперь отказаться от исполнения вашего
/etc/cron.d/drweb-update, ведь он не прописан в /etc/crontab?
4. Если в agent.conf & monitor.conf отказаться от syslog, предпочтя прямое логирование в соотв. файлы, то при рестарте не создаются в /var/drweb/ipc/ вообще никакие файлы, в том числе и drweb-milter.sock, соответственно sendmail не может работать в связке с DrWeb:
mail sendmail[13621]: o2BEbf1e013621: Milter (drweb-filter): local socket name /var/drweb/ipc/drweb-milter.sock unsafe
Уточнение. Monitor.conf допускает прямое логирование в файл, а вот agent.conf - ни в какую, при рестарте пишет
Mar 11 19:52:20 mail drweb-monitor.real: [3075876560] monitor INFO permissions was changed to "drweb:drweb"
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor ERROR component "drweb-agent" terminated by signal 9
(Killed)
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor ERROR cannot start component "drweb-agent" from application
"AGENT": component "drweb-agent" not answer
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor ERROR application "AGENT" cannot start
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor ERROR application "MAILD" cannot start, because of depends
application "AGENT" not started
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor INFO application "AGENT" has been stoped
#2
Отправлено 11 Март 2010 - 17:59
1. Вы отказались от ведения логов в /var/drweb/log, тогда зачем в /etc/logrotate.d/ при установке DrWeb создаются drweb* файлы, отвечающие за ротирование пустых бесполезных логов? В чем тут хитрость?
отказались от ведения логов в /var/drweb/log _по-умолчанию_. файлы остались для обратной совместимости со старыми настройками, так как возможность вести логи в файл все еще осталась.
2. скорее всего у пользователя drweb нет прав создать файлы в /var/log/. лучше LogFileName = /var/drweb/log/drweb_updater.log
3. хм - может подправить /etc/cron.d/drweb-update руками и вызывать нужную команду?
4. тут видимо имеется ввиду старый фильтр версии 4.44? не очень понятна связь логов и создания сокета.
#3
Отправлено 11 Март 2010 - 18:57
но другие-то лог-файлы (drweb_daemon.log & drweb_scaner.log), заказанные мною в drweb32.ini и monitor.conf, создаются в /var/log:
ls -la /var/log/drweb_*
-rw------- 1 drweb drweb 81494 Mar 11 20:44 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 4874 Mar 11 19:55 drweb_monitor.log
-rw------- 1 root root 2888390 Mar 11 18:17 drweb_scanner.log
>3. хм - может подправить /etc/cron.d/drweb-update руками и вызывать нужную команду?
Мне не хочется заводить еще и скрипт-обертку для update.pl и вызывать его из вашего drweb-update. Зачем лишние сложности.
Наверное, если просто удалить cron.d, drweb это как-то переживет ...
>4. тут видимо имеется ввиду старый фильтр версии 4.44?
DrWeb установлен из пакета drweb-mail-servers-av-as_5.0.1.3-1002031750_linux
> не очень понятна связь логов и создания сокета.
Мне тоже она совершенно не понятна. Тем не менее это так.
Обнаружилось это вчера. Сегодня эксперименты продолжились - ни в какую.
Mar 11 19:54:00 mail drweb-monitor.real: [3075876560] monitor ERROR application "AGENT" cannot start - и все тут.
Стоит вернуть syslog - все ok.
#4
Отправлено 11 Март 2010 - 21:02
strace -f -s 256
с update.pl и посмотреть что ему не нравится.
3. несомненно переживет.
4. не понятно. можно опять же попробовать снять
strace -f -s 256
с drweb-agent и посмотреть что ему не нравится.
#5
Отправлено 12 Март 2010 - 10:49
> 2. скорее всего у пользователя drweb нет прав создать файлы в /var/log/. лучше LogFileName = /var/drweb/log/drweb_updater.log
но другие-то лог-файлы (drweb_daemon.log & drweb_scaner.log), заказанные мною в drweb32.ini и monitor.conf, создаются в /var/log:
ls -la /var/log/drweb_*
-rw------- 1 drweb drweb 81494 Mar 11 20:44 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 4874 Mar 11 19:55 drweb_monitor.log
Видимо, они там уже были созданы ранее, демон их открывает для добавления, а на это прав хватает.
А /var/log/drweb_updater.log не создается, т.к. его исходно нет и не хватает прав на каталог /var/log (он обычно принадлежит root).
Можно сделать:
touch /var/log/drweb_updater.log
chown drweb:drweb /var/log/drweb_updater.log
Но я бы логи все-таки в отдельный каталог складывал - дабы не устраивать в /var/log кучу-малу
ООО "СОЛВО"
#6
Отправлено 12 Март 2010 - 17:39
в monitor.conf указал путь к логам: /var/log/drweb/monitor.log
права на всю папку: drw-rw-rw
Логи в monitor.log пишутся нормально. Решил и логи из maild_exim.conf туда перенести. В секции [Logging]:
FileName = /var/log/drweb/maild.log
Однако при перезапуске Dr.Web в логах значится:
Fri Mar 12 16:05:12 2010 [0x28401040] monitor INFO permissions was changed to "drweb:drweb"
Fri Mar 12 16:05:12 2010 [0x28401040] monitor INFO component "drweb-agent" from application "AGENT" has been started
Fri Mar 12 16:05:12 2010 [0x28401040] monitor INFO application "AGENT" has been started
Fri Mar 12 16:05:12 2010 [0x28401040] monitor ERROR cannot start component "drweb-notifier" from application "MAILD": component stoped himself
Fri Mar 12 16:05:12 2010 [0x28401040] monitor ERROR application "MAILD" cannot start
Fri Mar 12 16:05:12 2010 [0x28401040] monitor INFO application "MAILD" has been stoped
Fri Mar 12 16:05:12 2010 [0x28401040] monitor INFO application "AGENT" has been stoped
Видно что почему-то drweb-notifier не хочет стартовать нормально....
Вернул обратно в maild_exim.conf значение на: FileName = syslog
все нормально перезапустилось и работает....
#7
Отправлено 12 Март 2010 - 18:02
попробуйте, как было написано выше, комбинацию touch/chown
#8
Отправлено 12 Март 2010 - 18:32
Спасибо за идею с strace. Добиться положит. результата удалось, но остались непонятки с причиной, по которой drweb может создать в /var/log лог для монитора и демона, а для updater'a и агента - нет. Это, наверное, должно быть вам интересно.
I. Итак, на входе имеем след. данные.
1. Исходные права на /var/log: ls -l /var|grep log
drwxr-xr-x 30 root root 20480 Mar 12 17:29 log
2. Для чистоты эксперимента удаляю все веберовские логи, созданные ранее.
ls -l /var/log/drweb_*
ls: cannot access drweb_*: No such file or directory
3. В конфигах вебера заказываю логирование исключтельно в файлы
drweb32.ini:LogFileName = /var/log/drweb_daemon.log
drweb32.ini:LogFileName = /var/log/drweb_scanner.log
drweb32.ini:LogFileName = /var/log/drweb_updater.log
monitor.conf:FileName = /var/log/drweb_monitor.log
agent.conf:FileName = /var/log/drweb_agent.log
4. /etc/rc.d/init.d/drwebd restart
5. ls -l /var/log/drweb_*
-rw------- 1 drweb drweb 4105 Mar 12 17:29 drweb_daemon.log
Лог демона создан, и владельцем является drweb
6. Запускается кроном сканер
/opt/drweb/drweb -path=/var/spool/mail|egrep "nfected"|egrep -v "nfected.+0/0|virus/virus" >/var/log/inf
7. ls -l /var/log/drweb_*
-rw------- 1 drweb drweb 4573 Mar 12 17:32 drweb_daemon.log
-rw------- 1 root root 3134 Mar 12 17:32 drweb_scanner.log
Ну тут все понятно: крон работает от рута и создаст что угодно и где угодно
8. Далее проверяю update по крону самого вебера - /etc/cron.d/update:
/30 * * * * drweb strace -f -s 256 -e trace=open /opt/drweb/update.pl >/var/drweb/log/strace20 2>&1
egrep /var/log/ /var/drweb/log/strace20
open("/var/log/drweb_updater.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = -1 EACCES (Permission denied)
open("/etc/localtime", O_RDONLY) = 3
Fri Mar 12 17:36:01 2010 {W} [8167] Dr.Web ® Updater (Revision: $Id$) started ...
Fri Mar 12 17:36:01 2010 {E} [8167] Dr.Web ® Updater (Revision: $Id$) error: cannot open logfile
/var/log/drweb_updater.log for appending - Permission denied
ERROR: Dr.Web ® Updater: Dr.Web ® Updater (Revision: $Id$) error: cannot open logfile /var/log/drweb_updater.log for
appending - Permission denied !
9. Естественно, лога нет: ls -l /var/log/drweb_*
-rw------- 1 drweb drweb 10976 Mar 12 17:50 drweb_daemon.log
-rw------- 1 root root 3134 Mar 12 17:32 drweb_scanner.log
10. Теперь разбираюсь, почему лог монитора создается нормально, а указание логирования в файл деятельности агента приводит к невозможности стартовать drweb-monitor
Заменяю в /etc/rc.d/init.d/drweb-monitor строку запуска на
strace -f -s 256 -e trace=open "$BIN" -c "$CONF" >/var/drweb/log/monitor10 2>&1
/etc/rc.d/init.d/drweb-monitor restart
11. Лог монитора появляется и имеет владельцем drweb. Лог агента - нет. И процесс в итоге не запущен.
-rw------- 1 drweb drweb 10976 Mar 12 17:50 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 92 Mar 12 17:52 drweb_monitor.log
-rw------- 1 root root 3134 Mar 12 17:32 drweb_scanner.log
egrep /var/log /var/drweb/log/monitor10
open("/etc/drweb/monitor.conf", O_RDONLY|O_LARGEFILE) = 6
open("/var/log/drweb_monitor.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 7
open("/var/log/drweb_monitor.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
[skip]
Process 2176 attached
Process 2174 suspended
[pid 2176] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 2174 resumed
Process 2176 detached
[pid 2174] open("/var/log/drweb_agent.log", O_RDWR|O_CREAT|O_NOCTTY|O_APPEND|O_LARGEFILE, 0640) = -1 EACCES (Permission
denied)
) = ? <unavailable>
Process 2173 suspended
[pid 2174] +++ killed by SIGKILL +++
Process 2173 resumed
Process 2173 detached
И на этом var/drweb/log/monitor10 заканчивается.
II. Меняем исходные данные.
1. /etc/group: cliff:x:18:root,drweb
2. chown root.cliff /var/log
3. chmod 775 /var/log
4. Проверяем drwxrwxr-x 30 root cliff 20480 Mar 12 17:54 log
5. Текущие логи
ls -l /var/log/drweb_*
-rw------- 1 drweb drweb 10976 Mar 12 17:50 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 659 Mar 12 17:54 drweb_monitor.log
-rw------- 1 root root 3134 Mar 12 17:32 drweb_scanner.log
6. strace -f -s 256 -e trace=open "$BIN" -c "$CONF" >/var/drweb/log/monitor12 2>&1
7. /etc/rc.d/init.d/drweb-monitor restart
8. egrep /var/log /var/drweb/log/monitor12
open("/etc/drweb/monitor.conf", O_RDONLY|O_LARGEFILE) = 6
open("/var/log/drweb_monitor.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 7
open("/var/log/drweb_monitor.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 8
open("/etc/drweb/monitor/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 6
[skip]
Process 4717 attached
[skip]
Process 4718 attached
[skip]
[pid 4718] --- SIGCHLD (Child exited) @ 0 (0) ---
[pid 4718] open("/etc/drweb/agent.conf", O_RDONLY|O_LARGEFILE) = 0
[pid 4718] open("/var/drweb/run/drweb-agent.pid", O_RDWR|O_CREAT, 0662) = 0
[pid 4718] open("/var/log/drweb_agent.log", O_RDWR|O_CREAT|O_NOCTTY|O_APPEND|O_LARGEFILE, 0640) = 3
[pid 4718] open("/var/log/drweb_agent.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 4
Process 4721 attached (waiting for parent)
Process 4721 resumed (parent 4718 ready)
Process 4722 attached (waiting for parent)
Process 4722 resumed (parent 4718 ready)
[skip]
9. ls -l /var/log/drweb_*
-rw-r----- 1 drweb drweb 350 Mar 12 18:00 drweb_agent.log
-rw------- 1 drweb drweb 14903 Mar 12 17:57 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 2270 Mar 12 18:00 drweb_monitor.log
-rw------- 1 root root 3134 Mar 12 17:32 drweb_scanner.log
10. /30 * * * * drweb strace -f -s 256 -e trace=open /opt/drweb/update.pl >/var/drweb/log/strace22 2>&1
11. egrep /var/log /var/drweb/log/strace22
open("/var/log/drweb_updater.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 3
-rw-r----- 1 drweb drweb 504 Mar 12 18:22 drweb_agent.log
-rw------- 1 drweb drweb 20043 Mar 12 18:20 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 2603 Mar 12 18:22 drweb_monitor.log
-rw------- 1 root root 6268 Mar 12 18:12 drweb_scanner.log
-rw-r--r-- 1 drweb drweb 27923 Mar 12 18:15 drweb_updater.log
12. Ну и для чистоты эксперимента снова удаляю все логи и делаю полный рестарт
sendmail+drwed+drweb-monitor:
-rw-r----- 1 drweb drweb 854 Mar 12 18:27 drweb_agent.log
-rw------- 1 drweb drweb 10458 Mar 12 18:38 drweb_daemon.log
-rw-r--r-- 1 drweb drweb 2237 Mar 12 18:27 drweb_monitor.log
-rw------- 1 root root 1021732 Mar 12 18:38 drweb_scanner.log
-rw-r--r-- 1 drweb drweb 23967 Mar 12 18:35 drweb_updater.log
P.S. Cорри за столь объемный отчет, все это документировалось в первую очередь для себя.
#9
Отправлено 12 Март 2010 - 18:48
Я за логами очень слежу и в буквальном и в переносном смысле:
постоянно скрпиптами по крону "шерстю" на наличие нестандартных записей и скурпулезно раскидываю информацию, относящуюся
к разным процессам и событиям по соответств. файлам для удобства чтения и восприятия.
И для меня важно и удобно, чтобы все было в одной дир-ии /var/log. Привычка - вторая натура.
В прежней версии логи велись в /var/drweb - для меня это было очень неудобно.
В связи со срочным "переездом" на новую систему, пришлось устнавливать новую версию DrWeb и перенастраивать на свой лад систему логирования в альтовском Sisyphys ServerSpecialEdition ( то, что там сделано по умолчанию, имхо, - это нечто по бестолковости!)
Пока DrWeb писал все в syslog, его информация записывалась почти в каждый системный лог.
Пришлось сначала выходить из положения привлечением других facilities (local4-6), чтобы отделить логи вебера поштучно от системных логов. Но раз есть возможность писать сразу в файл - почему бы ею не воспользоваться.
Так что кучи-малы у меня в /var/log нетhttp://forum.drweb.com/public/style_emoticons/default/smile.png Все довольно четко и прозрачно.
#10
Отправлено 15 Март 2010 - 11:21
#11
Отправлено 15 Март 2010 - 12:04
Если коротко резюмировать: updater и агент не могли вести лог в /var/log так как при попытке создания файла с логомони работали не от пользователя root (в данном случае от drweb). То же самое касается и остальных компонент запускаемых из под монитора (если для них в mmc не прописано работать от root).
у drwebd получилось, так как он сбросил права после создания файла с логом. у сканера, так как он запускался от root. и у мониотра получилось, так как он изначально запускается от root, а потом при необходимости сбрасывает права.
#12
Отправлено 23 Март 2010 - 18:37
Осуществляется ли средствами настроек в конфигурационных файлах ротация логов при условии что логи пишутся в заданном пользователем пути? В мануале что-то не смог найти...
Например, если рассматривать логи mailD.
В секции [Logging]:
FileName = /var/log/drweb/maild.log
#13
Отправлено 24 Март 2010 - 11:58
Читают тему: 0
0 пользователей, 0 гостей, 0 скрытых