From: Igor Vlasenko <vlasenko@imath.kiev.ua> To: devel@lists.altlinux.org Subject: [devel] I: утилита logoved-report для обработки логов. 2-Установка и работа Date: Fri, 21 Sep 2018 20:34:21 +0300 Message-ID: <20180921173420.GA29300@dad.imath.kiev.ua> (raw) Установка и работа. 1. Установка. git clone git://git.altlinux.org/people/viy/packages/logoved.git logoved.git для работы нужно установить noarch пакет perl-Logoved-Stream из Сизифа. 2. Работа с утилитой на примере beehive. Переходим в склонированный logoved.git. Копируем себе beehive-logs rsync -avp --delete-after git.altlinux.org::beehive-logs/Sisyphus-x86_64/latest/error . 2.1 Запускаем утилиту. time ./logoved-report -v error/* так как в beehive более 500 логов, запускаем с опцией -v, чтобы не скучать, следя за сообщениями [...] parsing error/zoneminder-1.30.4-alt3.S1 ... parsing error/zrtpcpp-2.3.4-alt2.1 ... ./logoved-report -v error/* 206,93s user 3,37s system 99% cpu 3:32,32 total три минуты, и все 500+ логов разобраны. Замечание. Таким образом мы обрабатываем все логи, которые есть в beehive. Если же есть желание разобрать только свои логи, (пакетов, где leader <ваш логин>) то поможет perl-ALTLinux-ACL >= 0.20 . команда в таком случае будет иметь вид time ./logoved-report `ls error/* | altlinux-acl-filter-list-by-access --nvr --leader --user <ваш логин>` сокращенно time ./logoved-report `ls error/* | altlinux-acl-filter-list-by-access --nvr -l -u <ваш логин>` 2.2 Результат запуска. Итак, после запуска ./logoved-report в текущем каталоге появилась папка LOGS а в ней файл 00FIXSCRIPT и большое количество папок apt-E-broken apt-E-ghost apt-E-package-not-found apt-E-version-not-found brp-alt-028-check_contents brp-alt-032-compres-man-page-broken-reference brp-alt-verify-elf-error build-compile-error build-Werror check-failed conf-automake-version conf-c++ conf-c-compiler conf-cmake-configure-failed conf-configure-error conf-configure-error-C-compiler-cant-create conf-configure-error-fortran-dont-compile conf-gir-vala conf-pkgconfig [...] и т.д. Пройдемся по подпапкам. В каждой папке собраны символические ссылки (опция по умолчанию) на лог файлы с ошибкой одного типа, а также служебные файлы, такие, как 00statistics. К примеру: $ ls apt-E-broken 00statistics gnustep-FortyTwo-0.2.0-alt4 gnustep-BDB-0.2.1-alt4 libctl-3.2.2-alt1_3 skytools-2.1.13-alt1 $ cat apt-E-broken/00statistics E: Broken packages: 2: Package perl-devel has broken dep on libdb4-devel 1: Package guile22-devel has broken dep on guile18-devel 1: Package postgresql9.6-server has broken dep on postgresql9.6 ls apt-E-package-not-found|wc -l 36 $ cat apt-E-package-not-found/00statistics E: Невозможно найти пакет: 5: gnustep-Etoile-DocGenerator 5: gdk-pixbuf-devel 4: python-module-setuptools-tests [...] 1: kdepim-devel и т. д. Разбивка по подпапкам выполняется по правилам, хранящимся в базе Логовед. База хранится рядом с logoved-report, в подпапке db: $ ls -1 db/ apt brp-alt build check [...] $ ls -1 db/apt 00default E-broken.logoved E-conflict.logoved E-ghost.logoved E-package-not-found.logoved E-version-not-found.logoved В базе Логовед хранятся правила Логовед (в файлах с расширением .logoved) и значения по умолчанию в файлах 00default. Каждый файл .logoved содержит правило, по которому можно выделить внутри лог файла некоторое сообщение об ошибке. Чтобы узнать, какие правила logoved сработали на лог файл и на что именно, можно воспользоваться утилитой logoved-grep (в том же git): $ ./logoved-grep LOGS/apt-E-package-not-found/xmds2-2.2.3-alt1 LOGS0/apt-E-package-not-found/xmds2-2.2.3-alt1 matches apt::E-package-not-found[error] in line 405: E: Couldn't find package python-module-cheetah Легко догадаться, что подпапка LOGS/apt-E-broken порождена правилом db/apt/E-broken.logoved, подпапка LOGS/apt-E-package-not-found порождена правилом db/apt/E-package-not-found.logoved, и т. д. Пример правила Логовед. $ cat db/apt/E-package-not-found.logoved # E: Couldn't find package libtau-common PATTERN=^E: Couldn't find package (\S+) PATTERN=^E: Невозможно найти пакет (\S+) STATISTICS=%{GROUP:1} STATISTICS_HEADER=E: Невозможно найти пакет: Кроме подпапок, порожденных правилами, в LOGS/ находятся "служебные" подпапки отчета Логовед, LOGOVED-not-matched LOGOVED-overcome LOGOVED-fixable В папке LOGOVED-not-matched собраны ссылки на "нераспознанные" лог файлы, для которых ни одно правило логовед не сработало. Если увидите в этой папке повторяющиеся ошибки, стоит создать для них новое правило логовед. Если сообщение об ошибке фатальное, то после сообщения об ошибке соответствующий этап сборки должен в итоге аварийно завершиться. Однако это бывает не всегда. В папке LOGOVED-overcome собраны и разложены по соответствующим подпапкам ошибки, которые вроде бы были преодолены на соответствующем этапе сборки, т.е. они встретилсь в секции, к примеру, %build, тем не менее сборка пошла дальше, "преодолела" (overcome) эту ошибку и в итоге упала, к примеру, на %files, как в примере $ ./logoved-grep error/ftimes-3.10.0-alt2 error/ftimes-3.10.0-alt2 matches run::command-not-found::other[success] in line 254: /bin/sh: line 1: pod2html: command not found error/ftimes-3.10.0-alt2 matches ld::DSO-missing[success] in line 698: collect2: error: ld returned 1 exit status error/ftimes-3.10.0-alt2 matches ld::DSO-missing[success] in line 755: collect2: error: ld returned 1 exit status error/ftimes-3.10.0-alt2 matches ld::DSO-missing[success] in line 817: collect2: error: ld returned 1 exit status error/ftimes-3.10.0-alt2 matches perl::cant-locate-in-inc[success] in line 906: Can't locate Digest/SHA1.pm in @INC (you may need to install the Digest::SHA1 module) (@INC contains: /usr/local/lib64/perl/5.26 /usr/local/share/perl/5.26 /usr/lib64/perl5 /usr/share/perl5 /usr/lib64/perl5 /usr/share/perl5 /etc/perl5 /usr/lib/perl5/vendor_perl .) at ../../../../../utils/tree_builder line 158. error/ftimes-3.10.0-alt2 matches rpmbuild-error::file-not-found-by-glob[error] in line 952: File not found by glob: /usr/src/tmp/ftimes-buildroot/usr/bin/* Причины для такого поведения могут быть разные. От кривого Makefile, который не выпустил ошибку наружу, до безвредных сотрясений воздуха. В любом случае, разбираться надо более тщательно, поэтому они выделены внутрь отдельной подпапки LOGOVED-overcome. Подпапка LOGOVED-fixable сейчас дополнительно содержит ссылки на логи, для которых сгенерировано автоисправление. При этом эти же каталоги и ссылки содержатся и обычным порядком в LOGS/. Это, возможно, временное поведение. В зависимости от опций командной строки LOGOVED-fixable либо не будет создаваться вообще (все чиним руками) либо, логи, там упомянутые, будут удаляться из других папок в LOGS/, чтобы разделить логи, которые скормим роботу от логов, которые будем чинить руками. Сгенерированное автоисправление представляет собой файл LOGS/00FIXSCRIPT. wc -l 00FIXSCRIPT 42 Т.е. из 500+ пакетов beehive робот попытался бы починить сборку 42. 00FIXSCRIPT представляет собой таблицу <имя srpm,обязательно><tab><имя srpm,опционально><tab>команда на починку Пример: head 00FIXSCRIPT acct acct-6.6.1-alt1 buildrequires --add makeinfo bacula7 bacula7-7.4.7-alt3.S1 buildrequires --add /proc bacula bacula-5.2.13-alt11 buildrequires --add /proc bacula bacula-5.2.13-alt11 sourcedep --add-devel-lib gssapi_krb5 cairo-dock-plugins cairo-dock-plugins-3.4.1-alt10.S1 buildrequires --add pkgconfig(libdrm) cairo-dock-plugins cairo-dock-plugins-3.4.1-alt10.S1 buildrequires --add python2.7(multiprocessing) chromium chromium-69.0.3497.81-alt1 buildrequires --add python2.7(multiprocessing) clisp clisp-2.48-alt1.qa1 buildrequires --add groff-ps compiz compiz-0.9.13.1-alt1 buildrequires --add pkgconfig(libdrm) emacs-chess emacs-chess-2.0-alt5.b6.qa1 sourcedep --add-path makeinfo emacs-elib emacs-elib-1.0-alt8 sourcedep --add-path makeinfo [...] 00FIXSCRIPT -- это скрипт для утилиты logoved-batchfix, которая пока в разработке. Я не включал ее в этот релиз, так как утилита пока не поддерживает работу с gear репозиториями, но с src.srpm она уже успешно работает, и я ей активно пользуюсь в autoimports/fcimport, autoimports/mgaimport и т. д. Пример запуска: $ cd ../logoved.git $ time ./logoved-report fcimport-aupd/TASK.BAD ./logoved-report fcimport-aupd/TASK.BAD 27,41s user 1,19s system 93% cpu 30,593 total $ cd ../logoved-batchfix.git $ ./logoved-batchfix --batch ../logoved.git/LOGS/00FIXSCRIPT --srpmdir ../fcimport.git/OUT Записан: OUT.FIXED/FlightGear-Atlas-0.5.0-alt1_0.47.cvs20141002.src.rpm Записан: OUT.FIXED/avr-gdb-8.1-alt1_2.src.rpm Записан: OUT.FIXED/boxes-1.1.1-alt1_13.src.rpm [...] Записан: OUT.FIXED/rwall-0.17-alt1_53.src.rpm Записан: OUT.FIXED/sshuttle-0.78.4-alt1_5.src.rpm Записан: OUT.FIXED/steadyflow-0.2.0-alt1_4.src.rpm (36 пакетов) Замечание. По умолчанию в ./logoved-report включен --flat mode. Есть еще nested mode, который включается опцией --nested. flat mode хорош для десктопа и больших экранов. В nested mode ./logoved-report переводит путь в базе Логовед к файлу правил в подкаталоги. ls LOGS/ 00FIXSCRIPT error fixable not-matched overcome LOGS/ error/ apt/ E-package-not-found/ E-ghost/ E-version-not-found/ E-broken/ ... Во flat mode цепочки подкаталогов 2-го уровня распрямляются в один каталог, (заменяем в пути '/' на '-') каталог 1-го уровня error/ убирается, а его содержимое переносится на 1-й уровень, остальные каталоги 1-го уровня получают приставку 'LOGOVED-'. -- I V
next prev reply other threads:[~2018-09-21 17:34 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-21 17:33 [devel] I: утилита logoved-report для обработки логов. 1-введение Igor Vlasenko 2018-09-21 17:52 ` Igor Vlasenko 2018-09-21 17:49 ` [devel] I: утилита logoved-report для обработки логов. 3-Правила Логовед Igor Vlasenko 2018-09-21 17:34 ` Igor Vlasenko [this message] 2018-09-21 18:38 ` Igor Vlasenko 2019-06-25 8:36 ` [devel] I: утилита logoved-report для обработки логов. 1-введение Michael Shigorin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180921173420.GA29300@dad.imath.kiev.ua \ --to=vlasenko@imath.kiev.ua \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git