Перейти к содержимому


Фото
- - - - -

Непонятки с логированием


  • Please log in to reply
12 ответов в этой теме

#1 Medlar

Medlar

    Member

  • Posters
  • 146 Сообщений:

Отправлено 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 Anton Ivanov

Anton Ivanov

    Advanced Member

  • Posters
  • 842 Сообщений:

Отправлено 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 Medlar

Medlar

    Member

  • Posters
  • 146 Сообщений:

Отправлено 11 Март 2010 - 18:57

> 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
-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 Anton Ivanov

Anton Ivanov

    Advanced Member

  • Posters
  • 842 Сообщений:

Отправлено 11 Март 2010 - 21:02

2. не понятно. можно попробовать снять
strace -f -s 256
с update.pl и посмотреть что ему не нравится.

3. несомненно переживет.

4. не понятно. можно опять же попробовать снять
strace -f -s 256
с drweb-agent и посмотреть что ему не нравится.

#5 Ivan Kuznetsov

Ivan Kuznetsov

    Member

  • Posters
  • 346 Сообщений:

Отправлено 12 Март 2010 - 10:49

[quote name='Medlar' date='11/03/2010 19:57' post='390641']
> 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 atomic

atomic

    Newbie

  • Posters
  • 36 Сообщений:

Отправлено 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 Anton Ivanov

Anton Ivanov

    Advanced Member

  • Posters
  • 842 Сообщений:

Отправлено 12 Март 2010 - 18:02

наверное не хватает прав на создания файла в /var/log/drweb/maild.log
попробуйте, как было написано выше, комбинацию touch/chown

#8 Medlar

Medlar

    Member

  • Posters
  • 146 Сообщений:

Отправлено 12 Март 2010 - 18:32

> 2. не понятно. можно попробовать снять strace -f -s 256

Спасибо за идею с 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 Medlar

Medlar

    Member

  • Posters
  • 146 Сообщений:

Отправлено 12 Март 2010 - 18:48

>Но я бы логи все-таки в отдельный каталог складывал - дабы не устраивать в /var/log кучу-малу

Я за логами очень слежу и в буквальном и в переносном смысле:
постоянно скрпиптами по крону "шерстю" на наличие нестандартных записей и скурпулезно раскидываю информацию, относящуюся
к разным процессам и событиям по соответств. файлам для удобства чтения и восприятия.
И для меня важно и удобно, чтобы все было в одной дир-ии /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 atomic

atomic

    Newbie

  • Posters
  • 36 Сообщений:

Отправлено 15 Март 2010 - 11:21

Medlar, спасибо за наводку! все получилось

#11 Anton Ivanov

Anton Ivanov

    Advanced Member

  • Posters
  • 842 Сообщений:

Отправлено 15 Март 2010 - 12:04

Medlar, спасибо за проделанную работу!
Если коротко резюмировать: updater и агент не могли вести лог в /var/log так как при попытке создания файла с логомони работали не от пользователя root (в данном случае от drweb). То же самое касается и остальных компонент запускаемых из под монитора (если для них в mmc не прописано работать от root).

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

#12 atomic

atomic

    Newbie

  • Posters
  • 36 Сообщений:

Отправлено 23 Март 2010 - 18:37

Антон, добрый день. в продолжении темы логирования вопрос:
Осуществляется ли средствами настроек в конфигурационных файлах ротация логов при условии что логи пишутся в заданном пользователем пути? В мануале что-то не смог найти...
Например, если рассматривать логи mailD.

В секции [Logging]:
FileName = /var/log/drweb/maild.log

#13 Anton Ivanov

Anton Ivanov

    Advanced Member

  • Posters
  • 842 Сообщений:

Отправлено 24 Март 2010 - 11:58

нет, так как вывод в лог по-умолчанию не ведется для MailD. Данного функционала можно легко добиться с помощью logrotate, например.


Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых