Семейство LOGparser

LOGparser — это вид LLM-комбайнов, специализирующийся на обработке огромного неструктурированного объёма текстов и систематизации их в структурированный ответ.

Определение может быть сложным, попробую сразу объяснить на примере нашей компании ITCost. Одно из направлений нашего бизнеса — техническая поддержка серверной инфраструктуры крупных корпоративных заказчиков ITC Pro Support. У нас на поддержке более 500 систем хранения данных Dell, HPE, IBM, Huawei. Каждая система на протяжении нескольких лет пишет логи о своём состоянии в отдельные файлы. По итогу за 5–7 лет работы СХД получается от 50 миллионов до 4 миллиардов символов. В листах А4 это от 20 тысяч до 1,6 млн страниц. Такой лог присылает клиент, когда у него на СХД поломка и надо понять, что с ней произошло. Инженеры не любят читать 40 тысяч страниц за раз: они хотят, чтобы это сделал робот; обычным поиском по тексту теряется очень много нужной информации. Производители не отдают интеграторам анализаторы логов, их невозможно получить на руки. У каждого вендора своя модель, формат логов и логика диагностики. Кроме того, у разных СХД одного вендора могут быть разные OEM-корни и форматы логов: например, Dell MD3820, Dell ME4024 и HPE MSA2040 нельзя корректно разбирать одним универсальным правилом. Очень много разных OEM-решений у каждого из вендоров.

Мы написали наш LOGparser на базе локальной LLM deepseek-r1:32b-qwen-distill-fp16. Для его работы нам хватило видеокарты RTX Pro 6000 Blackwell на 96 GB GDDR. Весь анализ логов происходит локально внутри контура компании, и мы соблюдаем требования о неразглашении информации наших клиентов. Клиент присылает архив логов, прямого доступа к СХД у нас нет.

Наши инженеры могут в нашем корпоративном Яндекс Мессенджере отправить логи на проверку в LOGparser и в течение 5–15 минут получить ответ о статусе СХД по всем ключевым параметрам.

Общая логика работы LOGparser

  1. Webhook получает файл архива из Яндекс Мессенджера.
  2. Записывает задачу в общую таблицу учёта обращений HarwesterBots.
  3. ULC (Universal Log Collector) разархивирует все вложенные архивы, ищет все текстовые файлы и собирает весь лог в единый текстовый файл.
  4. Первый запуск LLM (далее LLM1) отвечает на вопросы Class, Vendor и Model. Для этого из общего файла размером от 20 млн до 4 млрд символов технологией chunk вырезаем данные о СХД, которые позволяют при запуске LLM1 ответить на вопросы: Class? Vendor? Model? Мы используем LLM DeepSeek-R1 32B FP16 и 64K context/KV-cache, что позволяет за один запуск обработать до 200 000 символов текста логов. По результатам работы LLM1 мы точно определяем модель СХД в архиве пользователя. В тестовых примерах мы сами переименовали файлы, чтобы понимать, какую СХД отправляем на проверку; реальный лог СХД не содержит в имени файла ответа на вопрос, что это за система хранения данных.
  5. LLM2, уже зная ответ LLM1, выбирает правила для той СХД, которая у нас в архиве, вырезает кусок данных, отвечающих на вопрос, какие полки расширения и контроллеры указаны в логах. Проанализировав их, подготавливает печатную форму ответа.
  6. LLM3 аналогичным образом строит таблицу дисков.
  7. LLM4 строит таблицу дисковых групп.
  8. LLM5 строит таблицы состояний блоков питания PSU и SFP-модулей.
  9. LLM6 строит таблицы состояний батарей RAID-контроллеров BBU и вентиляторов FAN.
  10. LLM7 строит таблицу ошибок, записанных в логах СХД за последние 12 месяцев. Для построения запроса в LLM7 мы использовали 145 datasheets от производителей СХД (Dell, HPE, IBM, Huawei), поддерживаемых нашим LOGparser, и просматриваем их локальным поиском с применением технологии RAG. Мы получили таблицу из 29 686 ошибок, задокументированных производителями, сгруппировали их по вендорам и проводим поиск связанных областей по огромному файлу логов. Это позволяет быстро найти и структурировать ошибки, не повторяя вручную логику каждого отдельного производителя СХД и правила записи его логов.
  11. LLM8 строит таблицу производительности.

Далее мы собираем все 8 отчётов LLM в единую печатную форму и возвращаем пользователю в Яндекс Мессенджер.

Пример отчёта СХД EMC VNX

Все серийные номера заменены на случайные.

1) Parser metadata:
   - LLM: deepseek-r1:32b-qwen-distill-fp16
   - Timestamp (MSK): 06:50:37 02-06-2026 (MSK)

2) Hardware identification:
Vendor: EMC
Class: Storage
Model: VNX5600

