ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: 'Logoved' project
@ 2018-08-26 12:19 Igor Vlasenko
  2018-08-26 13:14 ` Grigory Ustinov
  2019-06-25  6:54 ` Michael Shigorin
  0 siblings, 2 replies; 6+ messages in thread
From: Igor Vlasenko @ 2018-08-26 12:19 UTC (permalink / raw)
  To: devel

Уважаемые господа!

Хочу представить вашему вниманию свою новую разработку -
систему "Логовед" для автоматизации починки пакетов,
разбора логов сборки и QA. Я буду докладывать
по этой разработке на конференции в Калуге.

Более ранний специализированный прототип системы "Логовед"
уже почти 5 лет используется совместно с системой автоматизации
сборки библиотек perl "cpanbuilder" и, частично, с инструментами
поддержки библиотек perl в Сизифе "watchscripts/perl".
На ее хрупких плечах поддержка более 26 тысяч пакетов perl-* 
в репозитории autoimports.

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


== Зачем Логовед нужен и как им пользоваться. ==


Укажу только часть наиболее важных применений.

Разбор FTBS логов и генерация отчета со статистикой.

Пример проблемы. В 2018 году в ALTLinux beehive логи
неудавшейся пересборки (FTBS: Fails To Build From Source)
репозитория Sisyphus стабильно составляют порядка 500 пакетов.
Только чтобы ознакомиться со всеми этими логами, понадобится
как минимум 3-4 часа (500 на 20-30 сек на 1 файл).

Логовед позволяет выявить известные базе Logoved DB
причины несборки пакета, а Отчеты Логовед - оформить их.

Отчет группирования логов создает каталог отчета с деревом
подкаталогов, содержащих внутри линки на исходные лог файлы
(которые, таким образом, остаются на месте нетронутыми)
с ошибкой одного типа и вида и файл статистики.

