Автор Тема: Обсуждение и предложения по реализации базы данных проб оборудования  (Прочитано 71562 раз)

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Погонял свою подделку на коллекции отчетов, что прислал Руслан, плюс добавил ещё одну пару своих. Результат пока радует (уникальность пробы определяется в 100% случаев), но чтобы говорить наверняка, надо тестовое множество пар проб (пар архивов) довести хотя бы до двух десятков, а в данный момент даже десятка не набирается. Плюс к этому остались неучтенными несколько моментов, но их как раз добавить несложно будет (основные трудности преодолены).
Просто не хотелось бы раньше времени (чтобы потом косяки не подбирать и все хранилище по новой не наполнять) объявлять о возможности посылать пробы любому желающему (через установку пакета и запуска всего одной команды) в автоматическом режиме (бишь сразу на "сервер HCL", в роли которого выступит мой домашний сервер).

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Текущий выхлоп тестового скрипта, на котором обкатываю блоки кода, отвечающие за ту или иную функцию (одновременно это и костяк скрипта report-sender - клиентского приложения для отправки проб на сервер).
a2551626534060663d1b070af940eb7ae44c6648
/home/sb/probes/05.03.2016-21.40.11.tar.bz2

a2551626534060663d1b070af940eb7ae44c6648
/home/sb/probes/05.03.2016-22.31.28.tar.bz2

6c9b1ee650b33f5a46543f87eebc7da5b03d49d5
/home/sb/probes/08.03.2016-15.09.59.tar.bz2

6c9b1ee650b33f5a46543f87eebc7da5b03d49d5
/home/sb/probes/08.03.2016-15.10.31.tar.bz2

f5945253398d73d5d2b7e78660b8b5ebd6a3aad5
/home/sb/probes/08.03.2016-16:22:37.tar.bz2

f5945253398d73d5d2b7e78660b8b5ebd6a3aad5
/home/sb/probes/08.03.2016-16:25:18.tar.bz2

7ec0904c1a95fc4aff88059467da59c205e66290
/home/sb/probes/Alpha.localdomain-07.03.2016-09_17_14.tar.bz2

ea025751ca49fc4de79a1d8ea64a273f18b1a1b3
/home/sb/probes/Alpha.localdomain-07.03.2016-19_14_27.tar.bz2

3aa9de47a629577f979189858a014a14c9ae0967
/home/sb/probes/Avrora.localdomain-07.03.2016-09_08_57.tar.bz2

3aa9de47a629577f979189858a014a14c9ae0967
/home/sb/probes/Avrora.localdomain-07.03.2016-12_39_12.tar.bz2

b101713a29d5bc4f9d34fb106c0eba59f08dfe97
/home/sb/probes/kroha.localdomain-07.03.2016-09_37_51.tar.bz2

b101713a29d5bc4f9d34fb106c0eba59f08dfe97
/home/sb/probes/kroha.localdomain-07.03.2016-19_18_13.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-09_53_27.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-19_37_47.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-19_45_49.tar.bz2

023f82f263db7c86876bfc1b472cc592b5a66fa0
/home/sb/probes/sysreport-20160306.tar.bz2

023f82f263db7c86876bfc1b472cc592b5a66fa0
/home/sb/probes/sysreport-20160308.tar.bz2

0409728d9f1f5c6216c010f66dbba300b28e5891
/home/sb/probes/Vera.localdomain-07.03.2016-15_06_58.tar.bz2

0409728d9f1f5c6216c010f66dbba300b28e5891
/home/sb/probes/Vera.localdomain-07.03.2016-15_13_24.tar.bz2
Здесь видно, что у пары отчетов с компьютера под именем Alpha (что Руслан прислал, за что ему ещё раз огромное спасибо) суммы отличаются. Как я потом выяснил, это как раз тот случай, что помог найти некоторые шероховатости в коде и поправить их. По факту же эти две пробы отличаются тем, что набор оборудования у них различен (если не ошибаюсь, то разница в каком-то мультимедиа контроллере или аудио контроллере).
PS Четыре безымянных отчета это два моих ноутбука (один ноутбук с p5.1 на борту, пока безхозный, решил вот использовать для тестирования, так что p5.1 как минимум будет поддерживаться системой сбора данных об оборудовании, второй ноутбук c p7), а также сервак (десктоп без монитора) и основной десктоп под p7.
Как можно видеть, десятка даже с этими резервами не набирается (пробы идут попарно [хотя ruslandh прислал три файла с одной машины - тоже для проверки пойдет] и только так представляют ценность как одна единица), одной пары архивов не хватает, чтобы десяток был.

Оффлайн kostyalamer

  • Мастер
  • ***
  • Сообщений: 432
    • Сайт клуба активных пользователей ALT Linux