TABLE: Enclosures
Enclosure          Bus  Cabinet  Serial Number   Drive Type        Current Speed  Maximum Speed
Bus 0 Enclosure 0  0    DPE9     CKM00174354353  SAS, SAS Flash 3  6Gbps          6Gbps
Bus 1 Enclosure 0  1    DAE5S    JWXEL134643654  SAS Flash 3       6Gbps          6Gbps

======================================================

TABLE: Controllers
Controller  Status   SP Identifier  Cabinet  Serial Number   Revision Number  Memory Size  Part Number
SP A        Present  A              DPE9     CF2Y6172334235  05.33.021.5.266  24576        110-201-002D-05
SP B        Present  B              DPE9     CF2Y6134543532  05.33.021.5.266  24576        110-201-002D-05

3) Component status:

TABLE: Disks
Bus  Enclosure  Disk  SerialNumber  PartNumber    Rev   State    Vendor   Product           Capacity
0    0          0     37K0A049FBSD  005052299PWR  0C07  online   TOSHIBA  AL14EL06 CLAR600  537GB
0    0          1     37J0A076FBSD  005052299PWR  0C07  Removed  TOSHIBA  AL14EL06 CLAR600  N/A
0    0          2     37J0A03TFBSD  005052299PWR  0C07  online   TOSHIBA  AL14EL06 CLAR600  537GB
0    0          3     37K0A04GBBSD  005052299PWR  0C07  online   TOSHIBA  AL14EL06 CLAR600  537GB
0    0          4     9TNA0J764352  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          5     9TNA0J764435  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          6     9TNA0J763451  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          7     9TNA0J365834  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          8     9TNA0J365986  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          9     9TNA0J764456  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          10    9TNA0J764434  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          11    9TNA0J454464  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          12    9TNA0J735483  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          13    9TNA0J367577  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          14    9TNA0J745645  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          15    9TNA0J435345  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          16    9TNA0J456456  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          17    9TNA0J456456  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          18    9TNA0J364665  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          19    9TNA0J764564  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          20    9TNA0J365822  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          21    9TNA0J345660  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          22    9TNA0J745645  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          23    9TNA0J456546  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
0    0          24    9TNA0J456456  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          0     9TNA0J567756  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          1     9TNA0J365496  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          2     9TNA0J456548  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          3     9TNA0J546765  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          4     9TNA0J376576  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          5     9TNA0J546494  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          6     9TNA0J365495  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          7     9TNA0J365491  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          8     9TNA0J465158  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          9     9TNA0J456481  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          10    9TNA0J764175  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          11    9TNA0J645953  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          12    9TNA0J456108  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          13    9TNA0J365499  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          14    9TNA0J654509  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          15    9TNA0J345504  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          16    9TNA0J764117  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          17    9TNA0J734077  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          18    9TNA0J365421  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          19    9TNA0J734063  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          20    9TNA0J365489  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          21    9TNA0J362346  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          22    9TNA0J764359  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          23    9TNA0J764111  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB
1    0          24    9TNA0J365505  005052397     EQL8  online   SAMSUNG  PA35N1T6 EMC1600  1.4TB

======================================================

TABLE: DiskGroups
Name    Pool  Tier                 Class     RAID   Disks  Total   Used    Free   UsedPercent  PercentOfPool  Status  Health
Pool 0  0     Extreme Performance  ThinPool  RAID5  35     44.1TB  36.2TB  7.9TB  82%          96.9%          READY   Normal

======================================================

TABLE: Performance
Scope  Group   Object                          Window                                      Samples  AvgLatencyMs  PeakLatencyMs  Note
LUN    RG 120  LUN 63944 (Virtual Disk_63944)  2025-12-06 12:57:05Z..2025-12-06 12:57:05Z  4        255.58        325.53         from kt_mlu max-response samples, widened to all observed samples because latest 24h window was sparse rg=120 owner=SPB default=SPA cacheR=on,cacheW=on efd=5 totalOps=5580264 totalGB=1832.47
LUN    RG 121  LUN 63960 (Virtual Disk_63960)  2025-12-06 12:57:17Z                        1        314.44        314.44         from kt_mlu max-response samples, widened to all observed samples because latest 24h window was sparse rg=121 owner=SPB default=SPA cacheR=on,cacheW=on efd=5 totalOps=25684248 totalGB=2576.69

======================================================

TABLE: PowerSupplies
location                   serial_number   part_number     power_w  health
Bus 1 Enclosure 0 Power B  AC7P41644034534  071-000-733-00  N/A      Present
Bus 1 Enclosure 0 Power A  AC7I41652345345  071-000-036-04  N/A      Faulted
Bus 0 Enclosure 0 Power B  AC7I41345543569  N/A             N/A      Present
Bus 0 Enclosure 0 Power A  AC7I41653455332  N/A             N/A      Faulted

======================================================