Пример результата работы отчета группирования логов:
 ОТЧЕТ/
  apt/
   E-not-found/
    foo-1.2-alt1
    ...
    (42 лог файла, E: Невозможно найти пакет;
    top: python2dist(setuptools) 8шт, pkgconfig(physfs) 4 шт, ...)
   E-conflict/
    (7 лог файлов, conflicts between attempted installs;
    top: file /usr/bin/dbmmanage conflicts between attempted installs of apache-common-1.3.42rusPL30.24-alt9.1.i586 and apache2-base-1:2.4.33-alt1.S1.i586 [11 files in conflict] 5 шт, ...)
  brp-alt/
   verify-elf-error/
    bar-3.13-alt3,2
    ...   
    (23 лог файла, verify-elf: ERROR:
 ...
 ...
 ...
  Неопознанные/
    baz-10.2013-alt2
    ...

Отчет txt содержит в основном статистику, как в примере выше,
отчет html может пригодиться, например, для webery.

Применительно к Логовед на вопрос, "В чем сила, брат?"
ответ - сила в отчете группирования логов.

Во первых, не нужно тратить время на просмотр логов;

Во вторых, можно выбирать ошибки, к которым есть настроение,
не нужно лишний раз напрягать и переключать мозг:
можно сразу взять пакеты с однотипной ошибкой и получится конвеер -
10 однотипных ошибок чинятся быстрее, чем 3 разноплановых.

В третьих, в обработчиках ошибок.
Если ошибки слишком уж шаблонные и однотипные, для них можно
(и нужно!) написать обработчик - скрипт починки.
В таких случаях отчет Логовед сгенерирует в отдельном дереве
исправленные пакеты (в виде srpm для srpm-заливаемых пакетов
и в виде gear репозиториев для git-заливаемых).
В зависимости от настроек, он это сделает 
либо дополнительно к отчету, либо удалит из отчета ошибки,
которые были исправлены автоматически, и оставит в отчете
только пакеты, которые требуют ручной правки.

В случае с FTBS логами beehive для основного
репозитория Sisyphus автоисправление сборки выглядит 
cool feature, но не killer feature, 
так как простые исправления в пакетах
обычно вносятся достаточно быстро, а в FTBS 
накапливаются запущенные случаи.

Но в случае репозитория Sisyphus/autoimports
автоисправление сборки это действительно killer feature.
Автогенерированные и автоимпортированные пакеты имеют
тенденцию к появлению легко исправляемых систематических
ошибок из-за ограничений в коде генерации или импорта,
а логовед позволяет "вытянуть" их сборку.
Получается "замкнутый цикл" как в атомной энергетике -
исправленные Логоведом пакеты можно повторно отправлять
на сборку.

К примеру, во время обновления репозитория Sisyphus/cpanbuilder
от 25.08.2018 пакеты обновлений проходили с помощью специализированного
прототипа системы "Логовед" через автоматический цикл
"сборка - починка с помощью "Логовед" - сборка" 4 раза.
Каждый раз logoved допиливал до успешной сборки
все новые пакеты perl "паровым напильником",
цикл прекратился только тогда, когда больше новых пакетов
собрать не удалось.

К сожалению, этот прототип был встроен в скрипты сопровождения
Sisyphus/cpanbuilder. Новый "Логовед" после наполнения базы
будет способен работать самостоятельно, как с autoimports,
так и с beehive Sisyphus FTBS.

== Как устроен Логовед. ==

Сердцем системы "Логовед" является "Logoved DB", база знаний
сообщений об ошибках и предупреждений и библиотека для работы с ней.
Сообщения об ошибках и предупреждения в простейшем случае
хранятся как регулярное выражение, но может быть и набор
регулярных выражений, и подпрограмма, и внешний скрипт-фильтр.
В базе хранятся не только различные сообщения об ошибках
но и во многих случаях действия, которые нужно предпринять
для исправления ошибки (к примеру, для редактирования srpm пакета --
ссылка на скрипт для библиотеки RPM::Source::Editor).
Поэтому "Logoved DB" и называется базой знаний.

"Logoved DB" может быть использован и напрямую, например,
в системе тестирования приложений путем их установки и запуска в
виртуальной машине, для распознавания их сообщений в консоли.

Однако наиболее важно применение этой системы
для обработки логов сборки пакетов (и пересборки в beehive),
как удачных (для поиска предупреждений и мелких ошибок)
так и неудачных логов, для помощи в починке пакетов.
Отсюда и название системы, Логовед.

Для обработки логов сборки/пересборки пакетов
для корректного применения к ним данных из "Logoved DB"
мало найти соответствующее сообщение, необходимо знать его контекст.
В процессе сборки в зависимости от этапа сборки одно и то же
сообщение может быть признаком build error, warning, или
же вообще должно быть проигнорировано как, к примеру, сообщение
"Package gtk+-2.0 was not found in the pkg-config search path"
на этапе выяснения BuildRequires пакета в hasher для подготовки chroot.

Для уточнения контекста сообщения "Logoved DB" нужен
посредник, парсер логов hasher. Для "Logoved DB" таким
парсером выступает подсистема "Logoved-Stream"
(Доступна в виде отдельной независимой библиотеки).
"Logoved-Stream" позволяет разбить лог сборки
на отдельные секции, а также определять, успешно
ли завершилась конкретная секция.
Например, в логе пересборки в beehive для opengoo-1.5.2-alt2.3
подсистема "Logoved-Stream" выделила секции

 hasher::chroot::users
 hasher::chroot::install
 beehive::chroot::srpm::repack
 hasher::chroot::srpm
 rpmbuild::prep
 rpmbuild::build
 rpmbuild::install
 rpmbuild::install::brp
 rpmbuild::files::processing::opengoo-1.5.2-alt2.3
 rpmbuild::files::find_requires::opengoo-1.5.2-alt2.3
 rpmbuild::files::requires::opengoo-1.5.2-alt2.3
 rpmbuild::files::listed_twice::opengoo-1.5.2-alt2.3
 rpmbuild::write
 hasher::time
 beehive::time

"Logoved-Stream" позволяет применять записи "Logoved DB"
об ошибках и предупреждениях
только к тем секциям лог файла, для которых это имеет смысл.
(контекст сообщения об ошибке хранится в "Logoved DB",
а в интерфейсе "Logoved-Stream" <=> "Logoved DB"
указано, какому контексту какие наборы секций соответствуют).
Также в зависимости от контекста одному и тому же сообщению
могут быть назначены разные обработчики.

На этом пока закончу с описанием того, как устроен Логовед.

О других применениях Логовед, например, Логовед для repocop,
напишу позднее.


-- 

I V


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] I: 'Logoved' project
  2018-08-26 12:19 [devel] I: 'Logoved' project Igor Vlasenko
