Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
logparser — Инструментарий машинного обучения для парсинга логов [ICSE'19, DSN'16] | Kitploit
Инструменты/GitHubGitHub/logpai/logparser
Машинное ОбучениеСтатьи и ИсследованияОбнаружение АномалийАнализ Журналов
GitHublogpai/logparser

logparser

Инструментарий машинного обучения для парсинга логов [ICSE'19, DSN'16]

Репозиторий
2.0k5791 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Logparser

Python version Pypi version Pypi version Downloads License

Logparser предоставляет набор инструментов машинного обучения и бенчмарки для автоматического разбора логов, что является важнейшим шагом для структурированного анализа логов. С помощью logparser пользователи могут автоматически извлекать шаблоны событий из неструктурированных логов и преобразовывать исходные лог-сообщения в последовательность структурированных событий. Процесс разбора логов также известен в литературе как извлечение шаблонов сообщений, извлечение ключей логов или кластеризация лог-сообщений.


Пример разбора логов

🌈 Новые обновления

  • С момента первого выпуска logparser было отправлено множество PR и issue-запросов из-за несовместимости с Python 3. Наконец, мы обновляем logparser до версии v1.0.0 с поддержкой Python 3. Спасибо всем за вклад (#PR86, #PR85, #PR83, #PR80, #PR65, #PR57, #PR53, #PR52, #PR51, #PR49, #PR18, #PR22)!
  • Мы собрали пакет wheel logparser3 и опубликовали его на PyPI. Пожалуйста, установите его с помощью pip install logparser3.
  • Мы рефакторили структуру кода и привели его в порядок с помощью Python-форматтера кода black.

Доступные парсеры логов:

💡 Приглашаем отправлять PR, чтобы добавить ваш парсер в logparser и включить вашу статью в таблицу.

Установка

Рекомендуем устанавливать пакет logparser и зависимости с помощью pip install.``` pip install logparser3

root@kitploit:~
В частности, пакет зависит от следующих требований. Обратите внимание, что сопоставление с регулярными выражениями в Python нестабильно, поэтому мы рекомендуем зафиксировать версию библиотеки regex на 2022.3.2.

Примечание: Если вы столкнулись с ``"Error: need to escape..."``, следуйте инструкциям [здесь](https://github.com/logpai/logparser/issues/122).

+ python 3.6+
+ regex 2022.3.2
+ numpy
+ pandas
+ scipy
+ scikit-learn

Условные требования:

+ Если используется MoLFI: `deap`
+ Если используется SHISO: `nltk`
+ Если используется SLCT: `gcc`
+ Если используется LogCluster: `perl`
+ Если используется NuLog: `torch`, `torchvision`, `keras_preprocessing`
+ Если используется DivLog: `openai`, `tiktoken` (требуется python 3.8+)

### Начало работы

1. Запустите демо:

    Для каждого парсера логов мы предоставляем демо, которое поможет вам начать работу. Каждое демо показывает базовое использование целевого парсера логов и настраиваемые гиперпараметры. Например, следующая команда показывает, как запустить демо для Drain.

    ```
    cd logparser/Drain
    python demo.py
    ```

2. Запустите бенчмарк:
  
    Для каждого парсера логов мы предоставляем скрипт бенчмарка для выполнения разбора логов на наборах данных [loghub_2k](https://github.com/logpai/logparser/tree/main/data#loghub_2k) с целью оценки точности разбора. Вы также можете использовать [другие бенчмарк-наборы данных для разбора логов](https://github.com/logpai/logparser/tree/main/data#datasets).

    ```
    cd logparser/Drain 
    python benchmark.py
    ```

    Результаты бенчмарка можно найти в файле readme каждого парсера, например, https://github.com/logpai/logparser/tree/main/logparser/Drain#benchmark.

3. Разбирайте собственные логи:

    Logparser легко применить для разбора ваших собственных логов. Для этого сначала необходимо установить пакет logparser3. Затем вы можете написать собственный скрипт, используя приведённый ниже фрагмент кода, чтобы начать разбор логов. Полный пример кода см. в [example/parse_your_own_logs.py](https://github.com/logpai/logparser/blob/main/example/parse_your_own_logs.py).

    ```python
    from logparser.Drain import LogParser

    input_dir = 'PATH_TO_LOGS/' # The input directory of log file
    output_dir = 'result/'  # The output directory of parsing results
    log_file = 'unknow.log'  # The input log file name
    log_format = '<Date> <Time> <Level>:<Content>' # Define log format to split message fields
    # Regular expression list for optional preprocessing (default: [])
    regex = [
        r'(/|)([0-9]+\.){3}[0-9]+(:[0-9]+|)(:|)' # IP
    ]
    st = 0.5  # Similarity threshold
    depth = 4  # Depth of all leaf nodes

    parser = LogParser(log_format, indir=input_dir, outdir=output_dir,  depth=depth, st=st, rex=regex)
    parser.parse(log_file)
    ```

    После запуска logparser вы получите извлечённые шаблоны событий и разобранные структурированные логи в выходной папке.

    + `*_templates.csv` (См. пример [HDFS_2k.log_templates.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_templates.csv))
    
        | EventId  | EventTemplate                                  | Occurrences |
        |----------|------------------------------------------------|-------------|
        | dc2c74b7 | PacketResponder <*> for block <*> terminating                                    | 311 |
        | e3df2680 | Received block <*> of size <*> from <*>                                          | 292 |
        | 09a53393 | Receiving block <*> src: <*> dest: <*>                                           | 292 |

    + `*_structured.csv` (См. пример [HDFS_2k.log_structured.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_structured.csv))
    
        | ... | Level | Content                                                                                       | EventId  | EventTemplate                                                       | ParameterList                              |
        |-----|-------|-----------------------------------------------------------------------------------------------|----------|---------------------------------------------------------------------|--------------------------------------------|
        | ... | INFO  | PacketResponder 1 for block blk_38865049064139660 terminating | dc2c74b7 | PacketResponder <*> for block <*> terminating | ['1', 'blk_38865049064139660'] |
        | ... | INFO  | Received block blk_3587508140051953248 of size 67108864 from /10.251.42.84                              | e3df2680 | Received block <*> of size <*> from <*>  | ['blk_3587508140051953248', '67108864', '/10.251.42.84']                                     |
        | ... | INFO  | Verification succeeded for blk_-4980916519894289629    | 32777b38 | Verification succeeded for <*> |  ['blk_-4980916519894289629']   |


### Использование в производственной среде
Основная цель logparser — использование в исследовательских и бенчмарк-целях. Исследователи могут использовать logparser как кодовую базу для разработки новых парсеров логов, а практики — оценить производительность и масштабируемость существующих методов разбора логов с помощью нашего бенчмарка. Мы настоятельно рекомендуем практикам попробовать logparser в вашей производственной среде. Но имейте в виду, что текущая реализация logparser далека от готовности к промышленному использованию. Хотя сейчас у нас нет планов по этому поводу, у нас есть несколько предложений для разработчиков, которые хотят создать интеллектуальный парсер логов производственного уровня.

+ Обратите внимание на [лицензии сторонних библиотек](https://github.com/logpai/logparser/blob/main/LICENSE.md), используемых в logparser. Мы предлагаем оставить один парсер, удалить остальные и затем пересобрать wheel-пакет. Это не нарушит работу logparser.
+ Улучшите logparser с точки зрения эффективности и масштабируемости с помощью многопроцессорности, добавьте восстановление после сбоев, добавьте сохранение на диск или в очередь сообщений Kafka.
+ [Drain3](https://github.com/logpai/Drain3) — хороший пример для ознакомления, построенный с [практическими улучшениями](https://github.com/logpai/Drain3#new-features) для производственных сценариев.

### 🔥 Цитирование
Если вы используете наши инструменты logparser или результаты бенчмарков в своей публикации, пожалуйста, цитируйте следующие статьи.

+ [**ICSE'19**] Jieming Zhu, Shilin He, Jinyang Liu, Pinjia He, Qi Xie, Zibin Zheng, Michael R. Lyu. [Tools and Benchmarks for Automated Log Parsing](https://arxiv.org/pdf/1811.03509.pdf). *International Conference on Software Engineering (ICSE)*, 2019.
+ [**DSN'16**] Pinjia He, Jieming Zhu, Shilin He, Jian Li, Michael R. Lyu. [An Evaluation Study on Log Parsing and Its Use in Log Mining](https://jiemingzhu.github.io/pub/pjhe_dsn2016.pdf). *IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)*, 2016.


### 🤗 Участники

<!-- readme: zhujiem,contributors -start -->
<table>
	<tbody>
		<tr>
            <td align="center">
                <a href="https://github.com/zhujiem">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/471767126e4450e42b40b8e3f5437c2d9d0616f468675dde6feccac1976b18d0/ee334336551226b1483445bee71089fdf5e61115652a2a99375e54566f34c9bf-display-v1.webp" width="80;" alt="zhujiem"/>
                    <br />
                    <sub><b>Zhujiem</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/PinjiaHe">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/e9f83f96ab3d84e92152317c8d85d54a12fb0b0baea267d29e7d317a5caff94b/5b4a6af1bda6245edbb5c40ea1467625828536aeb88e984716753945b6235da2-display-v1.webp" width="80;" alt="PinjiaHe"/>
                    <br />
                    <sub><b>Pinjia He</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/JinYang88">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/7785c7974d5753fa21792097907be1e20efb5fc5bbf3aba61b0b4d2f4fe26fec/19a47a39c4db07a8a052ed05304e166cca4cf18683d89a1400688c576ae48b52-display-v1.webp" width="80;" alt="JinYang88"/>
                    <br />
                    <sub><b>LIU, Jinyang</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/Siyuexi">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/fe7de7203a407b36e2f44a57603594e01266d124ef558b53cb95ba28afc6127c/f7a7173a142ced37b910b650e3ad957b27fcf2f13f4c828ff6a72fb87111435f-display-v1.webp" width="80;" alt="Siyuexi"/>
                    <br />
                    <sub><b>Junjielong Xu</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/ShilinHe">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/c8b37cadfeb622c955b807776ab0fa19f058c8ad512ebb22eb98c79ad5e90c17/fc476296c1b1aa6b1dd7c3220a81a1b70838d5c113a65e6b2f98196d0615b8a3-display-v1.webp" width="80;" alt="ShilinHe"/>
                    <br />
                    <sub><b>Shilin HE</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/JosephMeghanathD">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/c2036c74a3116c7de955cae32687ffae61d8be46868cbcc61f771a7e9be4fa33/011ea30ec30f0db362d75632b310850b2783bd2c2428dfee7dc0fff182dc1bf8-display-v1.webp" width="80;" alt="JosephMeghanathD"/>
                    <br />
                    <sub><b>Joseph</b></sub>
                </a>
            </td>
		</tr>
		<tr>
            <td align="center">
                <a href="https://github.com/jcordon5">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/a4f67dd9f820a1dc763ae05e6d66ec6418d7e70abad8a9b5906413ab909f709e/4c8dc9fc08525d6d3c2334983160c0c9a48077fcc22b3498fe658aa133a2da02-display-v1.webp" width="80;" alt="jcordon5"/>
                    <br />
                    <sub><b>José A. Cordón </b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/rustamtemirov">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/3690f9e2cd318e8555a586fb32e221080e59e5de8917d82584da1f69e00be8cc/95300504879ab023f96e1cd73ca726c6720367b23e0d476e9a0b6cc23b89ff4d-display-v1.webp" width="80;" alt="rustamtemirov"/>
                    <br />
                    <sub><b>Rustam Temirov</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/gaiusyu">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/68c5eeea49f8a2ee2cd39b633ed1fb9765cde38399b12636dea0a3dd0920c86d/8faa00619c5b17d96e80dff1b124695997ece681c0931519346fa0e62407c578-display-v1.webp" width="80;" alt="gaiusyu"/>
                    <br />
                    <sub><b>Siyu Yu (Youth Yu)</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/thomasryck">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/ad3710fbbe7106ffe560fe918f87e77a95a6bf7a21dbf65827f93138c96aca5a/ed736bf9ffd9aa54686cc7a3d404f7c0072ecaced2403ff467d112482255c2b3-display-v1.webp" width="80;" alt="thomasryck"/>
                    <br />
                    <sub><b>Thomas Ryckeboer</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/IsuruBoyagane15">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/dca9ea34301dd9441404246eb535a39d034518fd1311bebd68f1725bc38ba6b3/57b77cdaafca63553a32d53d83f1859d971c1628ef640c36ab1125939bb43a00-display-v1.webp" width="80;" alt="IsuruBoyagane15"/>
                    <br />
                    <sub><b>Isuru Boyagane</b></sub>
                </a>
            </td>
		</tr>
	<tbody>
</table>
<!-- readme: zhujiem,contributors -end -->

### Обсуждение
Приглашаем вас присоединиться к нашей группе в WeChat для любых вопросов и обсуждений. Кроме того, вы можете [открыть issue здесь](https://github.com/logpai/logparser/issues/new).

![Отсканируйте QR-код](https://assets.kitploit.com/production/public/readmes/51023/e24368b6c3ac236c9d073056856dc551521ef5ae785e34bdd33a6f49ef39f858/fdfe0ff4a0fd0c03d5d5bbcdec2e2922c75537e138f44fc105292f1f8fa90ea8-display-v1.webp)
Скачать инструмент
ПубликацияПарсерНазвание статьиБенчмарк
IPOM'03SLCTАлгоритм кластеризации данных для поиска закономерностей в журналах событий, автор: Risto Vaarandi.↗️
QSIC'08AELАбстрагирование журналов выполнения до событий выполнения для корпоративных приложений, автор: Zhen Ming Jiang, Ahmed E. Hassan, Parminder Flora, Gilbert Hamann.↗️
KDD'09IPLoMКластеризация журналов событий с использованием итеративного разбиения, автор: Adetokunbo Makanju, A. Nur Zincir-Heywood, Evangelos E. Milios.↗️
ICDM'09LKEОбнаружение аномалий выполнения в распределённых системах с помощью анализа неструктурированных журналов, автор: Qiang Fu, Jian-Guang Lou, Yi Wang, Jiang Li. [Microsoft]↗️
MSR'10LFAАбстрагирование строк журналов до типов событий журнала для анализа журналов программных систем, автор: Meiyappan Nagappan, Mladen A. Vouk.↗️
CIKM'11LogSigLogSig: генерация системных событий из необработанных текстовых журналов, автор: Liang Tang, Tao Li, Chang-Shing Perng.↗️
SCC'13SHISOИнкрементальное извлечение формата системных журналов, автор: Masayoshi Mizutani.↗️
CNSM'15LogClusterLogCluster - алгоритм кластеризации данных и поиска закономерностей для журналов событий, автор: Risto Vaarandi, Mauno Pihelgas.↗️
CNSM'15LenMaLength Matters: кластеризация системных лог-сообщений по длине слов, автор: Keiichi Shima.↗️
CIKM'16LogMineLogMine: быстрый поиск закономерностей для анализа журналов, автор: Hossein Hamooni, Biplob Debnath, Jianwu Xu, Hui Zhang, Geoff Jiang, Adbullah Mueen. [NEC]↗️
ICDM'16SpellSpell: потоковый разбор системных журналов событий, автор: Min Du, Feifei Li.↗️
ICWS'17DrainDrain: онлайн-подход к разбору журналов с использованием дерева фиксированной глубины, автор: Pinjia He, Jieming Zhu, Zibin Zheng и Michael R. Lyu.↗️
ICPC'18MoLFIПодход на основе поиска для точного определения форматов лог-сообщений, автор: Salma Messaoudi, Annibale Panichella, Domenico Bianculli, Lionel Briand, Raimondas Sasnauskas.↗️
TSE'20LogramLogram: эффективный разбор журналов с использованием n-граммных словарей, автор: Hetong Dai, Heng Li, Che-Shao Chen, Weiyi Shang и Tse-Hsun (Peter) Chen.↗️
ECML-PKDD'20NuLogСамоконтролируемый разбор журналов, автор: Sasho Nedelkoski, Jasmin Bogatinovski, Alexander Acker, Jorge Cardoso, Odej Kao.↗️
ICSME'22ULPЭффективный подход к разбору больших файлов журналов, автор: Issam Sedki, Abdelwahab Hamou-Lhadj, Otmane Ait-Mohamed, Mohammed A. Shehab.↗️
TSC'23BrainBrain: разбор журналов с помощью двунаправленного параллельного дерева, автор: Siyu Yu, Pinjia He, Ningjiang Chen, Yifan Wu.↗️
ICSE'24DivLogDivLog: разбор журналов с улучшенным обучением в контексте на основе подсказок, автор: Junjielong Xu, Ruichun Yang, Yintong Huo, Chengyu Zhang и Pinjia He.↗️