Отправил - бранч t7 , ядро 3.14.58-std-def-alt0.M70P.1
Поглядел выхлопы - хороший отчет о моей системе, молодец Серега   :-)
« Последнее редактирование: 08.03.2016 20:21:08 от kostyalamer »
Archlinux  / Altlinux Free Mate p8

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Отправил - бранч t7 , ядро 3.14.58-std-def-alt0.M70P.1
Поглядел выхлопы - хороший отчет о моей системе, молодец Серега   :-)
Десятым будешь :-)
С твоим отчетом я пока не выкладывал выхлоп. Но твои отчеты помогли найди недоработку в одном из блоков кода. Как поправлю скрипт, прогоню по всем имеющимся 10 машинам и сможешь в списке выхлопа свои архивы найти (по именам - у тебя же должны были в письме остаться файлы прикрепленные) и убедиться, что суммы для обоих одинаковы.

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Поглядел выхлопы - хороший отчет о моей системе, молодец Серега   :-)
Вот, теперь гляди выхлоп с включенной твоей пробой.
a2551626534060663d1b070af940eb7ae44c6648
/home/sb/probes/05.03.2016-21.40.11.tar.bz2

a2551626534060663d1b070af940eb7ae44c6648
/home/sb/probes/05.03.2016-22.31.28.tar.bz2

6c9b1ee650b33f5a46543f87eebc7da5b03d49d5
/home/sb/probes/08.03.2016-15.09.59.tar.bz2

6c9b1ee650b33f5a46543f87eebc7da5b03d49d5
/home/sb/probes/08.03.2016-15.10.31.tar.bz2

f5945253398d73d5d2b7e78660b8b5ebd6a3aad5
/home/sb/probes/08.03.2016-16:22:37.tar.bz2

f5945253398d73d5d2b7e78660b8b5ebd6a3aad5
/home/sb/probes/08.03.2016-16:25:18.tar.bz2

9704c23bc30cb3a3a1a1613122d53876d87f718c
/home/sb/probes/08.03.2016-17_05_19.tar.bz2

9704c23bc30cb3a3a1a1613122d53876d87f718c
/home/sb/probes/08.03.2016-17_08_39.tar.bz2

7ec0904c1a95fc4aff88059467da59c205e66290
/home/sb/probes/Alpha.localdomain-07.03.2016-09_17_14.tar.bz2

ea025751ca49fc4de79a1d8ea64a273f18b1a1b3
/home/sb/probes/Alpha.localdomain-07.03.2016-19_14_27.tar.bz2

3aa9de47a629577f979189858a014a14c9ae0967
/home/sb/probes/Avrora.localdomain-07.03.2016-09_08_57.tar.bz2

3aa9de47a629577f979189858a014a14c9ae0967
/home/sb/probes/Avrora.localdomain-07.03.2016-12_39_12.tar.bz2

b101713a29d5bc4f9d34fb106c0eba59f08dfe97
/home/sb/probes/kroha.localdomain-07.03.2016-09_37_51.tar.bz2

b101713a29d5bc4f9d34fb106c0eba59f08dfe97
/home/sb/probes/kroha.localdomain-07.03.2016-19_18_13.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-09_53_27.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-19_37_47.tar.bz2

4d644c8700db7929eeda79e53f129baf1d97edc2
/home/sb/probes/Rostov.nksp-07.03.2016-19_45_49.tar.bz2

023f82f263db7c86876bfc1b472cc592b5a66fa0
/home/sb/probes/sysreport-20160306.tar.bz2

023f82f263db7c86876bfc1b472cc592b5a66fa0
/home/sb/probes/sysreport-20160308.tar.bz2

0409728d9f1f5c6216c010f66dbba300b28e5891
/home/sb/probes/Vera.localdomain-07.03.2016-15_06_58.tar.bz2