@ 2018-08-26 13:14 ` Grigory Ustinov
  2018-08-26 14:14   ` Igor Vlasenko
  2019-06-25  6:54 ` Michael Shigorin
  1 sibling, 1 reply; 6+ messages in thread
From: Grigory Ustinov @ 2018-08-26 13:14 UTC (permalink / raw)
  To: devel

2 вопроса:

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

Будет ли возможность учить логоведа новым типам ошибок?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] I: 'Logoved' project
  2018-08-26 13:14 ` Grigory Ustinov
@ 2018-08-26 14:14   ` Igor Vlasenko
  2018-08-26 14:17     ` Grigory Ustinov
  0 siblings, 1 reply; 6+ messages in thread
From: Igor Vlasenko @ 2018-08-26 14:14 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sun, Aug 26, 2018 at 04:14:26PM +0300, Grigory Ustinov wrote:
> 2 вопроса:
> 
> Могу ли я как-то воспользоваться этой замечательной штуковиной уже сейчас,
> чтобы проанализировав логи начать пересобирать сломанные пакеты для самых
> простых случаев?

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

Планирую сделать официальный релиз к конференции.
 
> Будет ли возможность учить логоведа новым типам ошибок?
Да, конечно. Но опять же до релиза формат
записей в базе может меняться.

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

-- 

I V


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] I: 'Logoved' project
  2018-08-26 14:14   ` Igor Vlasenko
@ 2018-08-26 14:17     ` Grigory Ustinov
  2018-08-26 14:50       ` Igor Vlasenko
  0 siblings, 1 reply; 6+ messages in thread
From: Grigory Ustinov @ 2018-08-26 14:17 UTC (permalink / raw)
  To: devel

On 26.08.2018 17:14, Igor Vlasenko wrote:
> Сейчас нет, пока сам гоняю и правлю.
> кодовая база еще неполная и нестабильная,
> и база ошибок еще недостаточно наполнена.

Можно ли получить текущую версию и присоединиться к тестированию?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] I: 'Logoved' project
  2018-08-26 14:17     ` Grigory Ustinov
@ 2018-08-26 14:50       ` Igor Vlasenko
  0 siblings, 0 replies; 6+ messages in thread
From: Igor Vlasenko @ 2018-08-26 14:50 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sun, Aug 26, 2018 at 05:17:16PM +0300, Grigory Ustinov wrote:
> On 26.08.2018 17:14, Igor Vlasenko wrote:
> > Сейчас нет, пока сам гоняю и правлю.
> > кодовая база еще неполная и нестабильная,
> > и база ошибок еще недостаточно наполнена.
> 
> Можно ли получить текущую версию и присоединиться к тестированию?

Текущая сломана, ее нужно переделать под новый Logoved-Stream.

Я планировал сделать релиз Logoved-Stream,
затем Logoved плагин для repocop для success логов beehive,
затем собственно Logoved.

Тогда 

1) попробую стабилизировать наконец Logoved-Stream
и сделаю в близжайшие пару дней официальный релиз 
Logoved-Stream в Сизиф, 

2) "Logoved плагин for repocop" отложу пока в сторону

3) постараюсь выдать нормально работающий с Logoved-Stream
прототип логовед за пару недель до конференции.

-- 

I V


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] I: 'Logoved' project
  2018-08-26 12:19 [devel] I: 'Logoved' project Igor Vlasenko
  2018-08-26 13:14 ` Grigory Ustinov
@ 2019-06-25  6:54 ` Michael Shigorin
  1 sibling, 0 replies; 6+ messages in thread
From: Michael Shigorin @ 2019-06-25  6:54 UTC (permalink / raw)
  To: Igor Vlasenko; +Cc: devel

On Sun, Aug 26, 2018 at 03:19:20PM +0300, Igor Vlasenko wrote:
> Хочу представить вашему вниманию свою новую разработку -
> систему "Логовед" для автоматизации починки пакетов,
> разбора логов сборки и QA. Я буду докладывать
> по этой разработке на конференции в Калуге.

Создал страничку http://altlinux.org/Логовед,
а то это письмо у меня так и осталось бегло
прочитанным (и в архиве -- "непрочитанным").
Заодно наконец-то прочёл внимательно :-)

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-06-25  6:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-26 12:19 [devel] I: 'Logoved' project Igor Vlasenko
2018-08-26 13:14 ` Grigory Ustinov
2018-08-26 14:14   ` Igor Vlasenko
2018-08-26 14:17     ` Grigory Ustinov
2018-08-26 14:50       ` Igor Vlasenko
2019-06-25  6:54 ` Michael Shigorin

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