Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
logparser — Um kit de ferramentas de aprendizado de máquina para análise de logs [ICSE'19, DSN'16] | Kitploit
Ferramentas/GitHubGitHub/logpai/logparser
Aprendizado de MáquinaPapers e PesquisaDetecção de AnomaliasAnálise de Logs
GitHublogpai/logparser

logparser

Um kit de ferramentas de aprendizado de máquina para análise de logs [ICSE'19, DSN'16]

Ver Repositório
2.0k579há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Logparser

Python version Pypi version Pypi version Downloads License

O Logparser fornece um kit de ferramentas de aprendizado de máquina e benchmarks para análise automatizada de logs, uma etapa crucial para a análise estruturada de logs. Ao aplicar o logparser, os usuários podem extrair automaticamente modelos de eventos de logs não estruturados e converter mensagens de log brutas em uma sequência de eventos estruturados. O processo de log parsing também é conhecido na literatura como extração de templates de mensagens, extração de chaves de log ou agrupamento de mensagens de log.


Um exemplo de log parsing

🌈 Novas atualizações

  • Desde o primeiro lançamento do logparser, muitos PRs e issues foram submetidos devido à incompatibilidade com o Python 3. Por fim, atualizamos o logparser v1.0.0 com suporte ao Python 3. Obrigado por todas as contribuições (#PR86, #PR85, #PR83, #PR80, #PR65, #PR57, #PR53, #PR52, #PR51, #PR49, #PR18, #PR22)!
  • Construímos o pacote wheel logparser3 e o publicamos no pypi. Por favor, instale via pip install logparser3.
  • Refatoramos a estrutura do código e embelezamos o código usando o formatador de código Python black.

Parsers de log disponíveis:

💡 Fique à vontade para enviar um PR para adicionar o código do seu parser ao logparser e incluir seu artigo na tabela.

Instalação

Recomendamos instalar o pacote logparser e as dependências via pip install.``` pip install logparser3

root@kitploit:~
Em particular, o pacote depende dos seguintes requisitos. Observe que a correspondência de regex em Python é frágil, por isso recomendamos fixar a biblioteca regex na versão 2022.3.2.

Nota: Se você encontrar ``"Error: need to escape..."``, siga as instruções [aqui](https://github.com/logpai/logparser/issues/122).

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

Requisitos condicionais:

+ Se usar MoLFI: `deap`
+ Se usar SHISO: `nltk`
+ Se usar SLCT: `gcc`
+ Se usar LogCluster: `perl`
+ Se usar NuLog: `torch`, `torchvision`, `keras_preprocessing`
+ Se usar DivLog: `openai`, `tiktoken` (requer python 3.8+)

### Primeiros passos

1. Execute a demonstração:

    Para cada parser de logs, fornecemos uma demonstração para ajudar você a começar. Cada demonstração mostra o uso básico de um parser de logs específico e os hiperparâmetros a configurar. Por exemplo, o comando a seguir mostra como executar a demonstração para o Drain.

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

2. Execute o benchmark:

    Para cada parser de logs, fornecemos um script de benchmark para executar o parsing de logs nos [conjuntos de dados loghub_2k](https://github.com/logpai/logparser/tree/main/data#loghub_2k) para avaliar a precisão do parsing. Você também pode usar [outros conjuntos de dados de benchmark para parsing de logs](https://github.com/logpai/logparser/tree/main/data#datasets).

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

    Os resultados do benchmark podem ser encontrados no arquivo readme de cada parser, por exemplo, https://github.com/logpai/logparser/tree/main/logparser/Drain#benchmark.

3. Faça o parsing dos seus próprios logs:

    É fácil aplicar o logparser para fazer o parsing dos seus próprios dados de log. Para isso, você precisa instalar o pacote logparser3 primeiro. Depois, você pode desenvolver seu próprio script seguindo o trecho de código abaixo para iniciar o parsing de logs. Veja o código de exemplo completo em [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)
    ```

    Após executar o logparser, você pode obter os templates de eventos extraídos e os logs estruturados analisados na pasta de saída.

    + `*_templates.csv` (Veja o exemplo [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` (Veja o exemplo [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']   |

### Uso em produção

O principal objetivo do logparser é o uso em pesquisa e benchmark. Pesquisadores podem usar o logparser como base de código para desenvolver novos parsers de logs, enquanto profissionais podem avaliar o desempenho e a escalabilidade dos métodos atuais de parsing de logs por meio de nossos benchmarks. Recomendamos fortemente que os profissionais experimentem o logparser em seu ambiente de produção. Mas esteja ciente de que a implementação atual do logparser está longe de estar pronta para uso em produção. Embora atualmente não tenhamos planos para isso, temos algumas sugestões para desenvolvedores que queiram construir um parser de logs inteligente em nível de produção.

+ Esteja ciente das [licenças de bibliotecas de terceiros](https://github.com/logpai/logparser/blob/main/LICENSE.md) usadas no logparser. Sugerimos manter um parser e excluir os demais e, em seguida, reconstruir a wheel do pacote. Isso não quebraria o uso do logparser.
+ Aprimore o logparser com eficiência e escalabilidade usando multiprocessamento, adicione recuperação de falhas, adicione persistência em disco ou na fila de mensagens Kafka.
+ O [Drain3](https://github.com/logpai/Drain3) fornece um bom exemplo de referência, construído com [melhorias práticas](https://github.com/logpai/Drain3#new-features) para cenários de produção.

### 🔥 Citação

Se você usar nossas ferramentas logparser ou resultados de benchmark em sua publicação, cite os seguintes artigos.

+ [**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.

### 🤗 Contribuidores

<!-- 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 -->

### Discussão

Bem-vindo(a) a participar do nosso grupo WeChat para qualquer pergunta ou discussão. Alternativamente, você pode [abrir uma issue aqui](https://github.com/logpai/logparser/issues/new).

![Scan QR code](https://assets.kitploit.com/production/public/readmes/51023/e24368b6c3ac236c9d073056856dc551521ef5ae785e34bdd33a6f49ef39f858/fdfe0ff4a0fd0c03d5d5bbcdec2e2922c75537e138f44fc105292f1f8fa90ea8-display-v1.webp)
Baixar ferramenta
PublicaçãoParserTítulo do ArtigoBenchmark
IPOM'03SLCTUm Algoritmo de Agrupamento de Dados para Mineração de Padrões em Logs de Eventos, por Risto Vaarandi.↗️
QSIC'08AELAbstraindo Logs de Execução para Eventos de Execução em Aplicações Empresariais, por Zhen Ming Jiang, Ahmed E. Hassan, Parminder Flora, Gilbert Hamann.↗️
KDD'09IPLoMAgrupamento de Logs de Eventos Usando Particionamento Iterativo, por Adetokunbo Makanju, A. Nur Zincir-Heywood, Evangelos E. Milios.↗️
ICDM'09LKEDetecção de Anomalias de Execução em Sistemas Distribuídos por meio da Análise de Logs Não Estruturados, por Qiang Fu, Jian-Guang Lou, Yi Wang, Jiang Li. [Microsoft]↗️
MSR'10LFAAbstraindo Linhas de Log em Tipos de Eventos de Log para Mineração de Logs de Sistemas de Software, por Meiyappan Nagappan, Mladen A. Vouk.↗️
CIKM'11LogSigLogSig: Gerando Eventos de Sistema a partir de Logs Textuais Brutos, por Liang Tang, Tao Li, Chang-Shing Perng.↗️
SCC'13SHISOMineração Incremental do Formato de Logs de Sistema, por Masayoshi Mizutani.↗️
CNSM'15LogClusterLogCluster - Um Algoritmo de Agrupamento de Dados e Mineração de Padrões para Logs de Eventos, por Risto Vaarandi, Mauno Pihelgas.↗️
CNSM'15LenMaO Comprimento Importa: Agrupando Mensagens de Log do Sistema usando o Comprimento das Palavras, por Keiichi Shima.↗️
CIKM'16LogMineLogMine: Reconhecimento Rápido de Padrões para Análise de Logs, por Hossein Hamooni, Biplob Debnath, Jianwu Xu, Hui Zhang, Geoff Jiang, Adbullah Mueen. [NEC]↗️
ICDM'16SpellSpell: Parsing em Fluxo de Logs de Eventos do Sistema, por Min Du, Feifei Li.↗️
ICWS'17DrainDrain: Uma Abordagem de Log Parsing Online com Árvore de Profundidade Fixa, por Pinjia He, Jieming Zhu, Zibin Zheng e Michael R. Lyu.↗️
ICPC'18MoLFIUma Abordagem Baseada em Busca para a Identificação Precisa de Formatos de Mensagens de Log, por Salma Messaoudi, Annibale Panichella, Domenico Bianculli, Lionel Briand, Raimondas Sasnauskas.↗️
TSE'20LogramLogram: Log Parsing Eficiente Usando Dicionários de n-Gramas, por Hetong Dai, Heng Li, Che-Shao Chen, Weiyi Shang e Tse-Hsun (Peter) Chen.↗️
ECML-PKDD'20NuLogLog Parsing Autossupervisionado, por Sasho Nedelkoski, Jasmin Bogatinovski, Alexander Acker, Jorge Cardoso, Odej Kao.↗️
ICSME'22ULPUma Abordagem Eficaz para Analisar Grandes Arquivos de Log, por Issam Sedki, Abdelwahab Hamou-Lhadj, Otmane Ait-Mohamed, Mohammed A. Shehab.↗️
TSC'23BrainBrain: Log Parsing com Árvore Paralela Bidirecional, por Siyu Yu, Pinjia He, Ningjiang Chen, Yifan Wu.↗️
ICSE'24DivLogDivLog: Log Parsing com Aprendizado em Contexto Aprimorado por Prompts, por Junjielong Xu, Ruichun Yang, Yintong Huo, Chengyu Zhang e Pinjia He.↗️