0409728d9f1f5c6216c010f66dbba300b28e5891
/home/sb/probes/Vera.localdomain-07.03.2016-15_13_24.tar.bz2
Долго думал, почему на твоих архивах скрипт спотыкался. Оказалось, что, хоть сами архивы имели расширение .tar.bz2, но по факту имели xz сжатие, отчего скрипт не мог их обработать. Пришлось вручную перепаковать нормально в .tar.bz2. Самое главное - данные, а они на месте (что хэш и показал).

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Если кто ещё не понял, что все это значит (а такие наверняка есть), то спешу сообщить. Страшные комбинации букв и цифр подряд это хэш сумма, которая подтверждает неизменность какой-то совокупности данных (будь-то файла или же просто какой-либо информации, любой фразы, предложения, слова, чего угодно в текстовом виде). Это из той же серии, что и md5 хэш сумма для установочных образов дисков да и вообще любых образов любых дисков и не только в формате iso. В этом примере видно наглядно, что пробы соответствуют одному и тому же набору оборудования (кроме одного, о котором в одном из предыдущих сообщении говорил), ведь скрипт клиента (report-sender) заточен именно на то, чтобы предотвратить повторную отсылку пробы с одинаковым набором оборудования и ПО (в виде ядра и дистрибутива с версией на нем) на сервер, т.к. при этом никакой новой информации для базы в этой пробе нет.

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Промежуточный итог этих 4 дней такой: успешно определяется уникальность пробы на 10 случаях из 10. Осталось учесть программную часть в виде версии ядра, операционной системы и дистрибутива. Но это сделать гораздо проще, чем то, что удалось только к сегодняшнему вечеру победить. Возможно, что я изобрел очередной, никому не нужный велосипед (я про компоненту системы HCL). Но мне что-то подсказывает, что он будет полезен для сообщества, даже если его не примут как "официальный".

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Хм... Только что обнаружил, что хэши, рассчитанные по одной и той же информации (грубо говоря по константе в смысле содержимого) на разных машинах отличаются, причем это касается нескольких алгоритмов хэширования. И это заставляет серьезно задуматься о правильности выбранного решения (как приблизительное оно вполне годится, но как окончательное в свете новых фактов - не уверен), по крайней мере в части поддержания уникальности пробы. Получается, что посчитанный по одной и той же информации хэш на разных машинах будет отличаться. Возможно, что надо указать какие-то стартовые условия или каким-то определенным образом применить алгоритм, чтобы получить неизменный результат на разных физических машинах в различном программном окружении.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Промежуточный итог этих 4 дней такой: успешно определяется уникальность пробы на 10 случаях из 10. Осталось учесть программную часть в виде версии ядра, операционной системы и дистрибутива. Но это сделать гораздо проще, чем то, что удалось только к сегодняшнему вечеру победить. Возможно, что я изобрел очередной, никому не нужный велосипед (я про компоненту системы HCL). Но мне что-то подсказывает, что он будет полезен для сообщества, даже если его не примут как "официальный".
Не останавливайся. Это действительно интересно. Жаль на выходные пришлось и я поучаствовать не смог.
Андрей Черепанов (cas@)

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Похоже по постановке задачи нужно:
https://ru.wikipedia.org/wiki/Алгоритм_шинглов
Не совсем то, но для общего развития полезно.
Только что обнаружил, что хэши, рассчитанные по одной и той же информации (грубо говоря по константе в смысле содержимого) на разных машинах отличаются, причем это касается нескольких алгоритмов хэширования.
Оказывается, это зависит от платформы (я проверял на 5.1 и на p7). Например, дома и на работе у меня p7. Хэш суммы на работе совпали с теми, что я выложил на форум. А вот на машине с 5.1 хэши другие, но соответствие между пробами такое же, как и в этом случае (бишь одинаковость гарантируется). Это говорит о том, что, если хэш генерировать по одному и тому же алгоритму, то результат будет зависеть от машины (а, точнее, программной платформы), на которой будет вестись расчет. Хотелось бы эту операцию делать на клиенте, чтобы не посылать в случае чего лишний раз уже отосланную информацию.
И это заставляет серьезно задуматься о правильности выбранного решения (как приблизительное оно вполне годится, но как окончательное в свете новых фактов - не уверен), по крайней мере в части поддержания уникальности пробы. Получается, что посчитанный по одной и той же информации хэш на разных машинах будет отличаться. Возможно, что надо указать какие-то стартовые условия или каким-то определенным образом применить алгоритм, чтобы получить неизменный результат на разных физических машинах в различном программном окружении.
Надо ещё подумать, может использовать другие функции, которые будут давать один и тот же результат независимо от программной платформы.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Повторить предыдущий пункт через произвольное количество времени после первого запуска скрипта
А зачем ? Чтобы понять, что меняется во времени ?

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Повторить предыдущий пункт через произвольное количество времени после первого запуска скрипта
А зачем ? Чтобы понять, что меняется во времени ?
Обычно разработчикам такие вопросы не задают :) Тем не менее отвечу. Для того, чтобы гарантировать (и вам показать) уникальность пробы в смысле состава оборудования. Что система распознает если вы вдруг повторно попытаетесь отправить данные, которые в базе уже есть. Дополнительно большое количество проб позволит обкатать алгоритм в практически боевых условиях (или приближенных к боевым). Это позволит сократить доработки на ходу вплоть до переработки всей базы и генерации данных хранилища с нуля.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Повторить предыдущий пункт через произвольное количество времени после первого запуска скрипта
А зачем ? Чтобы понять, что меняется во времени ?
Как я понял, что-бы проверить, что компы идентифицируются правильно. Как я понял - в случае с Alpha - какое-то из устройств было отключено аппаратно.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Обычно разработчикам такие вопросы не задают :)
Почему же ? :-)
Тем не менее отвечу. Для того, чтобы гарантировать (и вам показать) уникальность пробы в смысле состава оборудования.
И делается это именно по хэшу ? Тогда тут проблема: состояние sysreport.dmesg не константа. Кроме того, файл может содержать достаточные для идентификации хоста в сети данные, например
[16635875.598291] IN=ether0 OUT=venet0 SRC=x.x.x.x DST=y.y.y.y LEN=52 TOS=0x02 PREC=0x00
TTL=122 ID=9643 DF PROTO=TCP SPT=57096 DPT=22 WINDOW=65535 RES=0x00 CWR ECE SYN URGP=0
Это результат "iptables <...> -j LOG". В принципе, это могло относиться к транзитному пакету, но, всё равно, не очень хорошо, как мне кажется. Кстати, dmesg вообще бесполезен в этом случае, так как там нет ничего другого: стартовая информация давно вытеснена этими сообщениями.

Серийные номера и UUID в sysreport.dmidecode, мне кажется, тоже лишние (UUID там не меняется, если не ошибаюсь).