TABLE: SFP
location            status  part_number  serial_number
SPB IOM 9 Port 3    Online  019-078-042  AGL162434534514
SPB IOM 9 Port 2    Online  019-078-042  AGL162345345781
SPB IOM 9 Port 1    Online  019-078-042  AGL1624D5435433
SPB IOM 9 Port 0    Online  019-078-042  AGL1624D5435550
SPB IOM 7 Port 3    Online  019-078-042  AGL162353453455
SPB IOM 7 Port 2    Online  019-078-042  AGL1624D5376576
SPB IOM 7 Port 1    Online  019-078-042  AGL1624D7546453
SPB IOM 7 Port 0    Online  019-078-042  AGL1624D3453456
SPB BEM 337 Port 1  Online  038-003-810  MLE10152345345
SPB IOM 5 Port 3    Online  019-078-042  AGL1624D5346564
SPB IOM 5 Port 2    Online  019-078-042  AGL1624D3453455
SPB IOM 5 Port 1    Online  019-078-042  AGL1624D4355675
SPB IOM 5 Port 0    Online  019-078-042  AGL1624D5456456
SPA IOM 8 Port 3    Online  019-078-042  AGL1624D4564566
SPA IOM 8 Port 2    Online  019-078-042  AGL1624D4564564
SPA IOM 8 Port 1    Online  019-078-042  AGL1624D4564567
SPA IOM 8 Port 0    Online  019-078-042  AGL1624D6456457
SPA IOM 6 Port 3    Online  019-078-042  AGL1624D4564578
SPA IOM 6 Port 2    Online  019-078-042  AGL1624D5467845
SPA IOM 6 Port 1    Online  019-078-042  AGL1624D5456456
SPA IOM 6 Port 0    Online  019-078-042  AGL1624D5456456
SPA BEM 336 Port 1  Online  038-003-810  MLE10152904567
SPA IOM 4 Port 3    Online  019-078-042  AGL1624D5045645
SPA IOM 4 Port 2    Online  019-078-042  AGL1624D5054645
SPA IOM 4 Port 1    Online  019-078-042  AGL1624D5045877
SPA IOM 4 Port 0    Online  019-078-042  AGL1624D5345345

======================================================

TABLE: BBU
location                 serial_number   part_number     charge         temperature  health
Bus 0 Enclosure 0 BBU A  ACPH21345663455  078-000-132-00  Fully Charged  36 C         SPS cabling invalid
Bus 0 Enclosure 0 BBU B  ACPH21456456457  078-000-132-00  Fully Charged  33 C         SPS cabling invalid

======================================================

TABLE: Fans
location                  health
Bus 0 Enclosure 0 Fan B1  OK
Bus 0 Enclosure 0 Fan B0  OK
Bus 0 Enclosure 0 Fan A1  OK
Bus 0 Enclosure 0 Fan A0  OK

4) Errors:

TABLE: Errors
Timestamp;Severity;Component;CodeOrPhrase;Message;Source;KB
2025-11-06 16:42:51.730Z;Critical;Provider;InstanceName has no key properties;InstanceName has no key properties;EMC VNX.zip:554601;N/A
2025-11-06 16:35:13Z;Critical;Disk;drive fault;Disk in slot 0_0_1 is drive fault and needs to be replaced, serial num:37J0A027FDSD;EMC VNX.zip:32564566;N/A
2025-11-06 16:35:13Z;Critical;Disk;drive fault;Bus 0 Enclosure 0 Disk 1 taken offline. Replace the drive. SN:37J0A4567FDSD TLA:005052299PWR Rev:0C07 (0x22e0006) Reason:By PDO.;EMC VNX.zip:32564567;N/A
2025-11-06 04:55:24.383Z;Critical;Provider;registerObserver failed to find object;registerObserver() - failed to find object;EMC VNX.zip:581944;N/A
2025-11-02 00:45:24.508Z;Critical;Provider;CNaviProviderException;Reference EV_HasResumeList does not exist;EMC VNX.zip:575604;N/A
2025-11-01 01:46:36.705Z;Minor;Provider;Unsupported drive type 12;StorageCapabilityCache::getDriveTypesCapabilityID: unSupported driv;EMC VNX.zip:574115;N/A
2025-10-31 22:19:51.365Z;Critical;Provider;poll/update failed with exception;Poll/update failed with exception;EMC VNX.zip:573889;N/A

Данная реализация используется у нас для ремонта СХД наших клиентов. С помощью такого инструмента, не имея API-доступа к клиентской СХД, мы в течение 5–10 минут можем провести точный анализ причин сбоя в работе СХД и приступить к ремонту.

Мы разрабатываем и внедряем аналогичные проекты для наших клиентов. Если у вас есть данные с конвейерных линий, грузовиков, ваши информационные системы пишут логи в бесконечных объёмах, то приходите к нам: мы соберём аналогичное решение для вас, интегрируем его в вашу инфраструктуру через API и подключим ваши BI-системы.

Пишите нам: harwesterbot@itcost.ru

Made on
Tilda